[vim] - patchlevel 1066

Karsten Hopp karsten at fedoraproject.org
Tue Jun 4 10:12:40 UTC 2013


commit 7160125927c49d0faf0c8eafc23254f390ff73aa
Author: Karsten Hopp <karsten at redhat.com>
Date:   Tue Jun 4 12:06:33 2013 +0200

    - patchlevel 1066

 7.3.1066 | 1979 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 1979 insertions(+), 0 deletions(-)
---
diff --git a/7.3.1066 b/7.3.1066
new file mode 100644
index 0000000..8bb89b5
--- /dev/null
+++ b/7.3.1066
@@ -0,0 +1,1979 @@
+To: vim_dev at googlegroups.com
+Subject: Patch 7.3.1066
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.1066
+Problem:    Python: Insufficient exception and error testing.
+Solution:   Python patch 25. (ZyX)
+Files:	    src/testdir/test86.in, src/testdir/test86.ok,
+	    src/testdir/test87.in, src/testdir/test87.ok
+
+
+*** ../vim-7.3.1065/src/testdir/test86.in	2013-05-30 13:14:06.000000000 +0200
+--- src/testdir/test86.in	2013-05-30 13:25:22.000000000 +0200
+***************
+*** 7,12 ****
+--- 7,13 ----
+  
+  STARTTEST
+  :so small.vim
++ :set encoding=latin1
+  :if !has('python') | e! test.ok | wq! test.out | endif
+  :lang C
+  :py import vim
+***************
+*** 785,800 ****
+  :$put =string(pyeval('dl2'))
+  :$put =string(pyeval('df(2)'))
+  :"
+! :" Test exceptions
+! :fun Exe(e)
+! :   execute a:e
+  :endfun
+  py << EOF
+  def ee(expr, g=globals(), l=locals()):
+      try:
+          exec(expr, g, l)
+      except:
+!         cb.append(repr(sys.exc_info()[:2]))
+  Exe = vim.bindeval('function("Exe")')
+  ee('vim.command("throw \'abc\'")')
+  ee('Exe("throw \'def\'")')
+--- 786,1062 ----
+  :$put =string(pyeval('dl2'))
+  :$put =string(pyeval('df(2)'))
+  :"
+! :" Test errors
+! :fun F() dict
+! :endfun
+! :fun D()
+  :endfun
+  py << EOF
+  def ee(expr, g=globals(), l=locals()):
+      try:
+          exec(expr, g, l)
+      except:
+!         cb.append(expr + ':' + repr(sys.exc_info()[:2]))
+!     else:
+!         cb.append(expr + ':NOT FAILED')
+! d = vim.Dictionary()
+! ned = vim.Dictionary(foo='bar', baz='abc')
+! dl = vim.Dictionary(a=1)
+! dl.locked = True
+! l = vim.List()
+! ll = vim.List('abc')
+! ll.locked = True
+! f = vim.Function('string')
+! fd = vim.Function('F')
+! fdel = vim.Function('D')
+! vim.command('delfunction D')
+! 
+! def subexpr_test(expr, name, subexprs):
+!     cb.append('>>> Testing %s using %s' % (name, expr))
+!     for subexpr in subexprs:
+!         ee(expr % subexpr)
+!     cb.append('<<< Finished')
+! 
+! def stringtochars_test(expr):
+!     return subexpr_test(expr, 'StringToChars', (
+!         '1',       # Fail type checks
+!         'u"\\0"',  # Fail PyString_AsStringAndSize(bytes, , NULL) check
+!         '"\\0"',   # Fail PyString_AsStringAndSize(object, , NULL) check
+!     ))
+! 
+! class Mapping(object):
+!     def __init__(self, d):
+!         self.d = d
+! 
+!     def __getitem__(self, key):
+!         return self.d[key]
+! 
+!     def keys(self):
+!         return self.d.keys()
+! 
+!     def items(self):
+!         return self.d.items()
+! 
+! def convertfrompyobject_test(expr, recurse=True):
+!     # pydict_to_tv
+!     stringtochars_test(expr % '{%s : 1}')
+!     if recurse:
+!         convertfrompyobject_test(expr % '{"abc" : %s}', False)
+!     # pymap_to_tv
+!     stringtochars_test(expr % 'Mapping({%s : 1})')
+!     if recurse:
+!         convertfrompyobject_test(expr % 'Mapping({"abc" : %s})', False)
+!     # pyseq_to_tv
+!     iter_test(expr)
+!     return subexpr_test(expr, 'ConvertFromPyObject', (
+!         'None',                 # Not conversible
+!         '{"": 1}',              # Empty key not allowed
+!         'FailingMapping()',     #
+!         'FailingMappingKey()',  #
+!     ))
+! 
+! def convertfrompymapping_test(expr):
+!     convertfrompyobject_test(expr)
+!     return subexpr_test(expr, 'ConvertFromPyMapping', (
+!         '[]',
+!     ))
+! 
+! def iter_test(expr):
+!     return subexpr_test(expr, '*Iter*', (
+!         'FailingIter()',
+!         'FailingIterNext()',
+!     ))
+! 
+! class FailingTrue(object):
+!     def __nonzero__(self):
+!         raise NotImplementedError
+! 
+! class FailingIter(object):
+!     def __iter__(self):
+!         raise NotImplementedError
+! 
+! class FailingIterNext(object):
+!     def __iter__(self):
+!         return self
+! 
+!     def next(self):
+!         raise NotImplementedError
+! 
+! class FailingMappingKey(object):
+!     def __getitem__(self, item):
+!         raise NotImplementedError
+! 
+!     def keys(self):
+!         return list("abc")
+! 
+! class FailingMapping(object):
+!     def __getitem__(self):
+!         raise NotImplementedError
+! 
+!     def keys(self):
+!         raise NotImplementedError
+! 
+! class FailingList(list):
+!     def __getitem__(self, idx):
+!         if i == 2:
+!             raise NotImplementedError
+!         else:
+!             return super(FailingList, self).__getitem__(idx)
+! 
+! cb.append("> Output")
+! cb.append(">> OutputSetattr")
+! ee('del sys.stdout.softspace')
+! ee('sys.stdout.softspace = []')
+! ee('sys.stdout.attr = None')
+! cb.append(">> OutputWrite")
+! ee('sys.stdout.write(None)')
+! cb.append(">> OutputWriteLines")
+! ee('sys.stdout.writelines(None)')
+! ee('sys.stdout.writelines([1])')
+! iter_test('sys.stdout.writelines(%s)')
+! cb.append("> VimCommand")
+! ee('vim.command(1)')
+! #! Not checked: vim->python exceptions translating: checked later
+! cb.append("> VimToPython")
+! #! Not checked: everything: needs errors in internal python functions
+! cb.append("> VimEval")
+! ee('vim.eval(1)')
+! #! Not checked: everything: needs errors in internal python functions
+! cb.append("> VimEvalPy")
+! ee('vim.bindeval(1)')
+! #! Not checked: vim->python exceptions translating: checked later
+! cb.append("> VimStrwidth")
+! ee('vim.strwidth(1)')
+! cb.append("> Dictionary")
+! cb.append(">> DictionaryConstructor")
+! ee('vim.Dictionary("abc")')
+! ##! Not checked: py_dict_alloc failure
+! cb.append(">> DictionarySetattr")
+! ee('del d.locked')
+! ee('d.locked = FailingTrue()')
+! ee('vim.vvars.locked = False')
+! ee('d.scope = True')
+! ee('d.xxx = True')
+! cb.append(">> _DictionaryItem")
+! ee('d.get("a", 2, 3)')
+! stringtochars_test('d.get(%s)')
+! ee('d.pop("a")')
+! ee('dl.pop("a")')
+! cb.append(">> DictionaryIterNext")
+! ee('for i in ned: ned["a"] = 1')
+! cb.append(">> DictionaryAssItem")
+! ee('dl["b"] = 1')
+! stringtochars_test('d[%s] = 1')
+! convertfrompyobject_test('d["a"] = %s')
+! cb.append(">> DictionaryUpdate")
+! cb.append(">>> kwargs")
+! cb.append(">>> iter")
+! ee('d.update(FailingMapping())')
+! ee('d.update([FailingIterNext()])')
+! iter_test('d.update(%s)')
+! convertfrompyobject_test('d.update(%s)')
+! stringtochars_test('d.update(((%s, 0),))')
+! convertfrompyobject_test('d.update((("a", %s),))')
+! cb.append(">> DictionaryPopItem")
+! ee('d.popitem(1, 2)')
+! cb.append(">> DictionaryHasKey")
+! ee('d.has_key()')
+! cb.append("> List")
+! cb.append(">> ListConstructor")
+! ee('vim.List(1, 2)')
+! ee('vim.List(a=1)')
+! iter_test('vim.List(%s)')
+! convertfrompyobject_test('vim.List([%s])')
+! cb.append(">> ListItem")
+! ee('l[1000]')
+! cb.append(">> ListAssItem")
+! ee('ll[1] = 2')
+! ee('l[1000] = 3')
+! cb.append(">> ListAssSlice")
+! ee('ll[1:100] = "abc"')
+! iter_test('l[:] = %s')
+! convertfrompyobject_test('l[:] = [%s]')
+! cb.append(">> ListConcatInPlace")
+! iter_test('l.extend(%s)')
+! convertfrompyobject_test('l.extend([%s])')
+! cb.append(">> ListSetattr")
+! ee('del l.locked')
+! ee('l.locked = FailingTrue()')
+! ee('l.xxx = True')
+! cb.append("> Function")
+! cb.append(">> FunctionConstructor")
+! ee('vim.Function("123")')
+! ee('vim.Function("xxx_non_existent_function_xxx")')
+! ee('vim.Function("xxx#non#existent#function#xxx")')
+! cb.append(">> FunctionCall")
+! convertfrompyobject_test('f(%s)')
+! convertfrompymapping_test('fd(self=%s)')
+! cb.append("> TabPage")
+! cb.append(">> TabPageAttr")
+! ee('vim.current.tabpage.xxx')
+! cb.append("> TabList")
+! cb.append(">> TabListItem")
+! ee('vim.tabpages[1000]')
+! cb.append("> Window")
+! cb.append(">> WindowAttr")
+! ee('vim.current.window.xxx')
+! cb.append(">> WindowSetattr")
+! ee('vim.current.window.buffer = 0')
+! ee('vim.current.window.cursor = (10000000000, 100000000)')
+! ee('vim.current.window.cursor = True')
+! ee('vim.current.window.height = "abc"')
+! ee('vim.current.window.width  = "abc"')
+! ee('vim.current.window.xxxxxx = True')
+! cb.append("> WinList")
+! cb.append(">> WinListItem")
+! ee('vim.windows[1000]')
+! cb.append("> Buffer")
+! cb.append(">> StringToLine (indirect)")
+! ee('vim.current.buffer[0] = "\\na"')
+! cb.append(">> SetBufferLine (indirect)")
+! ee('vim.current.buffer[0] = True')
+! cb.append(">> SetBufferLines (indirect)")
+! ee('vim.current.buffer[:] = True')
+! ee('vim.current.buffer[:] = ["\\na", "bc"]')
+! cb.append(">> InsertBufferLines (indirect)")
+! ee('vim.current.buffer.append(None)')
+! ee('vim.current.buffer.append(["\\na", "bc"])')
+! ee('vim.current.buffer.append("\\nbc")')
+! cb.append(">> RBItem")
+! ee('vim.current.buffer[10000000000]')
+! cb.append(">> RBAsItem")
+! ee('vim.current.buffer[10000000000] = ""')
+! cb.append(">> BufferAttr")
+! ee('vim.current.buffer.xxx')
+! cb.append(">> BufferSetattr")
+! ee('vim.current.buffer.name = True')
+! ee('vim.current.buffer.xxx = True')
+! cb.append(">> BufferMark")
+! ee('vim.current.buffer.mark(0)')
+! ee('vim.current.buffer.mark("abc")')
+! ee('vim.current.buffer.mark("!")')
+! cb.append(">> BufferRange")
+! ee('vim.current.buffer.range(1, 2, 3)')
+! cb.append("> BufMap")
+! cb.append(">> BufMapItem")
+! ee('vim.buffers[None]')
+! ee('vim.buffers[100000000]')
+! cb.append("> Current")
+! cb.append(">> CurrentGetattr")
+! ee('vim.current.xxx')
+! cb.append(">> CurrentSetattr")
+! ee('vim.current.line = True')
+! ee('vim.current.buffer = True')
+! ee('vim.current.window = True')
+! ee('vim.current.tabpage = True')
+! ee('vim.current.xxx = True')
+! EOF
+! :"
+! :" Test exceptions
+! :fun Exe(e)
+! :   execute a:e
+! :endfun
+! py << EOF
+  Exe = vim.bindeval('function("Exe")')
+  ee('vim.command("throw \'abc\'")')
+  ee('Exe("throw \'def\'")')
+*** ../vim-7.3.1065/src/testdir/test86.ok	2013-05-30 13:14:06.000000000 +0200
+--- src/testdir/test86.ok	2013-05-30 13:25:22.000000000 +0200
+***************
+*** 429,437 ****
+  ['a', 'b', 'c']
+  [2, 2]
+  [2, 2]
+! (<class 'vim.error'>, error('abc',))
+! (<class 'vim.error'>, error('def',))
+! (<class 'vim.error'>, error('ghi',))
+! (<class 'vim.error'>, error('Vim(echoerr):jkl',))
+! (<class 'vim.error'>, error('Vim:E492: Not an editor command: xxx_non_existent_command_xxx',))
+! (<class 'vim.error'>, error('Vim:E492: Not an editor command: xxx_non_existent_command_xxx',))
+--- 429,1081 ----
+  ['a', 'b', 'c']
+  [2, 2]
+  [2, 2]
+! > Output
+! >> OutputSetattr
+! del sys.stdout.softspace:(<type 'exceptions.AttributeError'>, AttributeError("can't delete OutputObject attributes",))
+! sys.stdout.softspace = []:(<type 'exceptions.TypeError'>, TypeError('softspace must be an integer',))
+! sys.stdout.attr = None:(<type 'exceptions.AttributeError'>, AttributeError('invalid attribute',))
+! >> OutputWrite
+! sys.stdout.write(None):(<type 'exceptions.TypeError'>, TypeError('coercing to Unicode: need string or buffer, NoneType found',))
+! >> OutputWriteLines
+! sys.stdout.writelines(None):(<type 'exceptions.TypeError'>, TypeError("'NoneType' object is not iterable",))
+! sys.stdout.writelines([1]):(<type 'exceptions.TypeError'>, TypeError('writelines() requires list of strings',))
+! >>> Testing *Iter* using sys.stdout.writelines(%s)
+! sys.stdout.writelines(FailingIter()):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! sys.stdout.writelines(FailingIterNext()):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! > VimCommand
+! vim.command(1):(<type 'exceptions.TypeError'>, TypeError('must be string, not int',))
+! > VimToPython
+! > VimEval
+! vim.eval(1):(<type 'exceptions.TypeError'>, TypeError('must be string, not int',))
+! > VimEvalPy
+! vim.bindeval(1):(<type 'exceptions.TypeError'>, TypeError('must be string, not int',))
+! > VimStrwidth
+! vim.strwidth(1):(<type 'exceptions.TypeError'>, TypeError('must be string, not int',))
+! > Dictionary
+! >> DictionaryConstructor
+! vim.Dictionary("abc"):(<type 'exceptions.ValueError'>, ValueError('expected sequence element of size 2',))
+! >> DictionarySetattr
+! del d.locked:(<type 'exceptions.AttributeError'>, AttributeError('cannot delete vim.Dictionary attributes',))
+! d.locked = FailingTrue():(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! vim.vvars.locked = False:(<type 'exceptions.TypeError'>, TypeError('cannot modify fixed dictionary',))
+! d.scope = True:(<type 'exceptions.AttributeError'>, AttributeError('cannot set this attribute',))
+! d.xxx = True:(<type 'exceptions.AttributeError'>, AttributeError('cannot set this attribute',))
+! >> _DictionaryItem
+! d.get("a", 2, 3):(<type 'exceptions.TypeError'>, TypeError('function takes at most 2 arguments (3 given)',))
+! >>> Testing StringToChars using d.get(%s)
+! d.get(1):(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! d.get(u"\0"):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! d.get("\0"):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! d.pop("a"):(<type 'exceptions.KeyError'>, KeyError('a',))
+! dl.pop("a"):(<class 'vim.error'>, error('dict is locked',))
+! >> DictionaryIterNext
+! for i in ned: ned["a"] = 1:(<type 'exceptions.RuntimeError'>, RuntimeError('hashtab changed during iteration',))
+! >> DictionaryAssItem
+! dl["b"] = 1:(<class 'vim.error'>, error('dict is locked',))
+! >>> Testing StringToChars using d[%s] = 1
+! d[1] = 1:(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! d[u"\0"] = 1:(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! d["\0"] = 1:(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing StringToChars using d["a"] = {%s : 1}
+! d["a"] = {1 : 1}:(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! d["a"] = {u"\0" : 1}:(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! d["a"] = {"\0" : 1}:(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing StringToChars using d["a"] = {"abc" : {%s : 1}}
+! d["a"] = {"abc" : {1 : 1}}:(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! d["a"] = {"abc" : {u"\0" : 1}}:(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! d["a"] = {"abc" : {"\0" : 1}}:(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing StringToChars using d["a"] = {"abc" : Mapping({%s : 1})}
+! d["a"] = {"abc" : Mapping({1 : 1})}:(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! d["a"] = {"abc" : Mapping({u"\0" : 1})}:(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! d["a"] = {"abc" : Mapping({"\0" : 1})}:(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing *Iter* using d["a"] = {"abc" : %s}
+! d["a"] = {"abc" : FailingIter()}:(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
+! d["a"] = {"abc" : FailingIterNext()}:(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using d["a"] = {"abc" : %s}
+! d["a"] = {"abc" : None}:(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
+! d["a"] = {"abc" : {"": 1}}:(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
+! d["a"] = {"abc" : FailingMapping()}:(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! d["a"] = {"abc" : FailingMappingKey()}:(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing StringToChars using d["a"] = Mapping({%s : 1})
+! d["a"] = Mapping({1 : 1}):(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! d["a"] = Mapping({u"\0" : 1}):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! d["a"] = Mapping({"\0" : 1}):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing StringToChars using d["a"] = Mapping({"abc" : {%s : 1}})
+! d["a"] = Mapping({"abc" : {1 : 1}}):(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! d["a"] = Mapping({"abc" : {u"\0" : 1}}):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! d["a"] = Mapping({"abc" : {"\0" : 1}}):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing StringToChars using d["a"] = Mapping({"abc" : Mapping({%s : 1})})
+! d["a"] = Mapping({"abc" : Mapping({1 : 1})}):(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! d["a"] = Mapping({"abc" : Mapping({u"\0" : 1})}):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! d["a"] = Mapping({"abc" : Mapping({"\0" : 1})}):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing *Iter* using d["a"] = Mapping({"abc" : %s})
+! d["a"] = Mapping({"abc" : FailingIter()}):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
+! d["a"] = Mapping({"abc" : FailingIterNext()}):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using d["a"] = Mapping({"abc" : %s})
+! d["a"] = Mapping({"abc" : None}):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
+! d["a"] = Mapping({"abc" : {"": 1}}):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
+! d["a"] = Mapping({"abc" : FailingMapping()}):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! d["a"] = Mapping({"abc" : FailingMappingKey()}):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing *Iter* using d["a"] = %s
+! d["a"] = FailingIter():(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
+! d["a"] = FailingIterNext():(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using d["a"] = %s
+! d["a"] = None:(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
+! d["a"] = {"": 1}:(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
+! d["a"] = FailingMapping():(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! d["a"] = FailingMappingKey():(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >> DictionaryUpdate
+! >>> kwargs
+! >>> iter
+! d.update(FailingMapping()):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! d.update([FailingIterNext()]):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! >>> Testing *Iter* using d.update(%s)
+! d.update(FailingIter()):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! d.update(FailingIterNext()):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing StringToChars using d.update({%s : 1})
+! d.update({1 : 1}):(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! d.update({u"\0" : 1}):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! d.update({"\0" : 1}):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing StringToChars using d.update({"abc" : {%s : 1}})
+! d.update({"abc" : {1 : 1}}):(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! d.update({"abc" : {u"\0" : 1}}):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! d.update({"abc" : {"\0" : 1}}):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing StringToChars using d.update({"abc" : Mapping({%s : 1})})
+! d.update({"abc" : Mapping({1 : 1})}):(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! d.update({"abc" : Mapping({u"\0" : 1})}):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! d.update({"abc" : Mapping({"\0" : 1})}):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing *Iter* using d.update({"abc" : %s})
+! d.update({"abc" : FailingIter()}):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
+! d.update({"abc" : FailingIterNext()}):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using d.update({"abc" : %s})
+! d.update({"abc" : None}):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
+! d.update({"abc" : {"": 1}}):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
+! d.update({"abc" : FailingMapping()}):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! d.update({"abc" : FailingMappingKey()}):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing StringToChars using d.update(Mapping({%s : 1}))
+! d.update(Mapping({1 : 1})):(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! d.update(Mapping({u"\0" : 1})):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! d.update(Mapping({"\0" : 1})):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing StringToChars using d.update(Mapping({"abc" : {%s : 1}}))
+! d.update(Mapping({"abc" : {1 : 1}})):(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! d.update(Mapping({"abc" : {u"\0" : 1}})):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! d.update(Mapping({"abc" : {"\0" : 1}})):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing StringToChars using d.update(Mapping({"abc" : Mapping({%s : 1})}))
+! d.update(Mapping({"abc" : Mapping({1 : 1})})):(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! d.update(Mapping({"abc" : Mapping({u"\0" : 1})})):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! d.update(Mapping({"abc" : Mapping({"\0" : 1})})):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing *Iter* using d.update(Mapping({"abc" : %s}))
+! d.update(Mapping({"abc" : FailingIter()})):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
+! d.update(Mapping({"abc" : FailingIterNext()})):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using d.update(Mapping({"abc" : %s}))
+! d.update(Mapping({"abc" : None})):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
+! d.update(Mapping({"abc" : {"": 1}})):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
+! d.update(Mapping({"abc" : FailingMapping()})):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! d.update(Mapping({"abc" : FailingMappingKey()})):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing *Iter* using d.update(%s)
+! d.update(FailingIter()):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! d.update(FailingIterNext()):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using d.update(%s)
+! d.update(None):(<type 'exceptions.TypeError'>, TypeError("'NoneType' object is not iterable",))
+! d.update({"": 1}):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
+! d.update(FailingMapping()):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! d.update(FailingMappingKey()):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing StringToChars using d.update(((%s, 0),))
+! d.update(((1, 0),)):(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! d.update(((u"\0", 0),)):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! d.update((("\0", 0),)):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing StringToChars using d.update((("a", {%s : 1}),))
+! d.update((("a", {1 : 1}),)):(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! d.update((("a", {u"\0" : 1}),)):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! d.update((("a", {"\0" : 1}),)):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing StringToChars using d.update((("a", {"abc" : {%s : 1}}),))
+! d.update((("a", {"abc" : {1 : 1}}),)):(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! d.update((("a", {"abc" : {u"\0" : 1}}),)):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! d.update((("a", {"abc" : {"\0" : 1}}),)):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing StringToChars using d.update((("a", {"abc" : Mapping({%s : 1})}),))
+! d.update((("a", {"abc" : Mapping({1 : 1})}),)):(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! d.update((("a", {"abc" : Mapping({u"\0" : 1})}),)):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! d.update((("a", {"abc" : Mapping({"\0" : 1})}),)):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing *Iter* using d.update((("a", {"abc" : %s}),))
+! d.update((("a", {"abc" : FailingIter()}),)):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
+! d.update((("a", {"abc" : FailingIterNext()}),)):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using d.update((("a", {"abc" : %s}),))
+! d.update((("a", {"abc" : None}),)):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
+! d.update((("a", {"abc" : {"": 1}}),)):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
+! d.update((("a", {"abc" : FailingMapping()}),)):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! d.update((("a", {"abc" : FailingMappingKey()}),)):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing StringToChars using d.update((("a", Mapping({%s : 1})),))
+! d.update((("a", Mapping({1 : 1})),)):(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! d.update((("a", Mapping({u"\0" : 1})),)):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! d.update((("a", Mapping({"\0" : 1})),)):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing StringToChars using d.update((("a", Mapping({"abc" : {%s : 1}})),))
+! d.update((("a", Mapping({"abc" : {1 : 1}})),)):(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! d.update((("a", Mapping({"abc" : {u"\0" : 1}})),)):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! d.update((("a", Mapping({"abc" : {"\0" : 1}})),)):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing StringToChars using d.update((("a", Mapping({"abc" : Mapping({%s : 1})})),))
+! d.update((("a", Mapping({"abc" : Mapping({1 : 1})})),)):(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! d.update((("a", Mapping({"abc" : Mapping({u"\0" : 1})})),)):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! d.update((("a", Mapping({"abc" : Mapping({"\0" : 1})})),)):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing *Iter* using d.update((("a", Mapping({"abc" : %s})),))
+! d.update((("a", Mapping({"abc" : FailingIter()})),)):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
+! d.update((("a", Mapping({"abc" : FailingIterNext()})),)):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using d.update((("a", Mapping({"abc" : %s})),))
+! d.update((("a", Mapping({"abc" : None})),)):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
+! d.update((("a", Mapping({"abc" : {"": 1}})),)):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
+! d.update((("a", Mapping({"abc" : FailingMapping()})),)):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! d.update((("a", Mapping({"abc" : FailingMappingKey()})),)):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing *Iter* using d.update((("a", %s),))
+! d.update((("a", FailingIter()),)):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
+! d.update((("a", FailingIterNext()),)):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using d.update((("a", %s),))
+! d.update((("a", None),)):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
+! d.update((("a", {"": 1}),)):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
+! d.update((("a", FailingMapping()),)):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! d.update((("a", FailingMappingKey()),)):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >> DictionaryPopItem
+! d.popitem(1, 2):(<type 'exceptions.TypeError'>, TypeError('function takes exactly 1 argument (2 given)',))
+! >> DictionaryHasKey
+! d.has_key():(<type 'exceptions.TypeError'>, TypeError('function takes exactly 1 argument (0 given)',))
+! > List
+! >> ListConstructor
+! vim.List(1, 2):(<type 'exceptions.TypeError'>, TypeError('function takes at most 1 argument (2 given)',))
+! vim.List(a=1):(<type 'exceptions.TypeError'>, TypeError('list constructor does not accept keyword arguments',))
+! >>> Testing *Iter* using vim.List(%s)
+! vim.List(FailingIter()):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! vim.List(FailingIterNext()):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing StringToChars using vim.List([{%s : 1}])
+! vim.List([{1 : 1}]):(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! vim.List([{u"\0" : 1}]):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! vim.List([{"\0" : 1}]):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing StringToChars using vim.List([{"abc" : {%s : 1}}])
+! vim.List([{"abc" : {1 : 1}}]):(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! vim.List([{"abc" : {u"\0" : 1}}]):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! vim.List([{"abc" : {"\0" : 1}}]):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing StringToChars using vim.List([{"abc" : Mapping({%s : 1})}])
+! vim.List([{"abc" : Mapping({1 : 1})}]):(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! vim.List([{"abc" : Mapping({u"\0" : 1})}]):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! vim.List([{"abc" : Mapping({"\0" : 1})}]):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing *Iter* using vim.List([{"abc" : %s}])
+! vim.List([{"abc" : FailingIter()}]):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
+! vim.List([{"abc" : FailingIterNext()}]):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using vim.List([{"abc" : %s}])
+! vim.List([{"abc" : None}]):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
+! vim.List([{"abc" : {"": 1}}]):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
+! vim.List([{"abc" : FailingMapping()}]):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! vim.List([{"abc" : FailingMappingKey()}]):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing StringToChars using vim.List([Mapping({%s : 1})])
+! vim.List([Mapping({1 : 1})]):(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! vim.List([Mapping({u"\0" : 1})]):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! vim.List([Mapping({"\0" : 1})]):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing StringToChars using vim.List([Mapping({"abc" : {%s : 1}})])
+! vim.List([Mapping({"abc" : {1 : 1}})]):(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! vim.List([Mapping({"abc" : {u"\0" : 1}})]):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! vim.List([Mapping({"abc" : {"\0" : 1}})]):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing StringToChars using vim.List([Mapping({"abc" : Mapping({%s : 1})})])
+! vim.List([Mapping({"abc" : Mapping({1 : 1})})]):(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! vim.List([Mapping({"abc" : Mapping({u"\0" : 1})})]):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! vim.List([Mapping({"abc" : Mapping({"\0" : 1})})]):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing *Iter* using vim.List([Mapping({"abc" : %s})])
+! vim.List([Mapping({"abc" : FailingIter()})]):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
+! vim.List([Mapping({"abc" : FailingIterNext()})]):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using vim.List([Mapping({"abc" : %s})])
+! vim.List([Mapping({"abc" : None})]):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
+! vim.List([Mapping({"abc" : {"": 1}})]):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
+! vim.List([Mapping({"abc" : FailingMapping()})]):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! vim.List([Mapping({"abc" : FailingMappingKey()})]):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing *Iter* using vim.List([%s])
+! vim.List([FailingIter()]):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
+! vim.List([FailingIterNext()]):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using vim.List([%s])
+! vim.List([None]):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
+! vim.List([{"": 1}]):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
+! vim.List([FailingMapping()]):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! vim.List([FailingMappingKey()]):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >> ListItem
+! l[1000]:(<type 'exceptions.IndexError'>, IndexError('list index out of range',))
+! >> ListAssItem
+! ll[1] = 2:(<class 'vim.error'>, error('list is locked',))
+! l[1000] = 3:(<type 'exceptions.IndexError'>, IndexError('list index out of range',))
+! >> ListAssSlice
+! ll[1:100] = "abc":(<class 'vim.error'>, error('list is locked',))
+! >>> Testing *Iter* using l[:] = %s
+! l[:] = FailingIter():(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! l[:] = FailingIterNext():(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing StringToChars using l[:] = [{%s : 1}]
+! l[:] = [{1 : 1}]:(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! l[:] = [{u"\0" : 1}]:(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! l[:] = [{"\0" : 1}]:(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing StringToChars using l[:] = [{"abc" : {%s : 1}}]
+! l[:] = [{"abc" : {1 : 1}}]:(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! l[:] = [{"abc" : {u"\0" : 1}}]:(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! l[:] = [{"abc" : {"\0" : 1}}]:(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing StringToChars using l[:] = [{"abc" : Mapping({%s : 1})}]
+! l[:] = [{"abc" : Mapping({1 : 1})}]:(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! l[:] = [{"abc" : Mapping({u"\0" : 1})}]:(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! l[:] = [{"abc" : Mapping({"\0" : 1})}]:(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing *Iter* using l[:] = [{"abc" : %s}]
+! l[:] = [{"abc" : FailingIter()}]:(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
+! l[:] = [{"abc" : FailingIterNext()}]:(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using l[:] = [{"abc" : %s}]
+! l[:] = [{"abc" : None}]:(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
+! l[:] = [{"abc" : {"": 1}}]:(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
+! l[:] = [{"abc" : FailingMapping()}]:(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! l[:] = [{"abc" : FailingMappingKey()}]:(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing StringToChars using l[:] = [Mapping({%s : 1})]
+! l[:] = [Mapping({1 : 1})]:(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! l[:] = [Mapping({u"\0" : 1})]:(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! l[:] = [Mapping({"\0" : 1})]:(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing StringToChars using l[:] = [Mapping({"abc" : {%s : 1}})]
+! l[:] = [Mapping({"abc" : {1 : 1}})]:(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! l[:] = [Mapping({"abc" : {u"\0" : 1}})]:(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! l[:] = [Mapping({"abc" : {"\0" : 1}})]:(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing StringToChars using l[:] = [Mapping({"abc" : Mapping({%s : 1})})]
+! l[:] = [Mapping({"abc" : Mapping({1 : 1})})]:(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! l[:] = [Mapping({"abc" : Mapping({u"\0" : 1})})]:(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! l[:] = [Mapping({"abc" : Mapping({"\0" : 1})})]:(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing *Iter* using l[:] = [Mapping({"abc" : %s})]
+! l[:] = [Mapping({"abc" : FailingIter()})]:(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
+! l[:] = [Mapping({"abc" : FailingIterNext()})]:(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using l[:] = [Mapping({"abc" : %s})]
+! l[:] = [Mapping({"abc" : None})]:(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
+! l[:] = [Mapping({"abc" : {"": 1}})]:(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
+! l[:] = [Mapping({"abc" : FailingMapping()})]:(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! l[:] = [Mapping({"abc" : FailingMappingKey()})]:(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing *Iter* using l[:] = [%s]
+! l[:] = [FailingIter()]:(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
+! l[:] = [FailingIterNext()]:(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using l[:] = [%s]
+! l[:] = [None]:(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
+! l[:] = [{"": 1}]:(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
+! l[:] = [FailingMapping()]:(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! l[:] = [FailingMappingKey()]:(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >> ListConcatInPlace
+! >>> Testing *Iter* using l.extend(%s)
+! l.extend(FailingIter()):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! l.extend(FailingIterNext()):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing StringToChars using l.extend([{%s : 1}])
+! l.extend([{1 : 1}]):(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! l.extend([{u"\0" : 1}]):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! l.extend([{"\0" : 1}]):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing StringToChars using l.extend([{"abc" : {%s : 1}}])
+! l.extend([{"abc" : {1 : 1}}]):(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! l.extend([{"abc" : {u"\0" : 1}}]):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! l.extend([{"abc" : {"\0" : 1}}]):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing StringToChars using l.extend([{"abc" : Mapping({%s : 1})}])
+! l.extend([{"abc" : Mapping({1 : 1})}]):(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! l.extend([{"abc" : Mapping({u"\0" : 1})}]):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! l.extend([{"abc" : Mapping({"\0" : 1})}]):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing *Iter* using l.extend([{"abc" : %s}])
+! l.extend([{"abc" : FailingIter()}]):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
+! l.extend([{"abc" : FailingIterNext()}]):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using l.extend([{"abc" : %s}])
+! l.extend([{"abc" : None}]):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
+! l.extend([{"abc" : {"": 1}}]):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
+! l.extend([{"abc" : FailingMapping()}]):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! l.extend([{"abc" : FailingMappingKey()}]):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing StringToChars using l.extend([Mapping({%s : 1})])
+! l.extend([Mapping({1 : 1})]):(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! l.extend([Mapping({u"\0" : 1})]):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! l.extend([Mapping({"\0" : 1})]):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing StringToChars using l.extend([Mapping({"abc" : {%s : 1}})])
+! l.extend([Mapping({"abc" : {1 : 1}})]):(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! l.extend([Mapping({"abc" : {u"\0" : 1}})]):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! l.extend([Mapping({"abc" : {"\0" : 1}})]):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing StringToChars using l.extend([Mapping({"abc" : Mapping({%s : 1})})])
+! l.extend([Mapping({"abc" : Mapping({1 : 1})})]):(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! l.extend([Mapping({"abc" : Mapping({u"\0" : 1})})]):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! l.extend([Mapping({"abc" : Mapping({"\0" : 1})})]):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing *Iter* using l.extend([Mapping({"abc" : %s})])
+! l.extend([Mapping({"abc" : FailingIter()})]):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
+! l.extend([Mapping({"abc" : FailingIterNext()})]):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using l.extend([Mapping({"abc" : %s})])
+! l.extend([Mapping({"abc" : None})]):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
+! l.extend([Mapping({"abc" : {"": 1}})]):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
+! l.extend([Mapping({"abc" : FailingMapping()})]):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! l.extend([Mapping({"abc" : FailingMappingKey()})]):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing *Iter* using l.extend([%s])
+! l.extend([FailingIter()]):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
+! l.extend([FailingIterNext()]):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using l.extend([%s])
+! l.extend([None]):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
+! l.extend([{"": 1}]):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
+! l.extend([FailingMapping()]):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! l.extend([FailingMappingKey()]):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >> ListSetattr
+! del l.locked:(<type 'exceptions.AttributeError'>, AttributeError('cannot delete vim.List attributes',))
+! l.locked = FailingTrue():(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! l.xxx = True:(<type 'exceptions.AttributeError'>, AttributeError('cannot set this attribute',))
+! > Function
+! >> FunctionConstructor
+! vim.Function("123"):(<type 'exceptions.ValueError'>, ValueError('unnamed function does not exist',))
+! vim.Function("xxx_non_existent_function_xxx"):(<type 'exceptions.ValueError'>, ValueError('function does not exist',))
+! vim.Function("xxx#non#existent#function#xxx"):(<type 'exceptions.ValueError'>, ValueError('function does not exist',))
+! >> FunctionCall
+! >>> Testing StringToChars using f({%s : 1})
+! f({1 : 1}):(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! f({u"\0" : 1}):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! f({"\0" : 1}):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing StringToChars using f({"abc" : {%s : 1}})
+! f({"abc" : {1 : 1}}):(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! f({"abc" : {u"\0" : 1}}):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! f({"abc" : {"\0" : 1}}):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing StringToChars using f({"abc" : Mapping({%s : 1})})
+! f({"abc" : Mapping({1 : 1})}):(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! f({"abc" : Mapping({u"\0" : 1})}):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! f({"abc" : Mapping({"\0" : 1})}):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing *Iter* using f({"abc" : %s})
+! f({"abc" : FailingIter()}):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
+! f({"abc" : FailingIterNext()}):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using f({"abc" : %s})
+! f({"abc" : None}):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
+! f({"abc" : {"": 1}}):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
+! f({"abc" : FailingMapping()}):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! f({"abc" : FailingMappingKey()}):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing StringToChars using f(Mapping({%s : 1}))
+! f(Mapping({1 : 1})):(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! f(Mapping({u"\0" : 1})):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! f(Mapping({"\0" : 1})):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing StringToChars using f(Mapping({"abc" : {%s : 1}}))
+! f(Mapping({"abc" : {1 : 1}})):(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! f(Mapping({"abc" : {u"\0" : 1}})):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! f(Mapping({"abc" : {"\0" : 1}})):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing StringToChars using f(Mapping({"abc" : Mapping({%s : 1})}))
+! f(Mapping({"abc" : Mapping({1 : 1})})):(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! f(Mapping({"abc" : Mapping({u"\0" : 1})})):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! f(Mapping({"abc" : Mapping({"\0" : 1})})):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing *Iter* using f(Mapping({"abc" : %s}))
+! f(Mapping({"abc" : FailingIter()})):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
+! f(Mapping({"abc" : FailingIterNext()})):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using f(Mapping({"abc" : %s}))
+! f(Mapping({"abc" : None})):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
+! f(Mapping({"abc" : {"": 1}})):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
+! f(Mapping({"abc" : FailingMapping()})):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! f(Mapping({"abc" : FailingMappingKey()})):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing *Iter* using f(%s)
+! f(FailingIter()):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
+! f(FailingIterNext()):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using f(%s)
+! f(None):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
+! f({"": 1}):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
+! f(FailingMapping()):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! f(FailingMappingKey()):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing StringToChars using fd(self={%s : 1})
+! fd(self={1 : 1}):(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! fd(self={u"\0" : 1}):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! fd(self={"\0" : 1}):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing StringToChars using fd(self={"abc" : {%s : 1}})
+! fd(self={"abc" : {1 : 1}}):(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! fd(self={"abc" : {u"\0" : 1}}):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! fd(self={"abc" : {"\0" : 1}}):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing StringToChars using fd(self={"abc" : Mapping({%s : 1})})
+! fd(self={"abc" : Mapping({1 : 1})}):(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! fd(self={"abc" : Mapping({u"\0" : 1})}):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! fd(self={"abc" : Mapping({"\0" : 1})}):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing *Iter* using fd(self={"abc" : %s})
+! fd(self={"abc" : FailingIter()}):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
+! fd(self={"abc" : FailingIterNext()}):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using fd(self={"abc" : %s})
+! fd(self={"abc" : None}):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
+! fd(self={"abc" : {"": 1}}):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
+! fd(self={"abc" : FailingMapping()}):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! fd(self={"abc" : FailingMappingKey()}):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing StringToChars using fd(self=Mapping({%s : 1}))
+! fd(self=Mapping({1 : 1})):(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! fd(self=Mapping({u"\0" : 1})):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! fd(self=Mapping({"\0" : 1})):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing StringToChars using fd(self=Mapping({"abc" : {%s : 1}}))
+! fd(self=Mapping({"abc" : {1 : 1}})):(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! fd(self=Mapping({"abc" : {u"\0" : 1}})):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! fd(self=Mapping({"abc" : {"\0" : 1}})):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing StringToChars using fd(self=Mapping({"abc" : Mapping({%s : 1})}))
+! fd(self=Mapping({"abc" : Mapping({1 : 1})})):(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! fd(self=Mapping({"abc" : Mapping({u"\0" : 1})})):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! fd(self=Mapping({"abc" : Mapping({"\0" : 1})})):(<type 'exceptions.TypeError'>, TypeError('expected string without null bytes',))
+! <<< Finished
+! >>> Testing *Iter* using fd(self=Mapping({"abc" : %s}))
+! fd(self=Mapping({"abc" : FailingIter()})):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
+! fd(self=Mapping({"abc" : FailingIterNext()})):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using fd(self=Mapping({"abc" : %s}))
+! fd(self=Mapping({"abc" : None})):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
+! fd(self=Mapping({"abc" : {"": 1}})):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
+! fd(self=Mapping({"abc" : FailingMapping()})):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! fd(self=Mapping({"abc" : FailingMappingKey()})):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing *Iter* using fd(self=%s)
+! fd(self=FailingIter()):(<type 'exceptions.TypeError'>, TypeError('unable to convert object to vim dictionary',))
+! fd(self=FailingIterNext()):(<type 'exceptions.TypeError'>, TypeError('unable to convert object to vim dictionary',))
+! <<< Finished
+! >>> Testing ConvertFromPyObject using fd(self=%s)
+! fd(self=None):(<type 'exceptions.TypeError'>, TypeError('unable to convert object to vim dictionary',))
+! fd(self={"": 1}):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
+! fd(self=FailingMapping()):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! fd(self=FailingMappingKey()):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyMapping using fd(self=%s)
+! fd(self=[]):(<type 'exceptions.TypeError'>, TypeError('unable to convert object to vim dictionary',))
+! <<< Finished
+! > TabPage
+! >> TabPageAttr
+! vim.current.tabpage.xxx:(<type 'exceptions.AttributeError'>, AttributeError('xxx',))
+! > TabList
+! >> TabListItem
+! vim.tabpages[1000]:(<type 'exceptions.IndexError'>, IndexError('no such tab page',))
+! > Window
+! >> WindowAttr
+! vim.current.window.xxx:(<type 'exceptions.AttributeError'>, AttributeError('xxx',))
+! >> WindowSetattr
+! vim.current.window.buffer = 0:(<type 'exceptions.TypeError'>, TypeError('readonly attribute',))
+! vim.current.window.cursor = (10000000000, 100000000):(<class 'vim.error'>, error('cursor position outside buffer',))
+! vim.current.window.cursor = True:(<type 'exceptions.TypeError'>, TypeError('argument must be 2-item sequence, not bool',))
+! vim.current.window.height = "abc":(<type 'exceptions.TypeError'>, TypeError('an integer is required',))
+! vim.current.window.width  = "abc":(<type 'exceptions.TypeError'>, TypeError('an integer is required',))
+! vim.current.window.xxxxxx = True:(<type 'exceptions.AttributeError'>, AttributeError('xxxxxx',))
+! > WinList
+! >> WinListItem
+! vim.windows[1000]:(<type 'exceptions.IndexError'>, IndexError('no such window',))
+! > Buffer
+! >> StringToLine (indirect)
+! vim.current.buffer[0] = "\na":(<class 'vim.error'>, error('string cannot contain newlines',))
+! >> SetBufferLine (indirect)
+! vim.current.buffer[0] = True:(<type 'exceptions.TypeError'>, TypeError('bad argument type for built-in operation',))
+! >> SetBufferLines (indirect)
+! vim.current.buffer[:] = True:(<type 'exceptions.TypeError'>, TypeError('bad argument type for built-in operation',))
+! vim.current.buffer[:] = ["\na", "bc"]:(<class 'vim.error'>, error('string cannot contain newlines',))
+! >> InsertBufferLines (indirect)
+! vim.current.buffer.append(None):(<type 'exceptions.TypeError'>, TypeError('bad argument type for built-in operation',))
+! vim.current.buffer.append(["\na", "bc"]):(<class 'vim.error'>, error('string cannot contain newlines',))
+! vim.current.buffer.append("\nbc"):(<class 'vim.error'>, error('string cannot contain newlines',))
+! >> RBItem
+! vim.current.buffer[10000000000]:(<type 'exceptions.IndexError'>, IndexError('line number out of range',))
+! >> RBAsItem
+! vim.current.buffer[10000000000] = "":(<type 'exceptions.IndexError'>, IndexError('line number out of range',))
+! >> BufferAttr
+! vim.current.buffer.xxx:(<type 'exceptions.AttributeError'>, AttributeError('xxx',))
+! >> BufferSetattr
+! vim.current.buffer.name = True:(<type 'exceptions.TypeError'>, TypeError('object must be string',))
+! vim.current.buffer.xxx = True:(<type 'exceptions.AttributeError'>, AttributeError('xxx',))
+! >> BufferMark
+! vim.current.buffer.mark(0):(<type 'exceptions.TypeError'>, TypeError('must be string, not int',))
+! vim.current.buffer.mark("abc"):(<type 'exceptions.ValueError'>, ValueError('mark name must be a single character',))
+! vim.current.buffer.mark("!"):(<class 'vim.error'>, error('invalid mark name',))
+! >> BufferRange
+! vim.current.buffer.range(1, 2, 3):(<type 'exceptions.TypeError'>, TypeError('function takes exactly 2 arguments (3 given)',))
+! > BufMap
+! >> BufMapItem
+! vim.buffers[None]:(<type 'exceptions.TypeError'>, TypeError('key must be integer',))
+! vim.buffers[100000000]:(<type 'exceptions.KeyError'>, KeyError(100000000,))
+! > Current
+! >> CurrentGetattr
+! vim.current.xxx:(<type 'exceptions.AttributeError'>, AttributeError('xxx',))
+! >> CurrentSetattr
+! vim.current.line = True:(<type 'exceptions.TypeError'>, TypeError('bad argument type for built-in operation',))
+! vim.current.buffer = True:(<type 'exceptions.TypeError'>, TypeError('expected vim.Buffer object',))
+! vim.current.window = True:(<type 'exceptions.TypeError'>, TypeError('expected vim.Window object',))
+! vim.current.tabpage = True:(<type 'exceptions.TypeError'>, TypeError('expected vim.TabPage object',))
+! vim.current.xxx = True:(<type 'exceptions.AttributeError'>, AttributeError('xxx',))
+! vim.command("throw 'abc'"):(<class 'vim.error'>, error('abc',))
+! Exe("throw 'def'"):(<class 'vim.error'>, error('def',))
+! vim.eval("Exe('throw ''ghi''')"):(<class 'vim.error'>, error('ghi',))
+! vim.eval("Exe('echoerr ''jkl''')"):(<class 'vim.error'>, error('Vim(echoerr):jkl',))
+! vim.eval("Exe('xxx_non_existent_command_xxx')"):(<class 'vim.error'>, error('Vim:E492: Not an editor command: xxx_non_existent_command_xxx',))
+! vim.bindeval("Exe('xxx_non_existent_command_xxx')"):(<class 'vim.error'>, error('Vim:E492: Not an editor command: xxx_non_existent_command_xxx',))
+*** ../vim-7.3.1065/src/testdir/test87.in	2013-05-30 13:14:06.000000000 +0200
+--- src/testdir/test87.in	2013-05-30 13:25:22.000000000 +0200
+***************
+*** 746,761 ****
+  :$put =string(py3eval('dl2'))
+  :$put =string(py3eval('df(2)'))
+  :"
+! :" Test exceptions
+! :fun Exe(e)
+! :   execute a:e
+  :endfun
+  py3 << EOF
+  def ee(expr, g=globals(), l=locals()):
+      try:
+!         exec(expr, g, l)
+      except Exception as e:
+!         cb.append(repr((e.__class__, e)))
+  Exe = vim.bindeval('function("Exe")')
+  ee('vim.command("throw \'abc\'")')
+  ee('Exe("throw \'def\'")')
+--- 746,1026 ----
+  :$put =string(py3eval('dl2'))
+  :$put =string(py3eval('df(2)'))
+  :"
+! :" Test errors
+! :fun F() dict
+! :endfun
+! :fun D()
+  :endfun
+  py3 << EOF
+  def ee(expr, g=globals(), l=locals()):
+      try:
+!         try:
+!             exec(expr, g, l)
+!         except Exception as e:
+!             cb.append(expr + ':' + repr((e.__class__, e)))
+!         else:
+!             cb.append(expr + ':NOT FAILED')
+      except Exception as e:
+!         cb.append(expr + '::' + repr((e.__class__, e)))
+! 
+! d = vim.Dictionary()
+! ned = vim.Dictionary(foo='bar', baz='abc')
+! dl = vim.Dictionary(a=1)
+! dl.locked = True
+! l = vim.List()
+! ll = vim.List('abc')
+! ll.locked = True
+! f = vim.Function('string')
+! fd = vim.Function('F')
+! fdel = vim.Function('D')
+! vim.command('delfunction D')
+! 
+! def subexpr_test(expr, name, subexprs):
+!     cb.append('>>> Testing %s using %s' % (name, expr))
+!     for subexpr in subexprs:
+!         ee(expr % subexpr)
+!     cb.append('<<< Finished')
+! 
+! def stringtochars_test(expr):
+!     return subexpr_test(expr, 'StringToChars', (
+!         '1',       # Fail type checks
+!         'u"\\0"',  # Fail PyString_AsStringAndSize(bytes, , NULL) check
+!         '"\\0"',   # Fail PyString_AsStringAndSize(object, , NULL) check
+!     ))
+! 
+! class Mapping(object):
+!     def __init__(self, d):
+!         self.d = d
+! 
+!     def __getitem__(self, key):
+!         return self.d[key]
+! 
+!     def keys(self):
+!         return self.d.keys()
+! 
+!     def items(self):
+!         return self.d.items()
+! 
+! def convertfrompyobject_test(expr, recurse=True):
+!     # pydict_to_tv
+!     stringtochars_test(expr % '{%s : 1}')
+!     if recurse:
+!         convertfrompyobject_test(expr % '{"abc" : %s}', False)
+!     # pymap_to_tv
+!     stringtochars_test(expr % 'Mapping({%s : 1})')
+!     if recurse:
+!         convertfrompyobject_test(expr % 'Mapping({"abc" : %s})', False)
+!     # pyseq_to_tv
+!     iter_test(expr)
+!     return subexpr_test(expr, 'ConvertFromPyObject', (
+!         'None',                 # Not conversible
+!         '{"": 1}',              # Empty key not allowed
+!         'FailingMapping()',     #
+!         'FailingMappingKey()',  #
+!     ))
+! 
+! def convertfrompymapping_test(expr):
+!     convertfrompyobject_test(expr)
+!     return subexpr_test(expr, 'ConvertFromPyMapping', (
+!         '[]',
+!     ))
+! 
+! def iter_test(expr):
+!     return subexpr_test(expr, '*Iter*', (
+!         'FailingIter()',
+!         'FailingIterNext()',
+!     ))
+! 
+! class FailingTrue(object):
+!     def __bool__(self):
+!         raise NotImplementedError
+! 
+! class FailingIter(object):
+!     def __iter__(self):
+!         raise NotImplementedError
+! 
+! class FailingIterNext(object):
+!     def __iter__(self):
+!         return self
+! 
+!     def __next__(self):
+!         raise NotImplementedError
+! 
+! class FailingMappingKey(object):
+!     def __getitem__(self, item):
+!         raise NotImplementedError
+! 
+!     def keys(self):
+!         return list("abc")
+! 
+! class FailingMapping(object):
+!     def __getitem__(self):
+!         raise NotImplementedError
+! 
+!     def keys(self):
+!         raise NotImplementedError
+! 
+! class FailingList(list):
+!     def __getitem__(self, idx):
+!         if i == 2:
+!             raise NotImplementedError
+!         else:
+!             return super(FailingList, self).__getitem__(idx)
+! 
+! cb.append("> Output")
+! cb.append(">> OutputSetattr")
+! ee('del sys.stdout.softspace')
+! ee('sys.stdout.softspace = []')
+! ee('sys.stdout.attr = None')
+! cb.append(">> OutputWrite")
+! ee('sys.stdout.write(None)')
+! cb.append(">> OutputWriteLines")
+! ee('sys.stdout.writelines(None)')
+! ee('sys.stdout.writelines([1])')
+! iter_test('sys.stdout.writelines(%s)')
+! cb.append("> VimCommand")
+! ee('vim.command(1)')
+! #! Not checked: vim->python exceptions translating: checked later
+! cb.append("> VimToPython")
+! #! Not checked: everything: needs errors in internal python functions
+! cb.append("> VimEval")
+! ee('vim.eval(1)')
+! #! Not checked: everything: needs errors in internal python functions
+! cb.append("> VimEvalPy")
+! ee('vim.bindeval(1)')
+! #! Not checked: vim->python exceptions translating: checked later
+! cb.append("> VimStrwidth")
+! ee('vim.strwidth(1)')
+! cb.append("> Dictionary")
+! cb.append(">> DictionaryConstructor")
+! ee('vim.Dictionary("abc")')
+! ##! Not checked: py_dict_alloc failure
+! cb.append(">> DictionarySetattr")
+! ee('del d.locked')
+! ee('d.locked = FailingTrue()')
+! ee('vim.vvars.locked = False')
+! ee('d.scope = True')
+! ee('d.xxx = True')
+! cb.append(">> _DictionaryItem")
+! ee('d.get("a", 2, 3)')
+! stringtochars_test('d.get(%s)')
+! ee('d.pop("a")')
+! ee('dl.pop("a")')
+! cb.append(">> DictionaryIterNext")
+! ee('for i in ned: ned["a"] = 1')
+! cb.append(">> DictionaryAssItem")
+! ee('dl["b"] = 1')
+! stringtochars_test('d[%s] = 1')
+! convertfrompyobject_test('d["a"] = %s')
+! cb.append(">> DictionaryUpdate")
+! cb.append(">>> kwargs")
+! cb.append(">>> iter")
+! ee('d.update(FailingMapping())')
+! ee('d.update([FailingIterNext()])')
+! iter_test('d.update(%s)')
+! convertfrompyobject_test('d.update(%s)')
+! stringtochars_test('d.update(((%s, 0),))')
+! convertfrompyobject_test('d.update((("a", %s),))')
+! cb.append(">> DictionaryPopItem")
+! ee('d.popitem(1, 2)')
+! cb.append(">> DictionaryHasKey")
+! ee('d.has_key()')
+! cb.append("> List")
+! cb.append(">> ListConstructor")
+! ee('vim.List(1, 2)')
+! ee('vim.List(a=1)')
+! iter_test('vim.List(%s)')
+! convertfrompyobject_test('vim.List([%s])')
+! cb.append(">> ListItem")
+! ee('l[1000]')
+! cb.append(">> ListAssItem")
+! ee('ll[1] = 2')
+! ee('l[1000] = 3')
+! cb.append(">> ListAssSlice")
+! ee('ll[1:100] = "abc"')
+! iter_test('l[:] = %s')
+! convertfrompyobject_test('l[:] = [%s]')
+! cb.append(">> ListConcatInPlace")
+! iter_test('l.extend(%s)')
+! convertfrompyobject_test('l.extend([%s])')
+! cb.append(">> ListSetattr")
+! ee('del l.locked')
+! ee('l.locked = FailingTrue()')
+! ee('l.xxx = True')
+! cb.append("> Function")
+! cb.append(">> FunctionConstructor")
+! ee('vim.Function("123")')
+! ee('vim.Function("xxx_non_existent_function_xxx")')
+! ee('vim.Function("xxx#non#existent#function#xxx")')
+! cb.append(">> FunctionCall")
+! convertfrompyobject_test('f(%s)')
+! convertfrompymapping_test('fd(self=%s)')
+! cb.append("> TabPage")
+! cb.append(">> TabPageAttr")
+! ee('vim.current.tabpage.xxx')
+! cb.append("> TabList")
+! cb.append(">> TabListItem")
+! ee('vim.tabpages[1000]')
+! cb.append("> Window")
+! cb.append(">> WindowAttr")
+! ee('vim.current.window.xxx')
+! cb.append(">> WindowSetattr")
+! ee('vim.current.window.buffer = 0')
+! ee('vim.current.window.cursor = (10000000000, 100000000)')
+! ee('vim.current.window.cursor = True')
+! ee('vim.current.window.height = "abc"')
+! ee('vim.current.window.width  = "abc"')
+! ee('vim.current.window.xxxxxx = True')
+! cb.append("> WinList")
+! cb.append(">> WinListItem")
+! ee('vim.windows[1000]')
+! cb.append("> Buffer")
+! cb.append(">> StringToLine (indirect)")
+! ee('vim.current.buffer[0] = "\\na"')
+! cb.append(">> SetBufferLine (indirect)")
+! ee('vim.current.buffer[0] = True')
+! cb.append(">> SetBufferLines (indirect)")
+! ee('vim.current.buffer[:] = True')
+! ee('vim.current.buffer[:] = ["\\na", "bc"]')
+! cb.append(">> InsertBufferLines (indirect)")
+! ee('vim.current.buffer.append(None)')
+! ee('vim.current.buffer.append(["\\na", "bc"])')
+! ee('vim.current.buffer.append("\\nbc")')
+! cb.append(">> RBItem")
+! ee('vim.current.buffer[10000000000]')
+! cb.append(">> RBAsItem")
+! ee('vim.current.buffer[10000000000] = ""')
+! cb.append(">> BufferAttr")
+! ee('vim.current.buffer.xxx')
+! cb.append(">> BufferSetattr")
+! ee('vim.current.buffer.name = True')
+! ee('vim.current.buffer.xxx = True')
+! cb.append(">> BufferMark")
+! ee('vim.current.buffer.mark(0)')
+! ee('vim.current.buffer.mark("abc")')
+! ee('vim.current.buffer.mark("!")')
+! cb.append(">> BufferRange")
+! ee('vim.current.buffer.range(1, 2, 3)')
+! cb.append("> BufMap")
+! cb.append(">> BufMapItem")
+! ee('vim.buffers[None]')
+! ee('vim.buffers[100000000]')
+! cb.append("> Current")
+! cb.append(">> CurrentGetattr")
+! ee('vim.current.xxx')
+! cb.append(">> CurrentSetattr")
+! ee('vim.current.line = True')
+! ee('vim.current.buffer = True')
+! ee('vim.current.window = True')
+! ee('vim.current.tabpage = True')
+! ee('vim.current.xxx = True')
+! EOF
+! :"
+! :" Test exceptions
+! :fun Exe(e)
+! :   execute a:e
+! :endfun
+! py3 << EOF
+  Exe = vim.bindeval('function("Exe")')
+  ee('vim.command("throw \'abc\'")')
+  ee('Exe("throw \'def\'")')
+*** ../vim-7.3.1065/src/testdir/test87.ok	2013-05-30 13:14:06.000000000 +0200
+--- src/testdir/test87.ok	2013-05-30 13:25:22.000000000 +0200
+***************
+*** 418,426 ****
+  ['a', 'b', 'c']
+  [2, 2]
+  [2, 2]
+! (<class 'vim.error'>, error('abc',))
+! (<class 'vim.error'>, error('def',))
+! (<class 'vim.error'>, error('ghi',))
+! (<class 'vim.error'>, error('Vim(echoerr):jkl',))
+! (<class 'vim.error'>, error('Vim:E492: Not an editor command: xxx_non_existent_command_xxx',))
+! (<class 'vim.error'>, error('Vim:E492: Not an editor command: xxx_non_existent_command_xxx',))
+--- 418,1070 ----
+  ['a', 'b', 'c']
+  [2, 2]
+  [2, 2]
+! > Output
+! >> OutputSetattr
+! del sys.stdout.softspace:(<class 'AttributeError'>, AttributeError("can't delete OutputObject attributes",))
+! sys.stdout.softspace = []:(<class 'TypeError'>, TypeError('softspace must be an integer',))
+! sys.stdout.attr = None:(<class 'AttributeError'>, AttributeError('invalid attribute',))
+! >> OutputWrite
+! sys.stdout.write(None):(<class 'TypeError'>, TypeError("Can't convert 'NoneType' object to str implicitly",))
+! >> OutputWriteLines
+! sys.stdout.writelines(None):(<class 'TypeError'>, TypeError("'NoneType' object is not iterable",))
+! sys.stdout.writelines([1]):(<class 'TypeError'>, TypeError('writelines() requires list of strings',))
+! >>> Testing *Iter* using sys.stdout.writelines(%s)
+! sys.stdout.writelines(FailingIter()):(<class 'NotImplementedError'>, NotImplementedError())
+! sys.stdout.writelines(FailingIterNext()):(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! > VimCommand
+! vim.command(1):(<class 'TypeError'>, TypeError('must be str, not int',))
+! > VimToPython
+! > VimEval
+! vim.eval(1):(<class 'TypeError'>, TypeError('must be str, not int',))
+! > VimEvalPy
+! vim.bindeval(1):(<class 'TypeError'>, TypeError('must be str, not int',))
+! > VimStrwidth
+! vim.strwidth(1):(<class 'TypeError'>, TypeError('must be str, not int',))
+! > Dictionary
+! >> DictionaryConstructor
+! vim.Dictionary("abc"):(<class 'ValueError'>, ValueError('expected sequence element of size 2',))
+! >> DictionarySetattr
+! del d.locked:(<class 'AttributeError'>, AttributeError('cannot delete vim.Dictionary attributes',))
+! d.locked = FailingTrue():(<class 'NotImplementedError'>, NotImplementedError())
+! vim.vvars.locked = False:(<class 'TypeError'>, TypeError('cannot modify fixed dictionary',))
+! d.scope = True:(<class 'AttributeError'>, AttributeError('cannot set this attribute',))
+! d.xxx = True:(<class 'AttributeError'>, AttributeError('cannot set this attribute',))
+! >> _DictionaryItem
+! d.get("a", 2, 3):(<class 'TypeError'>, TypeError('function takes at most 2 arguments (3 given)',))
+! >>> Testing StringToChars using d.get(%s)
+! d.get(1):(<class 'TypeError'>, TypeError('object must be string',))
+! d.get(u"\0"):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! d.get("\0"):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! d.pop("a"):(<class 'KeyError'>, KeyError('a',))
+! dl.pop("a"):(<class 'vim.error'>, error('dict is locked',))
+! >> DictionaryIterNext
+! for i in ned: ned["a"] = 1:(<class 'RuntimeError'>, RuntimeError('hashtab changed during iteration',))
+! >> DictionaryAssItem
+! dl["b"] = 1:(<class 'vim.error'>, error('dict is locked',))
+! >>> Testing StringToChars using d[%s] = 1
+! d[1] = 1:(<class 'TypeError'>, TypeError('object must be string',))
+! d[u"\0"] = 1:(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! d["\0"] = 1:(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing StringToChars using d["a"] = {%s : 1}
+! d["a"] = {1 : 1}:(<class 'TypeError'>, TypeError('object must be string',))
+! d["a"] = {u"\0" : 1}:(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! d["a"] = {"\0" : 1}:(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing StringToChars using d["a"] = {"abc" : {%s : 1}}
+! d["a"] = {"abc" : {1 : 1}}:(<class 'TypeError'>, TypeError('object must be string',))
+! d["a"] = {"abc" : {u"\0" : 1}}:(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! d["a"] = {"abc" : {"\0" : 1}}:(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing StringToChars using d["a"] = {"abc" : Mapping({%s : 1})}
+! d["a"] = {"abc" : Mapping({1 : 1})}:(<class 'TypeError'>, TypeError('object must be string',))
+! d["a"] = {"abc" : Mapping({u"\0" : 1})}:(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! d["a"] = {"abc" : Mapping({"\0" : 1})}:(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing *Iter* using d["a"] = {"abc" : %s}
+! d["a"] = {"abc" : FailingIter()}:(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
+! d["a"] = {"abc" : FailingIterNext()}:(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using d["a"] = {"abc" : %s}
+! d["a"] = {"abc" : None}:(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
+! d["a"] = {"abc" : {"": 1}}:(<class 'ValueError'>, ValueError('empty keys are not allowed',))
+! d["a"] = {"abc" : FailingMapping()}:(<class 'NotImplementedError'>, NotImplementedError())
+! d["a"] = {"abc" : FailingMappingKey()}:(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing StringToChars using d["a"] = Mapping({%s : 1})
+! d["a"] = Mapping({1 : 1}):(<class 'TypeError'>, TypeError('object must be string',))
+! d["a"] = Mapping({u"\0" : 1}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! d["a"] = Mapping({"\0" : 1}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing StringToChars using d["a"] = Mapping({"abc" : {%s : 1}})
+! d["a"] = Mapping({"abc" : {1 : 1}}):(<class 'TypeError'>, TypeError('object must be string',))
+! d["a"] = Mapping({"abc" : {u"\0" : 1}}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! d["a"] = Mapping({"abc" : {"\0" : 1}}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing StringToChars using d["a"] = Mapping({"abc" : Mapping({%s : 1})})
+! d["a"] = Mapping({"abc" : Mapping({1 : 1})}):(<class 'TypeError'>, TypeError('object must be string',))
+! d["a"] = Mapping({"abc" : Mapping({u"\0" : 1})}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! d["a"] = Mapping({"abc" : Mapping({"\0" : 1})}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing *Iter* using d["a"] = Mapping({"abc" : %s})
+! d["a"] = Mapping({"abc" : FailingIter()}):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
+! d["a"] = Mapping({"abc" : FailingIterNext()}):(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using d["a"] = Mapping({"abc" : %s})
+! d["a"] = Mapping({"abc" : None}):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
+! d["a"] = Mapping({"abc" : {"": 1}}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
+! d["a"] = Mapping({"abc" : FailingMapping()}):(<class 'NotImplementedError'>, NotImplementedError())
+! d["a"] = Mapping({"abc" : FailingMappingKey()}):(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing *Iter* using d["a"] = %s
+! d["a"] = FailingIter():(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
+! d["a"] = FailingIterNext():(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using d["a"] = %s
+! d["a"] = None:(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
+! d["a"] = {"": 1}:(<class 'ValueError'>, ValueError('empty keys are not allowed',))
+! d["a"] = FailingMapping():(<class 'NotImplementedError'>, NotImplementedError())
+! d["a"] = FailingMappingKey():(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >> DictionaryUpdate
+! >>> kwargs
+! >>> iter
+! d.update(FailingMapping()):(<class 'NotImplementedError'>, NotImplementedError())
+! d.update([FailingIterNext()]):(<class 'NotImplementedError'>, NotImplementedError())
+! >>> Testing *Iter* using d.update(%s)
+! d.update(FailingIter()):(<class 'NotImplementedError'>, NotImplementedError())
+! d.update(FailingIterNext()):(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing StringToChars using d.update({%s : 1})
+! d.update({1 : 1}):(<class 'TypeError'>, TypeError('object must be string',))
+! d.update({u"\0" : 1}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! d.update({"\0" : 1}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing StringToChars using d.update({"abc" : {%s : 1}})
+! d.update({"abc" : {1 : 1}}):(<class 'TypeError'>, TypeError('object must be string',))
+! d.update({"abc" : {u"\0" : 1}}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! d.update({"abc" : {"\0" : 1}}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing StringToChars using d.update({"abc" : Mapping({%s : 1})})
+! d.update({"abc" : Mapping({1 : 1})}):(<class 'TypeError'>, TypeError('object must be string',))
+! d.update({"abc" : Mapping({u"\0" : 1})}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! d.update({"abc" : Mapping({"\0" : 1})}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing *Iter* using d.update({"abc" : %s})
+! d.update({"abc" : FailingIter()}):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
+! d.update({"abc" : FailingIterNext()}):(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using d.update({"abc" : %s})
+! d.update({"abc" : None}):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
+! d.update({"abc" : {"": 1}}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
+! d.update({"abc" : FailingMapping()}):(<class 'NotImplementedError'>, NotImplementedError())
+! d.update({"abc" : FailingMappingKey()}):(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing StringToChars using d.update(Mapping({%s : 1}))
+! d.update(Mapping({1 : 1})):(<class 'TypeError'>, TypeError('object must be string',))
+! d.update(Mapping({u"\0" : 1})):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! d.update(Mapping({"\0" : 1})):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing StringToChars using d.update(Mapping({"abc" : {%s : 1}}))
+! d.update(Mapping({"abc" : {1 : 1}})):(<class 'TypeError'>, TypeError('object must be string',))
+! d.update(Mapping({"abc" : {u"\0" : 1}})):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! d.update(Mapping({"abc" : {"\0" : 1}})):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing StringToChars using d.update(Mapping({"abc" : Mapping({%s : 1})}))
+! d.update(Mapping({"abc" : Mapping({1 : 1})})):(<class 'TypeError'>, TypeError('object must be string',))
+! d.update(Mapping({"abc" : Mapping({u"\0" : 1})})):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! d.update(Mapping({"abc" : Mapping({"\0" : 1})})):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing *Iter* using d.update(Mapping({"abc" : %s}))
+! d.update(Mapping({"abc" : FailingIter()})):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
+! d.update(Mapping({"abc" : FailingIterNext()})):(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using d.update(Mapping({"abc" : %s}))
+! d.update(Mapping({"abc" : None})):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
+! d.update(Mapping({"abc" : {"": 1}})):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
+! d.update(Mapping({"abc" : FailingMapping()})):(<class 'NotImplementedError'>, NotImplementedError())
+! d.update(Mapping({"abc" : FailingMappingKey()})):(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing *Iter* using d.update(%s)
+! d.update(FailingIter()):(<class 'NotImplementedError'>, NotImplementedError())
+! d.update(FailingIterNext()):(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using d.update(%s)
+! d.update(None):(<class 'TypeError'>, TypeError("'NoneType' object is not iterable",))
+! d.update({"": 1}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
+! d.update(FailingMapping()):(<class 'NotImplementedError'>, NotImplementedError())
+! d.update(FailingMappingKey()):(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing StringToChars using d.update(((%s, 0),))
+! d.update(((1, 0),)):(<class 'TypeError'>, TypeError('object must be string',))
+! d.update(((u"\0", 0),)):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! d.update((("\0", 0),)):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing StringToChars using d.update((("a", {%s : 1}),))
+! d.update((("a", {1 : 1}),)):(<class 'TypeError'>, TypeError('object must be string',))
+! d.update((("a", {u"\0" : 1}),)):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! d.update((("a", {"\0" : 1}),)):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing StringToChars using d.update((("a", {"abc" : {%s : 1}}),))
+! d.update((("a", {"abc" : {1 : 1}}),)):(<class 'TypeError'>, TypeError('object must be string',))
+! d.update((("a", {"abc" : {u"\0" : 1}}),)):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! d.update((("a", {"abc" : {"\0" : 1}}),)):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing StringToChars using d.update((("a", {"abc" : Mapping({%s : 1})}),))
+! d.update((("a", {"abc" : Mapping({1 : 1})}),)):(<class 'TypeError'>, TypeError('object must be string',))
+! d.update((("a", {"abc" : Mapping({u"\0" : 1})}),)):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! d.update((("a", {"abc" : Mapping({"\0" : 1})}),)):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing *Iter* using d.update((("a", {"abc" : %s}),))
+! d.update((("a", {"abc" : FailingIter()}),)):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
+! d.update((("a", {"abc" : FailingIterNext()}),)):(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using d.update((("a", {"abc" : %s}),))
+! d.update((("a", {"abc" : None}),)):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
+! d.update((("a", {"abc" : {"": 1}}),)):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
+! d.update((("a", {"abc" : FailingMapping()}),)):(<class 'NotImplementedError'>, NotImplementedError())
+! d.update((("a", {"abc" : FailingMappingKey()}),)):(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing StringToChars using d.update((("a", Mapping({%s : 1})),))
+! d.update((("a", Mapping({1 : 1})),)):(<class 'TypeError'>, TypeError('object must be string',))
+! d.update((("a", Mapping({u"\0" : 1})),)):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! d.update((("a", Mapping({"\0" : 1})),)):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing StringToChars using d.update((("a", Mapping({"abc" : {%s : 1}})),))
+! d.update((("a", Mapping({"abc" : {1 : 1}})),)):(<class 'TypeError'>, TypeError('object must be string',))
+! d.update((("a", Mapping({"abc" : {u"\0" : 1}})),)):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! d.update((("a", Mapping({"abc" : {"\0" : 1}})),)):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing StringToChars using d.update((("a", Mapping({"abc" : Mapping({%s : 1})})),))
+! d.update((("a", Mapping({"abc" : Mapping({1 : 1})})),)):(<class 'TypeError'>, TypeError('object must be string',))
+! d.update((("a", Mapping({"abc" : Mapping({u"\0" : 1})})),)):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! d.update((("a", Mapping({"abc" : Mapping({"\0" : 1})})),)):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing *Iter* using d.update((("a", Mapping({"abc" : %s})),))
+! d.update((("a", Mapping({"abc" : FailingIter()})),)):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
+! d.update((("a", Mapping({"abc" : FailingIterNext()})),)):(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using d.update((("a", Mapping({"abc" : %s})),))
+! d.update((("a", Mapping({"abc" : None})),)):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
+! d.update((("a", Mapping({"abc" : {"": 1}})),)):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
+! d.update((("a", Mapping({"abc" : FailingMapping()})),)):(<class 'NotImplementedError'>, NotImplementedError())
+! d.update((("a", Mapping({"abc" : FailingMappingKey()})),)):(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing *Iter* using d.update((("a", %s),))
+! d.update((("a", FailingIter()),)):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
+! d.update((("a", FailingIterNext()),)):(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using d.update((("a", %s),))
+! d.update((("a", None),)):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
+! d.update((("a", {"": 1}),)):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
+! d.update((("a", FailingMapping()),)):(<class 'NotImplementedError'>, NotImplementedError())
+! d.update((("a", FailingMappingKey()),)):(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >> DictionaryPopItem
+! d.popitem(1, 2):(<class 'TypeError'>, TypeError('function takes exactly 1 argument (2 given)',))
+! >> DictionaryHasKey
+! d.has_key():(<class 'TypeError'>, TypeError('function takes exactly 1 argument (0 given)',))
+! > List
+! >> ListConstructor
+! vim.List(1, 2):(<class 'TypeError'>, TypeError('function takes at most 1 argument (2 given)',))
+! vim.List(a=1):(<class 'TypeError'>, TypeError('list constructor does not accept keyword arguments',))
+! >>> Testing *Iter* using vim.List(%s)
+! vim.List(FailingIter()):(<class 'NotImplementedError'>, NotImplementedError())
+! vim.List(FailingIterNext()):(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing StringToChars using vim.List([{%s : 1}])
+! vim.List([{1 : 1}]):(<class 'TypeError'>, TypeError('object must be string',))
+! vim.List([{u"\0" : 1}]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! vim.List([{"\0" : 1}]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing StringToChars using vim.List([{"abc" : {%s : 1}}])
+! vim.List([{"abc" : {1 : 1}}]):(<class 'TypeError'>, TypeError('object must be string',))
+! vim.List([{"abc" : {u"\0" : 1}}]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! vim.List([{"abc" : {"\0" : 1}}]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing StringToChars using vim.List([{"abc" : Mapping({%s : 1})}])
+! vim.List([{"abc" : Mapping({1 : 1})}]):(<class 'TypeError'>, TypeError('object must be string',))
+! vim.List([{"abc" : Mapping({u"\0" : 1})}]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! vim.List([{"abc" : Mapping({"\0" : 1})}]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing *Iter* using vim.List([{"abc" : %s}])
+! vim.List([{"abc" : FailingIter()}]):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
+! vim.List([{"abc" : FailingIterNext()}]):(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using vim.List([{"abc" : %s}])
+! vim.List([{"abc" : None}]):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
+! vim.List([{"abc" : {"": 1}}]):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
+! vim.List([{"abc" : FailingMapping()}]):(<class 'NotImplementedError'>, NotImplementedError())
+! vim.List([{"abc" : FailingMappingKey()}]):(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing StringToChars using vim.List([Mapping({%s : 1})])
+! vim.List([Mapping({1 : 1})]):(<class 'TypeError'>, TypeError('object must be string',))
+! vim.List([Mapping({u"\0" : 1})]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! vim.List([Mapping({"\0" : 1})]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing StringToChars using vim.List([Mapping({"abc" : {%s : 1}})])
+! vim.List([Mapping({"abc" : {1 : 1}})]):(<class 'TypeError'>, TypeError('object must be string',))
+! vim.List([Mapping({"abc" : {u"\0" : 1}})]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! vim.List([Mapping({"abc" : {"\0" : 1}})]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing StringToChars using vim.List([Mapping({"abc" : Mapping({%s : 1})})])
+! vim.List([Mapping({"abc" : Mapping({1 : 1})})]):(<class 'TypeError'>, TypeError('object must be string',))
+! vim.List([Mapping({"abc" : Mapping({u"\0" : 1})})]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! vim.List([Mapping({"abc" : Mapping({"\0" : 1})})]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing *Iter* using vim.List([Mapping({"abc" : %s})])
+! vim.List([Mapping({"abc" : FailingIter()})]):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
+! vim.List([Mapping({"abc" : FailingIterNext()})]):(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using vim.List([Mapping({"abc" : %s})])
+! vim.List([Mapping({"abc" : None})]):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
+! vim.List([Mapping({"abc" : {"": 1}})]):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
+! vim.List([Mapping({"abc" : FailingMapping()})]):(<class 'NotImplementedError'>, NotImplementedError())
+! vim.List([Mapping({"abc" : FailingMappingKey()})]):(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing *Iter* using vim.List([%s])
+! vim.List([FailingIter()]):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
+! vim.List([FailingIterNext()]):(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using vim.List([%s])
+! vim.List([None]):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
+! vim.List([{"": 1}]):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
+! vim.List([FailingMapping()]):(<class 'NotImplementedError'>, NotImplementedError())
+! vim.List([FailingMappingKey()]):(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >> ListItem
+! l[1000]:(<class 'IndexError'>, IndexError('list index out of range',))
+! >> ListAssItem
+! ll[1] = 2:(<class 'vim.error'>, error('list is locked',))
+! l[1000] = 3:(<class 'IndexError'>, IndexError('list index out of range',))
+! >> ListAssSlice
+! ll[1:100] = "abc":(<class 'vim.error'>, error('list is locked',))
+! >>> Testing *Iter* using l[:] = %s
+! l[:] = FailingIter():(<class 'NotImplementedError'>, NotImplementedError())
+! l[:] = FailingIterNext()::(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing StringToChars using l[:] = [{%s : 1}]
+! l[:] = [{1 : 1}]:(<class 'TypeError'>, TypeError('object must be string',))
+! l[:] = [{u"\0" : 1}]:(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! l[:] = [{"\0" : 1}]:(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing StringToChars using l[:] = [{"abc" : {%s : 1}}]
+! l[:] = [{"abc" : {1 : 1}}]:(<class 'TypeError'>, TypeError('object must be string',))
+! l[:] = [{"abc" : {u"\0" : 1}}]:(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! l[:] = [{"abc" : {"\0" : 1}}]:(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing StringToChars using l[:] = [{"abc" : Mapping({%s : 1})}]
+! l[:] = [{"abc" : Mapping({1 : 1})}]:(<class 'TypeError'>, TypeError('object must be string',))
+! l[:] = [{"abc" : Mapping({u"\0" : 1})}]:(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! l[:] = [{"abc" : Mapping({"\0" : 1})}]:(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing *Iter* using l[:] = [{"abc" : %s}]
+! l[:] = [{"abc" : FailingIter()}]:(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
+! l[:] = [{"abc" : FailingIterNext()}]:(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using l[:] = [{"abc" : %s}]
+! l[:] = [{"abc" : None}]:(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
+! l[:] = [{"abc" : {"": 1}}]:(<class 'ValueError'>, ValueError('empty keys are not allowed',))
+! l[:] = [{"abc" : FailingMapping()}]:(<class 'NotImplementedError'>, NotImplementedError())
+! l[:] = [{"abc" : FailingMappingKey()}]:(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing StringToChars using l[:] = [Mapping({%s : 1})]
+! l[:] = [Mapping({1 : 1})]:(<class 'TypeError'>, TypeError('object must be string',))
+! l[:] = [Mapping({u"\0" : 1})]:(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! l[:] = [Mapping({"\0" : 1})]:(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing StringToChars using l[:] = [Mapping({"abc" : {%s : 1}})]
+! l[:] = [Mapping({"abc" : {1 : 1}})]:(<class 'TypeError'>, TypeError('object must be string',))
+! l[:] = [Mapping({"abc" : {u"\0" : 1}})]:(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! l[:] = [Mapping({"abc" : {"\0" : 1}})]:(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing StringToChars using l[:] = [Mapping({"abc" : Mapping({%s : 1})})]
+! l[:] = [Mapping({"abc" : Mapping({1 : 1})})]:(<class 'TypeError'>, TypeError('object must be string',))
+! l[:] = [Mapping({"abc" : Mapping({u"\0" : 1})})]:(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! l[:] = [Mapping({"abc" : Mapping({"\0" : 1})})]:(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing *Iter* using l[:] = [Mapping({"abc" : %s})]
+! l[:] = [Mapping({"abc" : FailingIter()})]:(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
+! l[:] = [Mapping({"abc" : FailingIterNext()})]:(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using l[:] = [Mapping({"abc" : %s})]
+! l[:] = [Mapping({"abc" : None})]:(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
+! l[:] = [Mapping({"abc" : {"": 1}})]:(<class 'ValueError'>, ValueError('empty keys are not allowed',))
+! l[:] = [Mapping({"abc" : FailingMapping()})]:(<class 'NotImplementedError'>, NotImplementedError())
+! l[:] = [Mapping({"abc" : FailingMappingKey()})]:(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing *Iter* using l[:] = [%s]
+! l[:] = [FailingIter()]:(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
+! l[:] = [FailingIterNext()]:(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using l[:] = [%s]
+! l[:] = [None]:(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
+! l[:] = [{"": 1}]:(<class 'ValueError'>, ValueError('empty keys are not allowed',))
+! l[:] = [FailingMapping()]:(<class 'NotImplementedError'>, NotImplementedError())
+! l[:] = [FailingMappingKey()]:(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >> ListConcatInPlace
+! >>> Testing *Iter* using l.extend(%s)
+! l.extend(FailingIter()):(<class 'NotImplementedError'>, NotImplementedError())
+! l.extend(FailingIterNext()):(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing StringToChars using l.extend([{%s : 1}])
+! l.extend([{1 : 1}]):(<class 'TypeError'>, TypeError('object must be string',))
+! l.extend([{u"\0" : 1}]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! l.extend([{"\0" : 1}]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing StringToChars using l.extend([{"abc" : {%s : 1}}])
+! l.extend([{"abc" : {1 : 1}}]):(<class 'TypeError'>, TypeError('object must be string',))
+! l.extend([{"abc" : {u"\0" : 1}}]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! l.extend([{"abc" : {"\0" : 1}}]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing StringToChars using l.extend([{"abc" : Mapping({%s : 1})}])
+! l.extend([{"abc" : Mapping({1 : 1})}]):(<class 'TypeError'>, TypeError('object must be string',))
+! l.extend([{"abc" : Mapping({u"\0" : 1})}]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! l.extend([{"abc" : Mapping({"\0" : 1})}]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing *Iter* using l.extend([{"abc" : %s}])
+! l.extend([{"abc" : FailingIter()}]):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
+! l.extend([{"abc" : FailingIterNext()}]):(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using l.extend([{"abc" : %s}])
+! l.extend([{"abc" : None}]):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
+! l.extend([{"abc" : {"": 1}}]):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
+! l.extend([{"abc" : FailingMapping()}]):(<class 'NotImplementedError'>, NotImplementedError())
+! l.extend([{"abc" : FailingMappingKey()}]):(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing StringToChars using l.extend([Mapping({%s : 1})])
+! l.extend([Mapping({1 : 1})]):(<class 'TypeError'>, TypeError('object must be string',))
+! l.extend([Mapping({u"\0" : 1})]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! l.extend([Mapping({"\0" : 1})]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing StringToChars using l.extend([Mapping({"abc" : {%s : 1}})])
+! l.extend([Mapping({"abc" : {1 : 1}})]):(<class 'TypeError'>, TypeError('object must be string',))
+! l.extend([Mapping({"abc" : {u"\0" : 1}})]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! l.extend([Mapping({"abc" : {"\0" : 1}})]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing StringToChars using l.extend([Mapping({"abc" : Mapping({%s : 1})})])
+! l.extend([Mapping({"abc" : Mapping({1 : 1})})]):(<class 'TypeError'>, TypeError('object must be string',))
+! l.extend([Mapping({"abc" : Mapping({u"\0" : 1})})]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! l.extend([Mapping({"abc" : Mapping({"\0" : 1})})]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing *Iter* using l.extend([Mapping({"abc" : %s})])
+! l.extend([Mapping({"abc" : FailingIter()})]):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
+! l.extend([Mapping({"abc" : FailingIterNext()})]):(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using l.extend([Mapping({"abc" : %s})])
+! l.extend([Mapping({"abc" : None})]):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
+! l.extend([Mapping({"abc" : {"": 1}})]):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
+! l.extend([Mapping({"abc" : FailingMapping()})]):(<class 'NotImplementedError'>, NotImplementedError())
+! l.extend([Mapping({"abc" : FailingMappingKey()})]):(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing *Iter* using l.extend([%s])
+! l.extend([FailingIter()]):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
+! l.extend([FailingIterNext()]):(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using l.extend([%s])
+! l.extend([None]):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
+! l.extend([{"": 1}]):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
+! l.extend([FailingMapping()]):(<class 'NotImplementedError'>, NotImplementedError())
+! l.extend([FailingMappingKey()]):(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >> ListSetattr
+! del l.locked:(<class 'AttributeError'>, AttributeError('cannot delete vim.List attributes',))
+! l.locked = FailingTrue():(<class 'NotImplementedError'>, NotImplementedError())
+! l.xxx = True:(<class 'AttributeError'>, AttributeError('cannot set this attribute',))
+! > Function
+! >> FunctionConstructor
+! vim.Function("123"):(<class 'ValueError'>, ValueError('unnamed function does not exist',))
+! vim.Function("xxx_non_existent_function_xxx"):(<class 'ValueError'>, ValueError('function does not exist',))
+! vim.Function("xxx#non#existent#function#xxx"):(<class 'ValueError'>, ValueError('function does not exist',))
+! >> FunctionCall
+! >>> Testing StringToChars using f({%s : 1})
+! f({1 : 1}):(<class 'TypeError'>, TypeError('object must be string',))
+! f({u"\0" : 1}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! f({"\0" : 1}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing StringToChars using f({"abc" : {%s : 1}})
+! f({"abc" : {1 : 1}}):(<class 'TypeError'>, TypeError('object must be string',))
+! f({"abc" : {u"\0" : 1}}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! f({"abc" : {"\0" : 1}}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing StringToChars using f({"abc" : Mapping({%s : 1})})
+! f({"abc" : Mapping({1 : 1})}):(<class 'TypeError'>, TypeError('object must be string',))
+! f({"abc" : Mapping({u"\0" : 1})}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! f({"abc" : Mapping({"\0" : 1})}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing *Iter* using f({"abc" : %s})
+! f({"abc" : FailingIter()}):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
+! f({"abc" : FailingIterNext()}):(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using f({"abc" : %s})
+! f({"abc" : None}):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
+! f({"abc" : {"": 1}}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
+! f({"abc" : FailingMapping()}):(<class 'NotImplementedError'>, NotImplementedError())
+! f({"abc" : FailingMappingKey()}):(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing StringToChars using f(Mapping({%s : 1}))
+! f(Mapping({1 : 1})):(<class 'TypeError'>, TypeError('object must be string',))
+! f(Mapping({u"\0" : 1})):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! f(Mapping({"\0" : 1})):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing StringToChars using f(Mapping({"abc" : {%s : 1}}))
+! f(Mapping({"abc" : {1 : 1}})):(<class 'TypeError'>, TypeError('object must be string',))
+! f(Mapping({"abc" : {u"\0" : 1}})):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! f(Mapping({"abc" : {"\0" : 1}})):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing StringToChars using f(Mapping({"abc" : Mapping({%s : 1})}))
+! f(Mapping({"abc" : Mapping({1 : 1})})):(<class 'TypeError'>, TypeError('object must be string',))
+! f(Mapping({"abc" : Mapping({u"\0" : 1})})):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! f(Mapping({"abc" : Mapping({"\0" : 1})})):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing *Iter* using f(Mapping({"abc" : %s}))
+! f(Mapping({"abc" : FailingIter()})):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
+! f(Mapping({"abc" : FailingIterNext()})):(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using f(Mapping({"abc" : %s}))
+! f(Mapping({"abc" : None})):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
+! f(Mapping({"abc" : {"": 1}})):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
+! f(Mapping({"abc" : FailingMapping()})):(<class 'NotImplementedError'>, NotImplementedError())
+! f(Mapping({"abc" : FailingMappingKey()})):(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing *Iter* using f(%s)
+! f(FailingIter()):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
+! f(FailingIterNext()):(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using f(%s)
+! f(None):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
+! f({"": 1}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
+! f(FailingMapping()):(<class 'NotImplementedError'>, NotImplementedError())
+! f(FailingMappingKey()):(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing StringToChars using fd(self={%s : 1})
+! fd(self={1 : 1}):(<class 'TypeError'>, TypeError('object must be string',))
+! fd(self={u"\0" : 1}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! fd(self={"\0" : 1}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing StringToChars using fd(self={"abc" : {%s : 1}})
+! fd(self={"abc" : {1 : 1}}):(<class 'TypeError'>, TypeError('object must be string',))
+! fd(self={"abc" : {u"\0" : 1}}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! fd(self={"abc" : {"\0" : 1}}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing StringToChars using fd(self={"abc" : Mapping({%s : 1})})
+! fd(self={"abc" : Mapping({1 : 1})}):(<class 'TypeError'>, TypeError('object must be string',))
+! fd(self={"abc" : Mapping({u"\0" : 1})}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! fd(self={"abc" : Mapping({"\0" : 1})}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing *Iter* using fd(self={"abc" : %s})
+! fd(self={"abc" : FailingIter()}):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
+! fd(self={"abc" : FailingIterNext()}):(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using fd(self={"abc" : %s})
+! fd(self={"abc" : None}):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
+! fd(self={"abc" : {"": 1}}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
+! fd(self={"abc" : FailingMapping()}):(<class 'NotImplementedError'>, NotImplementedError())
+! fd(self={"abc" : FailingMappingKey()}):(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing StringToChars using fd(self=Mapping({%s : 1}))
+! fd(self=Mapping({1 : 1})):(<class 'TypeError'>, TypeError('object must be string',))
+! fd(self=Mapping({u"\0" : 1})):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! fd(self=Mapping({"\0" : 1})):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing StringToChars using fd(self=Mapping({"abc" : {%s : 1}}))
+! fd(self=Mapping({"abc" : {1 : 1}})):(<class 'TypeError'>, TypeError('object must be string',))
+! fd(self=Mapping({"abc" : {u"\0" : 1}})):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! fd(self=Mapping({"abc" : {"\0" : 1}})):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing StringToChars using fd(self=Mapping({"abc" : Mapping({%s : 1})}))
+! fd(self=Mapping({"abc" : Mapping({1 : 1})})):(<class 'TypeError'>, TypeError('object must be string',))
+! fd(self=Mapping({"abc" : Mapping({u"\0" : 1})})):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! fd(self=Mapping({"abc" : Mapping({"\0" : 1})})):(<class 'TypeError'>, TypeError('expected bytes with no null',))
+! <<< Finished
+! >>> Testing *Iter* using fd(self=Mapping({"abc" : %s}))
+! fd(self=Mapping({"abc" : FailingIter()})):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
+! fd(self=Mapping({"abc" : FailingIterNext()})):(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyObject using fd(self=Mapping({"abc" : %s}))
+! fd(self=Mapping({"abc" : None})):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
+! fd(self=Mapping({"abc" : {"": 1}})):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
+! fd(self=Mapping({"abc" : FailingMapping()})):(<class 'NotImplementedError'>, NotImplementedError())
+! fd(self=Mapping({"abc" : FailingMappingKey()})):(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing *Iter* using fd(self=%s)
+! fd(self=FailingIter()):(<class 'TypeError'>, TypeError('unable to convert object to vim dictionary',))
+! fd(self=FailingIterNext()):(<class 'TypeError'>, TypeError('unable to convert object to vim dictionary',))
+! <<< Finished
+! >>> Testing ConvertFromPyObject using fd(self=%s)
+! fd(self=None):(<class 'TypeError'>, TypeError('unable to convert object to vim dictionary',))
+! fd(self={"": 1}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
+! fd(self=FailingMapping()):(<class 'NotImplementedError'>, NotImplementedError())
+! fd(self=FailingMappingKey()):(<class 'NotImplementedError'>, NotImplementedError())
+! <<< Finished
+! >>> Testing ConvertFromPyMapping using fd(self=%s)
+! fd(self=[]):(<class 'AttributeError'>, AttributeError("'list' object has no attribute 'keys'",))
+! <<< Finished
+! > TabPage
+! >> TabPageAttr
+! vim.current.tabpage.xxx:(<class 'AttributeError'>, AttributeError("'vim.tabpage' object has no attribute 'xxx'",))
+! > TabList
+! >> TabListItem
+! vim.tabpages[1000]:(<class 'IndexError'>, IndexError('no such tab page',))
+! > Window
+! >> WindowAttr
+! vim.current.window.xxx:(<class 'AttributeError'>, AttributeError("'vim.window' object has no attribute 'xxx'",))
+! >> WindowSetattr
+! vim.current.window.buffer = 0:(<class 'TypeError'>, TypeError('readonly attribute',))
+! vim.current.window.cursor = (10000000000, 100000000):(<class 'vim.error'>, error('cursor position outside buffer',))
+! vim.current.window.cursor = True:(<class 'TypeError'>, TypeError('argument must be 2-item sequence, not bool',))
+! vim.current.window.height = "abc":(<class 'TypeError'>, TypeError('an integer is required',))
+! vim.current.window.width  = "abc":(<class 'TypeError'>, TypeError('an integer is required',))
+! vim.current.window.xxxxxx = True:(<class 'AttributeError'>, AttributeError('xxxxxx',))
+! > WinList
+! >> WinListItem
+! vim.windows[1000]:(<class 'IndexError'>, IndexError('no such window',))
+! > Buffer
+! >> StringToLine (indirect)
+! vim.current.buffer[0] = "\na":(<class 'vim.error'>, error('string cannot contain newlines',))
+! >> SetBufferLine (indirect)
+! vim.current.buffer[0] = True:(<class 'TypeError'>, TypeError('bad argument type for built-in operation',))
+! >> SetBufferLines (indirect)
+! vim.current.buffer[:] = True:(<class 'TypeError'>, TypeError('bad argument type for built-in operation',))
+! vim.current.buffer[:] = ["\na", "bc"]:(<class 'vim.error'>, error('string cannot contain newlines',))
+! >> InsertBufferLines (indirect)
+! vim.current.buffer.append(None):(<class 'TypeError'>, TypeError('bad argument type for built-in operation',))
+! vim.current.buffer.append(["\na", "bc"]):(<class 'vim.error'>, error('string cannot contain newlines',))
+! vim.current.buffer.append("\nbc"):(<class 'vim.error'>, error('string cannot contain newlines',))
+! >> RBItem
+! vim.current.buffer[10000000000]:(<class 'IndexError'>, IndexError('line number out of range',))
+! >> RBAsItem
+! vim.current.buffer[10000000000] = "":(<class 'IndexError'>, IndexError('line number out of range',))
+! >> BufferAttr
+! vim.current.buffer.xxx:(<class 'AttributeError'>, AttributeError("'vim.buffer' object has no attribute 'xxx'",))
+! >> BufferSetattr
+! vim.current.buffer.name = True:(<class 'TypeError'>, TypeError('object must be string',))
+! vim.current.buffer.xxx = True:(<class 'AttributeError'>, AttributeError('xxx',))
+! >> BufferMark
+! vim.current.buffer.mark(0):(<class 'TypeError'>, TypeError('must be str, not int',))
+! vim.current.buffer.mark("abc"):(<class 'ValueError'>, ValueError('mark name must be a single character',))
+! vim.current.buffer.mark("!"):(<class 'vim.error'>, error('invalid mark name',))
+! >> BufferRange
+! vim.current.buffer.range(1, 2, 3):(<class 'TypeError'>, TypeError('function takes exactly 2 arguments (3 given)',))
+! > BufMap
+! >> BufMapItem
+! vim.buffers[None]:(<class 'TypeError'>, TypeError('key must be integer',))
+! vim.buffers[100000000]:(<class 'KeyError'>, KeyError(100000000,))
+! > Current
+! >> CurrentGetattr
+! vim.current.xxx:(<class 'AttributeError'>, AttributeError("'vim.currentdata' object has no attribute 'xxx'",))
+! >> CurrentSetattr
+! vim.current.line = True:(<class 'TypeError'>, TypeError('bad argument type for built-in operation',))
+! vim.current.buffer = True:(<class 'TypeError'>, TypeError('expected vim.Buffer object',))
+! vim.current.window = True:(<class 'TypeError'>, TypeError('expected vim.Window object',))
+! vim.current.tabpage = True:(<class 'TypeError'>, TypeError('expected vim.TabPage object',))
+! vim.current.xxx = True:(<class 'AttributeError'>, AttributeError('xxx',))
+! vim.command("throw 'abc'"):(<class 'vim.error'>, error('abc',))
+! Exe("throw 'def'"):(<class 'vim.error'>, error('def',))
+! vim.eval("Exe('throw ''ghi''')"):(<class 'vim.error'>, error('ghi',))
+! vim.eval("Exe('echoerr ''jkl''')"):(<class 'vim.error'>, error('Vim(echoerr):jkl',))
+! vim.eval("Exe('xxx_non_existent_command_xxx')"):(<class 'vim.error'>, error('Vim:E492: Not an editor command: xxx_non_existent_command_xxx',))
+! vim.bindeval("Exe('xxx_non_existent_command_xxx')"):(<class 'vim.error'>, error('Vim:E492: Not an editor command: xxx_non_existent_command_xxx',))
+*** ../vim-7.3.1065/src/version.c	2013-05-30 13:22:07.000000000 +0200
+--- src/version.c	2013-05-30 13:24:41.000000000 +0200
+***************
+*** 730,731 ****
+--- 730,733 ----
+  {   /* Add new patch number below this line */
++ /**/
++     1066,
+  /**/
+
+-- 
+If Pacman had affected us as kids we'd be running around in dark rooms,
+munching pills and listening to repetitive music.
+                       -- Marcus Brigstocke
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///


More information about the scm-commits mailing list