1" Tests for various eval things. 2 3function s:foo() abort 4 try 5 return [] == 0 6 catch 7 return 1 8 endtry 9endfunction 10 11func Test_catch_return_with_error() 12 call assert_equal(1, s:foo()) 13endfunc 14 15func Test_nocatch_restore_silent_emsg() 16 silent! try 17 throw 1 18 catch 19 endtry 20 echoerr 'wrong' 21 let c1 = nr2char(screenchar(&lines, 1)) 22 let c2 = nr2char(screenchar(&lines, 2)) 23 let c3 = nr2char(screenchar(&lines, 3)) 24 let c4 = nr2char(screenchar(&lines, 4)) 25 let c5 = nr2char(screenchar(&lines, 5)) 26 call assert_equal('wrong', c1 . c2 . c3 . c4 . c5) 27endfunc 28 29func Test_mkdir_p() 30 call mkdir('Xmkdir/nested', 'p') 31 call assert_true(isdirectory('Xmkdir/nested')) 32 try 33 " Trying to make existing directories doesn't error 34 call mkdir('Xmkdir', 'p') 35 call mkdir('Xmkdir/nested', 'p') 36 catch /E739:/ 37 call assert_report('mkdir(..., "p") failed for an existing directory') 38 endtry 39 " 'p' doesn't suppress real errors 40 call writefile([], 'Xfile') 41 call assert_fails('call mkdir("Xfile", "p")', 'E739') 42 call delete('Xfile') 43 call delete('Xmkdir', 'rf') 44endfunc 45 46func Test_line_continuation() 47 let array = [5, 48 "\ ignore this 49 \ 6, 50 "\ more to ignore 51 "\ more moreto ignore 52 \ ] 53 "\ and some more 54 call assert_equal([5, 6], array) 55endfunc 56 57func Test_E963() 58 " These commands used to cause an internal error prior to vim 8.1.0563 59 let v_e = v:errors 60 let v_o = v:oldfiles 61 call assert_fails("let v:errors=''", 'E963:') 62 call assert_equal(v_e, v:errors) 63 call assert_fails("let v:oldfiles=''", 'E963:') 64 call assert_equal(v_o, v:oldfiles) 65endfunc 66 67func Test_for_invalid() 68 call assert_fails("for x in 99", 'E714:') 69 call assert_fails("for x in 'asdf'", 'E714:') 70 call assert_fails("for x in {'a': 9}", 'E714:') 71endfunc 72 73func Test_readfile_binary() 74 new 75 call setline(1, ['one', 'two', 'three']) 76 setlocal ff=dos 77 write XReadfile 78 let lines = readfile('XReadfile') 79 call assert_equal(['one', 'two', 'three'], lines) 80 let lines = readfile('XReadfile', '', 2) 81 call assert_equal(['one', 'two'], lines) 82 let lines = readfile('XReadfile', 'b') 83 call assert_equal(["one\r", "two\r", "three\r", ""], lines) 84 let lines = readfile('XReadfile', 'b', 2) 85 call assert_equal(["one\r", "two\r"], lines) 86 87 bwipe! 88 call delete('XReadfile') 89endfunc 90 91func Test_let_errmsg() 92 call assert_fails('let v:errmsg = []', 'E730:') 93 let v:errmsg = '' 94 call assert_fails('let v:errmsg = []', 'E730:') 95 let v:errmsg = '' 96endfunc 97 98func Test_string_concatenation() 99 call assert_equal('ab', 'a'.'b') 100 call assert_equal('ab', 'a' .'b') 101 call assert_equal('ab', 'a'. 'b') 102 call assert_equal('ab', 'a' . 'b') 103 104 call assert_equal('ab', 'a'..'b') 105 call assert_equal('ab', 'a' ..'b') 106 call assert_equal('ab', 'a'.. 'b') 107 call assert_equal('ab', 'a' .. 'b') 108 109 let a = 'a' 110 let b = 'b' 111 let a .= b 112 call assert_equal('ab', a) 113 114 let a = 'a' 115 let a.=b 116 call assert_equal('ab', a) 117 118 let a = 'a' 119 let a ..= b 120 call assert_equal('ab', a) 121 122 let a = 'a' 123 let a..=b 124 call assert_equal('ab', a) 125endfunc 126 127scriptversion 2 128func Test_string_concat_scriptversion2() 129 call assert_true(has('vimscript-2')) 130 let a = 'a' 131 let b = 'b' 132 133 call assert_fails('echo a . b', 'E15:') 134 call assert_fails('let a .= b', 'E985:') 135 call assert_fails('let vers = 1.2.3', 'E15:') 136 137 if has('float') 138 let f = .5 139 call assert_equal(0.5, f) 140 endif 141endfunc 142 143scriptversion 1 144func Test_string_concat_scriptversion1() 145 call assert_true(has('vimscript-1')) 146 let a = 'a' 147 let b = 'b' 148 149 echo a . b 150 let a .= b 151 let vers = 1.2.3 152 call assert_equal('123', vers) 153 154 if has('float') 155 call assert_fails('let f = .5', 'E15:') 156 endif 157endfunc 158 159scriptversion 3 160func Test_vvar_scriptversion3() 161 call assert_true(has('vimscript-3')) 162 call assert_fails('echo version', 'E121:') 163 call assert_false(exists('version')) 164 let version = 1 165 call assert_equal(1, version) 166endfunc 167 168scriptversion 2 169func Test_vvar_scriptversion2() 170 call assert_true(exists('version')) 171 echo version 172 call assert_fails('let version = 1', 'E46:') 173 call assert_equal(v:version, version) 174endfunc 175 176func Test_scriptversion() 177 call writefile(['scriptversion 9'], 'Xversionscript') 178 call assert_fails('source Xversionscript', 'E999:') 179 call delete('Xversionscript') 180endfunc 181