summaryrefslogtreecommitdiffstats
path: root/src/testdir/vim9.vim
diff options
context:
space:
mode:
Diffstat (limited to 'src/testdir/vim9.vim')
-rw-r--r--src/testdir/vim9.vim115
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