To: vim_dev@googlegroups.com
Subject: Patch 7.3.659
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------
Patch 7.3.659
Problem: Recent Python changes are not tested.
Solution: Add tests for Python bindings. (ZyX)
Files: src/testdir/test86.in, src/testdir/test86.ok,
src/testdir/test87.in, src/testdir/test87.ok
*** ../vim-7.3.658/src/testdir/test86.in 2012-06-29 12:54:32.000000000 +0200
--- src/testdir/test86.in 2012-09-05 19:11:36.000000000 +0200
***************
*** 176,203 ****
:else
: $put ='[0.0, 0.0]'
:endif
:"
:" pyeval()
:let l=pyeval('range(3)')
:$put =string(l)
:let d=pyeval('{"a": "b", "c": 1, "d": ["e"]}')
:$put =sort(items(d))
- :try
- : let undef=pyeval('undefined_name')
- :catch
- : $put =v:exception[:13]
- :endtry
- :try
- : let vim=pyeval('vim')
- :catch
- : $put =v:exception[:13]
- :endtry
:if has('float')
: let f=pyeval('0.0')
: $put =string(f)
:else
: $put ='0.0'
:endif
:endfun
:"
:call Test()
--- 176,237 ----
:else
: $put ='[0.0, 0.0]'
:endif
+ :let messages=[]
+ :py <<EOF
+ d=vim.bindeval('{}')
+ m=vim.bindeval('messages')
+ try:
+ d['abc']
+ except Exception as e:
+ m.extend([e.__class__.__name__])
+
+ try:
+ d['abc']="\0"
+ except Exception as e:
+ m.extend([e.__class__.__name__])
+
+ try:
+ d['abc']=vim
+ except Exception as e:
+ m.extend([e.__class__.__name__])
+
+ try:
+ d['']=1
+ except Exception as e:
+ m.extend([e.__class__.__name__])
+
+ try:
+ d['a\0b']=1
+ except Exception as e:
+ m.extend([e.__class__.__name__])
+
+ try:
+ d[b'a\0b']=1
+ except Exception as e:
+ m.extend([e.__class__.__name__])
+ EOF
+ :$put =messages
:"
:" pyeval()
:let l=pyeval('range(3)')
:$put =string(l)
:let d=pyeval('{"a": "b", "c": 1, "d": ["e"]}')
:$put =sort(items(d))
:if has('float')
: let f=pyeval('0.0')
: $put =string(f)
:else
: $put ='0.0'
:endif
+ :" Invalid values:
+ :for e in ['"\0"', '{"\0": 1}', 'undefined_name', 'vim']
+ : try
+ : let v=pyeval(e)
+ : catch
+ : let toput=e.":\t".v:exception[:13]
+ : $put =toput
+ : endtry
+ :endfor
:endfun
:"
:call Test()
*** ../vim-7.3.658/src/testdir/test86.ok 2012-06-29 12:54:32.000000000 +0200
--- src/testdir/test86.ok 2012-09-05 19:11:36.000000000 +0200
***************
*** 38,47 ****
Vim(python):E725:
Vim(python):E117:
[0.0, 0.0]
[0, 1, 2]
['a', 'b']
['c', 1]
['d', ['e']]
- Vim(let):E858:
- Vim(let):E859:
0.0
--- 38,55 ----
Vim(python):E725:
Vim(python):E117:
[0.0, 0.0]
+ IndexError
+ TypeError
+ TypeError
+ ValueError
+ TypeError
+ TypeError
[0, 1, 2]
['a', 'b']
['c', 1]
['d', ['e']]
0.0
+ "\0": Vim(let):E859:
+ {"\0": 1}: Vim(let):E859:
+ undefined_name: Vim(let):E858:
+ vim: Vim(let):E859:
*** ../vim-7.3.658/src/testdir/test87.in 2012-06-29 12:54:32.000000000 +0200
--- src/testdir/test87.in 2012-09-05 19:11:36.000000000 +0200
***************
*** 176,203 ****
:else
: $put ='[0.0, 0.0]'
:endif
:"
:" py3eval()
:let l=py3eval('[0, 1, 2]')
:$put =string(l)
:let d=py3eval('{"a": "b", "c": 1, "d": ["e"]}')
:$put =sort(items(d))
- :try
- : let undef=py3eval('undefined_name')
- :catch
- : $put =v:exception[:13]
- :endtry
- :try
- : let vim=py3eval('vim')
- :catch
- : $put =v:exception[:13]
- :endtry
:if has('float')
: let f=py3eval('0.0')
: $put =string(f)
:else
: $put ='0.0'
:endif
:endfun
:"
:call Test()
--- 176,237 ----
:else
: $put ='[0.0, 0.0]'
:endif
+ :let messages=[]
+ :py3 <<EOF
+ d=vim.bindeval('{}')
+ m=vim.bindeval('messages')
+ try:
+ d['abc']
+ except Exception as e:
+ m.extend([e.__class__.__name__])
+
+ try:
+ d['abc']="\0"
+ except Exception as e:
+ m.extend([e.__class__.__name__])
+
+ try:
+ d['abc']=vim
+ except Exception as e:
+ m.extend([e.__class__.__name__])
+
+ try:
+ d['']=1
+ except Exception as e:
+ m.extend([e.__class__.__name__])
+
+ try:
+ d['a\0b']=1
+ except Exception as e:
+ m.extend([e.__class__.__name__])
+
+ try:
+ d[b'a\0b']=1
+ except Exception as e:
+ m.extend([e.__class__.__name__])
+ EOF
+ :$put =messages
:"
:" py3eval()
:let l=py3eval('[0, 1, 2]')
:$put =string(l)
:let d=py3eval('{"a": "b", "c": 1, "d": ["e"]}')
:$put =sort(items(d))
:if has('float')
: let f=py3eval('0.0')
: $put =string(f)
:else
: $put ='0.0'
:endif
+ :" Invalid values:
+ :for e in ['"\0"', '{"\0": 1}', 'undefined_name', 'vim']
+ : try
+ : let v=py3eval(e)
+ : catch
+ : let toput=e.":\t".v:exception[:13]
+ : $put =toput
+ : endtry
+ :endfor
:endfun
:"
:call Test()
*** ../vim-7.3.658/src/testdir/test87.ok 2012-06-29 12:54:32.000000000 +0200
--- src/testdir/test87.ok 2012-09-05 19:11:36.000000000 +0200
***************
*** 38,47 ****
Vim(py3):E725:
Vim(py3):E117:
[0.0, 0.0]
[0, 1, 2]
['a', 'b']
['c', 1]
['d', ['e']]
- Vim(let):E860:
- Vim(let):E861:
0.0
--- 38,55 ----
Vim(py3):E725:
Vim(py3):E117:
[0.0, 0.0]
+ IndexError
+ TypeError
+ TypeError
+ ValueError
+ TypeError
+ TypeError
[0, 1, 2]
['a', 'b']
['c', 1]
['d', ['e']]
0.0
+ "\0": Vim(let):E861:
+ {"\0": 1}: Vim(let):E861:
+ undefined_name: Vim(let):E860:
+ vim: Vim(let):E861:
*** ../vim-7.3.658/src/version.c 2012-09-05 19:09:06.000000000 +0200
--- src/version.c 2012-09-05 19:16:52.000000000 +0200
***************
*** 721,722 ****
--- 721,724 ----
{ /* Add new patch number below this line */
+ /**/
+ 659,
/**/
--
DEAD PERSON: I don't want to go in the cart!
CUSTOMER: Oh, don't be such a baby.
MORTICIAN: I can't take him...
DEAD PERSON: I feel fine!
CUSTOMER: Oh, do us a favor...
MORTICIAN: I can't.
The Quest for the Holy Grail (Monty Python)
/// Bram Moolenaar -- Bram@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 ///