blob: e7007320dfda0a7775dfa736b3bf772c4cd0dd74 [file] [log] [blame]
Bram Moolenaarcfe435d2020-04-25 20:02:55 +02001" Utility functions for testing vim9 script
2
Bram Moolenaar2d870f82020-12-05 13:41:01 +01003" Use a different file name for each run.
4let s:sequence = 1
5
6" Check that "lines" inside a ":def" function has no error.
Bram Moolenaar3e06a1e2020-08-10 21:57:54 +02007func CheckDefSuccess(lines)
Bram Moolenaar2d870f82020-12-05 13:41:01 +01008 let fname = 'Xdef' .. s:sequence
9 let s:sequence += 1
10 call writefile(['def Func()'] + a:lines + ['enddef', 'defcompile'], fname)
11 exe 'so ' .. fname
Bram Moolenaar3e06a1e2020-08-10 21:57:54 +020012 call Func()
Bram Moolenaar2d870f82020-12-05 13:41:01 +010013 delfunc! Func
14 call delete(fname)
Bram Moolenaar3e06a1e2020-08-10 21:57:54 +020015endfunc
16
Bram Moolenaarcfe435d2020-04-25 20:02:55 +020017" Check that "lines" inside ":def" results in an "error" message.
Bram Moolenaar1d634542020-08-18 13:41:50 +020018" If "lnum" is given check that the error is reported for this line.
Bram Moolenaar3affe7a2020-08-18 20:34:13 +020019" Add a line before and after to make it less likely that the line number is
20" accidentally correct.
21func CheckDefFailure(lines, error, lnum = -3)
Bram Moolenaar2d870f82020-12-05 13:41:01 +010022 let fname = 'Xdef' .. s:sequence
23 call writefile(['def Func()', '# comment'] + a:lines + ['#comment', 'enddef', 'defcompile'], fname)
24 call assert_fails('so ' .. fname, a:error, a:lines, a:lnum + 1)
25 delfunc! Func
26 call delete(fname)
27 let s:sequence += 1
Bram Moolenaarcfe435d2020-04-25 20:02:55 +020028endfunc
29
Bram Moolenaar015f4262020-05-05 21:25:22 +020030" Check that "lines" inside ":def" results in an "error" message when executed.
Bram Moolenaar1d634542020-08-18 13:41:50 +020031" If "lnum" is given check that the error is reported for this line.
Bram Moolenaar3affe7a2020-08-18 20:34:13 +020032" Add a line before and after to make it less likely that the line number is
33" accidentally correct.
34func CheckDefExecFailure(lines, error, lnum = -3)
Bram Moolenaar2d870f82020-12-05 13:41:01 +010035 let fname = 'Xdef' .. s:sequence
36 let s:sequence += 1
37 call writefile(['def Func()', '# comment'] + a:lines + ['#comment', 'enddef'], fname)
38 exe 'so ' .. fname
Bram Moolenaar3affe7a2020-08-18 20:34:13 +020039 call assert_fails('call Func()', a:error, a:lines, a:lnum + 1)
Bram Moolenaar2d870f82020-12-05 13:41:01 +010040 delfunc! Func
41 call delete(fname)
Bram Moolenaar015f4262020-05-05 21:25:22 +020042endfunc
43
Bram Moolenaar3affe7a2020-08-18 20:34:13 +020044def CheckScriptFailure(lines: list<string>, error: string, lnum = -3)
Bram Moolenaar2d870f82020-12-05 13:41:01 +010045 var fname = 'Xdef' .. s:sequence
46 s:sequence += 1
47 writefile(lines, fname)
48 assert_fails('so ' .. fname, error, lines, lnum)
49 delete(fname)
Bram Moolenaarcfe435d2020-04-25 20:02:55 +020050enddef
51
52def CheckScriptSuccess(lines: list<string>)
Bram Moolenaar2d870f82020-12-05 13:41:01 +010053 var fname = 'Xdef' .. s:sequence
54 s:sequence += 1
55 writefile(lines, fname)
56 exe 'so ' .. fname
57 delete(fname)
Bram Moolenaarcfe435d2020-04-25 20:02:55 +020058enddef
Bram Moolenaar7cb6fc22020-08-21 22:36:47 +020059
Bram Moolenaar2e800952020-08-23 19:34:48 +020060def CheckDefAndScriptSuccess(lines: list<string>)
61 CheckDefSuccess(lines)
62 CheckScriptSuccess(['vim9script'] + lines)
63enddef
64
Bram Moolenaar2d870f82020-12-05 13:41:01 +010065" Check that a command fails with the same error when used in a :def function
66" and when used in Vim9 script.
Bram Moolenaarba7c0d72020-09-09 18:54:42 +020067def CheckDefAndScriptFailure(lines: list<string>, error: string, lnum = -3)
Bram Moolenaar7cb6fc22020-08-21 22:36:47 +020068 CheckDefFailure(lines, error, lnum)
69 CheckScriptFailure(['vim9script'] + lines, error, lnum + 1)
70enddef
Bram Moolenaar13106602020-10-04 16:06:05 +020071
Bram Moolenaar2d870f82020-12-05 13:41:01 +010072" Check that a command fails with the same error when executed in a :def
73" function and when used in Vim9 script.
Bram Moolenaar13106602020-10-04 16:06:05 +020074def CheckDefExecAndScriptFailure(lines: list<string>, error: string, lnum = -3)
75 CheckDefExecFailure(lines, error, lnum)
76 CheckScriptFailure(['vim9script'] + lines, error, lnum + 1)
77enddef