From b6c589a529bc8c5720477494696c6f69fe457475 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Wed, 15 May 2013 14:39:52 +0200 Subject: updated for version 7.3.947 Problem: Python: No iterator for vim.list and vim.bufferlist. Solution: Add the iterators. Also fix name of FunctionType. Add tests for vim.buffers. (ZyX) --- src/testdir/test86.in | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) (limited to 'src/testdir/test86.in') diff --git a/src/testdir/test86.in b/src/testdir/test86.in index 555a5fdf5d..5b87633a75 100644 --- a/src/testdir/test86.in +++ b/src/testdir/test86.in @@ -477,6 +477,9 @@ EOF : call RecVars(oname) :endfor :only +:for buf in g:bufs[1:] +: execute 'bwipeout!' buf +:endfor :" :" Test buffer object :vnew @@ -519,6 +522,62 @@ for expr in ('b[1]','b[:] = ["A", "B"]','b[:]','b.append("abc")'): # Should not happen in any case cb.append('No exception for ' + expr) EOF +:" +:" Test vim.buffers object +:set hidden +:edit a +:buffer # +:edit b +:buffer # +:edit c +:buffer # +py << EOF +# Check GCing iterator that was not fully exhausted +i = iter(vim.buffers) +cb.append('i:' + str(next(i))) +# and also check creating more then one iterator at a time +i2 = iter(vim.buffers) +cb.append('i2:' + str(next(i2))) +cb.append('i:' + str(next(i))) +# The following should trigger GC and not cause any problems +del i +del i2 +i3 = iter(vim.buffers) +cb.append('i3:' + str(next(i3))) +del i3 + +prevnum = 0 +for b in vim.buffers: + # Check buffer order + if prevnum >= b.number: + cb.append('!!! Buffer numbers not in strictly ascending order') + # Check indexing: vim.buffers[number].number == number + cb.append(str(b.number) + ':' + repr(vim.buffers[b.number]) + '=' + repr(b)) + prevnum = b.number + +cb.append(str(len(vim.buffers))) + +bnums = list(map(lambda b: b.number, vim.buffers))[1:] + +# Test wiping out buffer with existing iterator +i4 = iter(vim.buffers) +cb.append('i4:' + str(next(i4))) +vim.command('bwipeout! ' + str(bnums.pop(0))) +try: + next(i4) +except vim.error: + pass +else: + cb.append('!!!! No vim.error') +i4 = iter(vim.buffers) +vim.command('bwipeout! ' + str(bnums.pop(-1))) +vim.command('bwipeout! ' + str(bnums.pop(-1))) +cb.append('i4:' + str(next(i4))) +try: + next(i4) +except StopIteration: + cb.append('StopIteration') +EOF :endfun :" :call Test() -- cgit v1.2.3