Mercurial > vim
diff src/testdir/test_vim9_script.vim @ 19894:ea4f8e789627 v8.2.0503
patch 8.2.0503: Vim9: some code is not tested
Commit: https://github.com/vim/vim/commit/585fea7b98b79f2c6d92fa8a2340e461aff805c8
Author: Bram Moolenaar <Bram@vim.org>
Date: Thu Apr 2 22:33:21 2020 +0200
patch 8.2.0503: Vim9: some code is not tested
Problem: Vim9: some code is not tested.
Solution: Add tests. Fix uncovered problems.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Thu, 02 Apr 2020 22:45:04 +0200 |
parents | 5feb426d2ea1 |
children | bd4f91762d0f |
line wrap: on
line diff
--- a/src/testdir/test_vim9_script.vim +++ b/src/testdir/test_vim9_script.vim @@ -112,6 +112,8 @@ def Test_assignment() call CheckDefFailure(['¬ex += 3'], 'E113:') call CheckDefFailure(['&ts ..= "xxx"'], 'E1019:') call CheckDefFailure(['&path += 3'], 'E1013:') + " test freeing ISN_STOREOPT + call CheckDefFailure(['&ts = 3', 'let asdf'], 'E1022:') &ts = 8 g:inc_counter += 1 @@ -171,6 +173,9 @@ def Test_assignment() let thechannel: channel assert_equal(test_null_channel(), thechannel) endif + + let nr = 1234 | nr = 5678 + assert_equal(5678, nr) enddef func Test_assignment_failure() @@ -253,8 +258,16 @@ enddef func Test_block_failure() call CheckDefFailure(['{', 'let inner = 1', '}', 'echo inner'], 'E1001:') + call CheckDefFailure(['}'], 'E1025:') + call CheckDefFailure(['{', 'echo 1'], 'E1026:') endfunc +def Test_cmd_modifier() + tab echo '0' + call CheckDefFailure(['5tab echo 3'], 'E16:') +enddef + + def ReturnString(): string return 'string' enddef @@ -326,6 +339,8 @@ def Test_call_default_args() assert_equal('string', MyDefaultArgs()) assert_equal('one', MyDefaultArgs('one')) assert_fails('call MyDefaultArgs("one", "two")', 'E118:') + + call CheckScriptFailure(['def Func(arg: number = asdf)', 'enddef'], 'E1001:') enddef func Test_call_default_args_from_func() @@ -480,6 +495,16 @@ def Test_try_catch_fails() call CheckDefFailure(['catch'], 'E603:') call CheckDefFailure(['try', 'echo 0', 'catch','catch'], 'E1033:') call CheckDefFailure(['try', 'echo 0', 'catch /pat'], 'E1067:') + call CheckDefFailure(['finally'], 'E606:') + call CheckDefFailure(['try', 'echo 0', 'finally', 'echo 1', 'finally'], 'E607:') + call CheckDefFailure(['endtry'], 'E602:') + call CheckDefFailure(['while 1', 'endtry'], 'E170:') + call CheckDefFailure(['for i in range(5)', 'endtry'], 'E170:') + call CheckDefFailure(['if 2', 'endtry'], 'E171:') + call CheckDefFailure(['try', 'echo 1', 'endtry'], 'E1032:') + + call CheckDefFailure(['throw'], 'E471:') + call CheckDefFailure(['throw xxx'], 'E1001:') enddef let s:export_script_lines =<< trim END @@ -939,6 +964,7 @@ def Test_if_elseif_else_fails() call CheckDefFailure(['else'], 'E581:') call CheckDefFailure(['endif'], 'E580:') call CheckDefFailure(['if true', 'elseif xxx'], 'E1001:') + call CheckDefFailure(['if true', 'echo 1'], 'E171:') enddef let g:bool_true = v:true @@ -951,6 +977,16 @@ def Test_if_const_expr() endif assert_equal(true, res) + g:glob = 2 + if false + execute('let g:glob = 3') + endif + assert_equal(2, g:glob) + if true + execute('let g:glob = 3') + endif + assert_equal(3, g:glob) + res = false if g:bool_true ? true : false res = true @@ -1092,10 +1128,13 @@ def Test_execute_cmd() execute cmd_first .. cmd_last assert_equal('execute-var-var', getline(1)) bwipe! + + call CheckDefFailure(['execute xxx'], 'E1001:') enddef def Test_echo_cmd() - echo 'something' + echo 'some' + echon 'thing' assert_match('^something$', Screenline(&lines)) let str1 = 'some' @@ -1141,6 +1180,7 @@ def Test_for_loop_fails() call CheckDefFailure(['for i in "text"'], 'E1024:') call CheckDefFailure(['for i in xxx'], 'E1001:') call CheckDefFailure(['endfor'], 'E588:') + call CheckDefFailure(['for i in range(3)', 'echo 3'], 'E170:') enddef def Test_while_loop() @@ -1166,6 +1206,7 @@ def Test_while_loop_fails() call CheckDefFailure(['if true', 'continue'], 'E586:') call CheckDefFailure(['break'], 'E587:') call CheckDefFailure(['if true', 'break'], 'E587:') + call CheckDefFailure(['while 1', 'echo 3'], 'E170:') enddef def Test_interrupt_loop() @@ -1185,28 +1226,6 @@ def Test_interrupt_loop() assert_true(caught, 'should have caught an exception') enddef -def Test_substitute_cmd() - new - setline(1, 'something') - :substitute(some(other( - assert_equal('otherthing', getline(1)) - bwipe! - - " also when the context is Vim9 script - let lines =<< trim END - vim9script - new - setline(1, 'something') - :substitute(some(other( - assert_equal('otherthing', getline(1)) - bwipe! - END - writefile(lines, 'Xvim9lines') - source Xvim9lines - - delete('Xvim9lines') -enddef - def Test_redef_failure() call writefile(['def Func0(): string', 'return "Func0"', 'enddef'], 'Xdef') so Xdef @@ -1285,4 +1304,27 @@ func Test_internalfunc_arg_error() call delete('Xinvalidarg') endfunc +" Keep this last, it messes up highlighting. +def Test_substitute_cmd() + new + setline(1, 'something') + :substitute(some(other( + assert_equal('otherthing', getline(1)) + bwipe! + + " also when the context is Vim9 script + let lines =<< trim END + vim9script + new + setline(1, 'something') + :substitute(some(other( + assert_equal('otherthing', getline(1)) + bwipe! + END + writefile(lines, 'Xvim9lines') + source Xvim9lines + + delete('Xvim9lines') +enddef + " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker