diff options
Diffstat (limited to 'src/testdir/vim9.vim')
-rw-r--r-- | src/testdir/vim9.vim | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/src/testdir/vim9.vim b/src/testdir/vim9.vim new file mode 100644 index 0000000..cc0510f --- /dev/null +++ b/src/testdir/vim9.vim @@ -0,0 +1,115 @@ +" Utility functions for testing vim9 script + +" Use a different file name for each run. +let s:sequence = 1 + +" Check that "lines" inside a ":def" function has no error. +func CheckDefSuccess(lines) + let cwd = getcwd() + let fname = 'XdefSuccess' .. s:sequence + let s:sequence += 1 + call writefile(['def Func()'] + a:lines + ['enddef', 'defcompile'], fname) + try + exe 'so ' .. fname + call Func() + delfunc! Func + finally + call chdir(cwd) + call delete(fname) + endtry +endfunc + +" Check that "lines" inside ":def" results in an "error" message. +" If "lnum" is given check that the error is reported for this line. +" Add a line before and after to make it less likely that the line number is +" accidentally correct. +func CheckDefFailure(lines, error, lnum = -3) + let cwd = getcwd() + let fname = 'XdefFailure' .. s:sequence + let s:sequence += 1 + call writefile(['def Func()', '# comment'] + a:lines + ['#comment', 'enddef', 'defcompile'], fname) + try + call assert_fails('so ' .. fname, a:error, a:lines, a:lnum + 1) + finally + call chdir(cwd) + call delete(fname) + delfunc! Func + endtry +endfunc + +" Check that "lines" inside ":def" results in an "error" message when executed. +" If "lnum" is given check that the error is reported for this line. +" Add a line before and after to make it less likely that the line number is +" accidentally correct. +func CheckDefExecFailure(lines, error, lnum = -3) + let cwd = getcwd() + let fname = 'XdefExecFailure' .. s:sequence + let s:sequence += 1 + call writefile(['def Func()', '# comment'] + a:lines + ['#comment', 'enddef'], fname) + try + exe 'so ' .. fname + call assert_fails('call Func()', a:error, a:lines, a:lnum + 1) + finally + call chdir(cwd) + call delete(fname) + delfunc! Func + endtry +endfunc + +def CheckScriptFailure(lines: list<string>, error: string, lnum = -3) + var cwd = getcwd() + var fname = 'XScriptFailure' .. s:sequence + s:sequence += 1 + writefile(lines, fname) + try + assert_fails('so ' .. fname, error, lines, lnum) + finally + chdir(cwd) + delete(fname) + endtry +enddef + +def CheckScriptFailureList(lines: list<string>, errors: list<string>, lnum = -3) + var cwd = getcwd() + var fname = 'XScriptFailure' .. s:sequence + s:sequence += 1 + writefile(lines, fname) + try + assert_fails('so ' .. fname, errors, lines, lnum) + finally + chdir(cwd) + delete(fname) + endtry +enddef + +def CheckScriptSuccess(lines: list<string>) + var cwd = getcwd() + var fname = 'XScriptSuccess' .. s:sequence + s:sequence += 1 + writefile(lines, fname) + try + exe 'so ' .. fname + finally + chdir(cwd) + delete(fname) + endtry +enddef + +def CheckDefAndScriptSuccess(lines: list<string>) + CheckDefSuccess(lines) + CheckScriptSuccess(['vim9script'] + lines) +enddef + +" Check that a command fails with the same error when used in a :def function +" and when used in Vim9 script. +def CheckDefAndScriptFailure(lines: list<string>, error: string, lnum = -3) + CheckDefFailure(lines, error, lnum) + CheckScriptFailure(['vim9script'] + lines, error, lnum + 1) +enddef + +" Check that a command fails with the same error when executed in a :def +" function and when used in Vim9 script. +def CheckDefExecAndScriptFailure(lines: list<string>, error: string, lnum = -3) + CheckDefExecFailure(lines, error, lnum) + CheckScriptFailure(['vim9script'] + lines, error, lnum + 1) +enddef |