1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
" 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
" As CheckDefAndScriptFailure() but with two different exepcted errors.
def CheckDefAndScriptFailure2(
lines: list<string>,
errorDef: string,
errorScript: string,
lnum = -3)
CheckDefFailure(lines, errorDef, lnum)
CheckScriptFailure(['vim9script'] + lines, errorScript, 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
" As CheckDefExecAndScriptFailure() but with two different expected errors.
def CheckDefExecAndScriptFailure2(
lines: list<string>,
errorDef: string,
errorScript: string,
lnum = -3)
CheckDefExecFailure(lines, errorDef, lnum)
CheckScriptFailure(['vim9script'] + lines, errorScript, lnum + 1)
enddef
|