воскресенье, 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
