воскресенье, 2 сентября 2012 г., 16:44:42 UTC+4 пользователь Bram Moolenaar 
написал:
> > Do not allow empty keys when creating vim dictionaries from python objects
> > Throw IndexError when dictionary item was not found, not vim.error
> 
> Thanks.
> 
> Are there any tests for this functionality?  It's always good to verify
> this doesn't break again later.

Here are tests for all my recent if_py* patches. Everything is available on 
https://bitbucket.org/ZyX_I/vim as well.

# HG changeset patch
# User ZyX <[email protected]>
# Date 1346595557 -14400
# Node ID c12dca9e7d9a61c7b96457f147685f57c2cef01f
# Parent  d998aa5da5a200f26fd3fb5cdc5b2ba503d22e46
Add tests for recent if_py* patches

diff -r d998aa5da5a2 -r c12dca9e7d9a src/testdir/test86.in
--- a/src/testdir/test86.in     Sun Sep 02 17:19:40 2012 +0400
+++ b/src/testdir/test86.in     Sun Sep 02 18:18:52 2012 +0400
@@ -176,28 +176,62 @@
 :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))
-: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
+:" 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()
diff -r d998aa5da5a2 -r c12dca9e7d9a src/testdir/test86.ok
--- a/src/testdir/test86.ok     Sun Sep 02 17:19:40 2012 +0400
+++ b/src/testdir/test86.ok     Sun Sep 02 18:18:52 2012 +0400
@@ -38,10 +38,18 @@
 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']]
-Vim(let):E858:
-Vim(let):E859:
 0.0
+"\0":  Vim(let):E859:
+{"\0": 1}:     Vim(let):E859:
+undefined_name:        Vim(let):E858:
+vim:   Vim(let):E859:
diff -r d998aa5da5a2 -r c12dca9e7d9a src/testdir/test87.in
--- a/src/testdir/test87.in     Sun Sep 02 17:19:40 2012 +0400
+++ b/src/testdir/test87.in     Sun Sep 02 18:18:52 2012 +0400
@@ -176,28 +176,62 @@
 :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))
-: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
+:" 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()
diff -r d998aa5da5a2 -r c12dca9e7d9a src/testdir/test87.ok
--- a/src/testdir/test87.ok     Sun Sep 02 17:19:40 2012 +0400
+++ b/src/testdir/test87.ok     Sun Sep 02 18:18:52 2012 +0400
@@ -38,10 +38,18 @@
 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']]
-Vim(let):E860:
-Vim(let):E861:
 0.0
+"\0":  Vim(let):E861:
+{"\0": 1}:     Vim(let):E861:
+undefined_name:        Vim(let):E860:
+vim:   Vim(let):E861:

-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

Raspunde prin e-mail lui