194f82cbaSBram Moolenaar" Tests for various Ex commands. 294f82cbaSBram Moolenaar 3e20b9eceSBram Moolenaarsource check.vim 4e20b9eceSBram Moolenaar 594f82cbaSBram Moolenaarfunc Test_ex_delete() 694f82cbaSBram Moolenaar new 794f82cbaSBram Moolenaar call setline(1, ['a', 'b', 'c']) 894f82cbaSBram Moolenaar 2 994f82cbaSBram Moolenaar " :dl is :delete with the "l" flag, not :dlist 1094f82cbaSBram Moolenaar .dl 1194f82cbaSBram Moolenaar call assert_equal(['a', 'c'], getline(1, 2)) 1294f82cbaSBram Moolenaarendfunc 130acae7acSBram Moolenaar 140acae7acSBram Moolenaarfunc Test_range_error() 150acae7acSBram Moolenaar call assert_fails(':.echo 1', 'E481:') 160acae7acSBram Moolenaar call assert_fails(':$echo 1', 'E481:') 170acae7acSBram Moolenaar call assert_fails(':1,2echo 1', 'E481:') 180acae7acSBram Moolenaar call assert_fails(':+1echo 1', 'E481:') 190acae7acSBram Moolenaar call assert_fails(':/1/echo 1', 'E481:') 200acae7acSBram Moolenaar call assert_fails(':\/echo 1', 'E481:') 210acae7acSBram Moolenaar normal vv 220acae7acSBram Moolenaar call assert_fails(":'<,'>echo 1", 'E481:') 239f6277bdSBram Moolenaar call assert_fails(":\\xcenter", 'E10:') 240acae7acSBram Moolenaarendfunc 2552410575SBram Moolenaar 2652410575SBram Moolenaarfunc Test_buffers_lastused() 2752410575SBram Moolenaar call test_settime(localtime() - 2000) " middle 2852410575SBram Moolenaar edit bufa 2952410575SBram Moolenaar enew 3052410575SBram Moolenaar call test_settime(localtime() - 10) " newest 3152410575SBram Moolenaar edit bufb 3252410575SBram Moolenaar enew 3352410575SBram Moolenaar call test_settime(1550010000) " oldest 3452410575SBram Moolenaar edit bufc 3552410575SBram Moolenaar enew 3652410575SBram Moolenaar call test_settime(0) 3752410575SBram Moolenaar enew 3852410575SBram Moolenaar 3952410575SBram Moolenaar let ls = split(execute('buffers t', 'silent!'), '\n') 4052410575SBram Moolenaar let bufs = ls->map({i,v->split(v, '"\s*')[1:2]}) 4152410575SBram Moolenaar call assert_equal(['bufb', 'bufa', 'bufc'], bufs[1:]->map({i,v->v[0]})) 4252410575SBram Moolenaar call assert_match('1[0-3] seconds ago', bufs[1][1]) 4352410575SBram Moolenaar call assert_match('\d\d:\d\d:\d\d', bufs[2][1]) 4452410575SBram Moolenaar call assert_match('2019/02/1\d \d\d:\d\d:00', bufs[3][1]) 4552410575SBram Moolenaar 4652410575SBram Moolenaar bwipeout bufa 4752410575SBram Moolenaar bwipeout bufb 4852410575SBram Moolenaar bwipeout bufc 4952410575SBram Moolenaarendfunc 505d98dc2aSBram Moolenaar 515d98dc2aSBram Moolenaar" Test for the :copy command 525d98dc2aSBram Moolenaarfunc Test_copy() 535d98dc2aSBram Moolenaar new 545d98dc2aSBram Moolenaar 555d98dc2aSBram Moolenaar call setline(1, ['L1', 'L2', 'L3', 'L4']) 565d98dc2aSBram Moolenaar " copy lines in a range to inside the range 575d98dc2aSBram Moolenaar 1,3copy 2 585d98dc2aSBram Moolenaar call assert_equal(['L1', 'L2', 'L1', 'L2', 'L3', 'L3', 'L4'], getline(1, 7)) 595d98dc2aSBram Moolenaar 601671f448SBram Moolenaar " Specifying a count before using : to run an ex-command 611671f448SBram Moolenaar exe "normal! gg4:yank\<CR>" 621671f448SBram Moolenaar call assert_equal("L1\nL2\nL1\nL2\n", @") 631671f448SBram Moolenaar 645d98dc2aSBram Moolenaar close! 655d98dc2aSBram Moolenaarendfunc 665d98dc2aSBram Moolenaar 675d98dc2aSBram Moolenaar" Test for the :file command 685d98dc2aSBram Moolenaarfunc Test_file_cmd() 695d98dc2aSBram Moolenaar call assert_fails('3file', 'E474:') 705d98dc2aSBram Moolenaar call assert_fails('0,0file', 'E474:') 715d98dc2aSBram Moolenaar call assert_fails('0file abc', 'E474:') 7259b26236SYegappan Lakshmanan if !has('win32') 7359b26236SYegappan Lakshmanan " Change the name of the buffer to the same name 7459b26236SYegappan Lakshmanan new Xfile1 7559b26236SYegappan Lakshmanan file Xfile1 7659b26236SYegappan Lakshmanan call assert_equal('Xfile1', @%) 7759b26236SYegappan Lakshmanan call assert_equal('Xfile1', @#) 7859b26236SYegappan Lakshmanan bw! 7959b26236SYegappan Lakshmanan endif 805d98dc2aSBram Moolenaarendfunc 815d98dc2aSBram Moolenaar 825d98dc2aSBram Moolenaar" Test for the :drop command 835d98dc2aSBram Moolenaarfunc Test_drop_cmd() 845d98dc2aSBram Moolenaar call writefile(['L1', 'L2'], 'Xfile') 855d98dc2aSBram Moolenaar enew | only 865d98dc2aSBram Moolenaar drop Xfile 875d98dc2aSBram Moolenaar call assert_equal('L2', getline(2)) 885d98dc2aSBram Moolenaar " Test for switching to an existing window 895d98dc2aSBram Moolenaar below new 905d98dc2aSBram Moolenaar drop Xfile 915d98dc2aSBram Moolenaar call assert_equal(1, winnr()) 925d98dc2aSBram Moolenaar " Test for splitting the current window 935d98dc2aSBram Moolenaar enew | only 945d98dc2aSBram Moolenaar set modified 955d98dc2aSBram Moolenaar drop Xfile 965d98dc2aSBram Moolenaar call assert_equal(2, winnr('$')) 975d98dc2aSBram Moolenaar " Check for setting the argument list 985d98dc2aSBram Moolenaar call assert_equal(['Xfile'], argv()) 995d98dc2aSBram Moolenaar enew | only! 1005d98dc2aSBram Moolenaar call delete('Xfile') 1015d98dc2aSBram Moolenaarendfunc 1025d98dc2aSBram Moolenaar 1035d98dc2aSBram Moolenaar" Test for the :append command 1045d98dc2aSBram Moolenaarfunc Test_append_cmd() 1055d98dc2aSBram Moolenaar new 1065d98dc2aSBram Moolenaar call setline(1, [' L1']) 1075d98dc2aSBram Moolenaar call feedkeys(":append\<CR> L2\<CR> L3\<CR>.\<CR>", 'xt') 1085d98dc2aSBram Moolenaar call assert_equal([' L1', ' L2', ' L3'], getline(1, '$')) 1095d98dc2aSBram Moolenaar %delete _ 1105d98dc2aSBram Moolenaar " append after a specific line 1115d98dc2aSBram Moolenaar call setline(1, [' L1', ' L2', ' L3']) 1125d98dc2aSBram Moolenaar call feedkeys(":2append\<CR> L4\<CR> L5\<CR>.\<CR>", 'xt') 1135d98dc2aSBram Moolenaar call assert_equal([' L1', ' L2', ' L4', ' L5', ' L3'], getline(1, '$')) 1145d98dc2aSBram Moolenaar %delete _ 1155d98dc2aSBram Moolenaar " append with toggling 'autoindent' 1165d98dc2aSBram Moolenaar call setline(1, [' L1']) 1175d98dc2aSBram Moolenaar call feedkeys(":append!\<CR> L2\<CR> L3\<CR>.\<CR>", 'xt') 1185d98dc2aSBram Moolenaar call assert_equal([' L1', ' L2', ' L3'], getline(1, '$')) 1195d98dc2aSBram Moolenaar call assert_false(&autoindent) 1205d98dc2aSBram Moolenaar %delete _ 1215d98dc2aSBram Moolenaar " append with 'autoindent' set and toggling 'autoindent' 1225d98dc2aSBram Moolenaar set autoindent 1235d98dc2aSBram Moolenaar call setline(1, [' L1']) 1245d98dc2aSBram Moolenaar call feedkeys(":append!\<CR> L2\<CR> L3\<CR>.\<CR>", 'xt') 1255d98dc2aSBram Moolenaar call assert_equal([' L1', ' L2', ' L3'], getline(1, '$')) 1265d98dc2aSBram Moolenaar call assert_true(&autoindent) 1275d98dc2aSBram Moolenaar set autoindent& 1285d98dc2aSBram Moolenaar close! 1295d98dc2aSBram Moolenaarendfunc 1305d98dc2aSBram Moolenaar 1315d98dc2aSBram Moolenaar" Test for the :insert command 1325d98dc2aSBram Moolenaarfunc Test_insert_cmd() 1335d98dc2aSBram Moolenaar new 1345d98dc2aSBram Moolenaar call setline(1, [' L1']) 1355d98dc2aSBram Moolenaar call feedkeys(":insert\<CR> L2\<CR> L3\<CR>.\<CR>", 'xt') 1365d98dc2aSBram Moolenaar call assert_equal([' L2', ' L3', ' L1'], getline(1, '$')) 1375d98dc2aSBram Moolenaar %delete _ 1385d98dc2aSBram Moolenaar " insert before a specific line 1395d98dc2aSBram Moolenaar call setline(1, [' L1', ' L2', ' L3']) 1405d98dc2aSBram Moolenaar call feedkeys(":2insert\<CR> L4\<CR> L5\<CR>.\<CR>", 'xt') 1415d98dc2aSBram Moolenaar call assert_equal([' L1', ' L4', ' L5', ' L2', ' L3'], getline(1, '$')) 1425d98dc2aSBram Moolenaar %delete _ 1435d98dc2aSBram Moolenaar " insert with toggling 'autoindent' 1445d98dc2aSBram Moolenaar call setline(1, [' L1']) 1455d98dc2aSBram Moolenaar call feedkeys(":insert!\<CR> L2\<CR> L3\<CR>.\<CR>", 'xt') 1465d98dc2aSBram Moolenaar call assert_equal([' L2', ' L3', ' L1'], getline(1, '$')) 1475d98dc2aSBram Moolenaar call assert_false(&autoindent) 1485d98dc2aSBram Moolenaar %delete _ 1495d98dc2aSBram Moolenaar " insert with 'autoindent' set and toggling 'autoindent' 1505d98dc2aSBram Moolenaar set autoindent 1515d98dc2aSBram Moolenaar call setline(1, [' L1']) 1525d98dc2aSBram Moolenaar call feedkeys(":insert!\<CR> L2\<CR> L3\<CR>.\<CR>", 'xt') 1535d98dc2aSBram Moolenaar call assert_equal([' L2', ' L3', ' L1'], getline(1, '$')) 1545d98dc2aSBram Moolenaar call assert_true(&autoindent) 1555d98dc2aSBram Moolenaar set autoindent& 1565d98dc2aSBram Moolenaar close! 1575d98dc2aSBram Moolenaarendfunc 1585d98dc2aSBram Moolenaar 1595d98dc2aSBram Moolenaar" Test for the :change command 1605d98dc2aSBram Moolenaarfunc Test_change_cmd() 1615d98dc2aSBram Moolenaar new 1625d98dc2aSBram Moolenaar call setline(1, [' L1', 'L2', 'L3']) 1635d98dc2aSBram Moolenaar call feedkeys(":change\<CR> L4\<CR> L5\<CR>.\<CR>", 'xt') 1645d98dc2aSBram Moolenaar call assert_equal([' L4', ' L5', 'L2', 'L3'], getline(1, '$')) 1655d98dc2aSBram Moolenaar %delete _ 1665d98dc2aSBram Moolenaar " change a specific line 1675d98dc2aSBram Moolenaar call setline(1, [' L1', ' L2', ' L3']) 1685d98dc2aSBram Moolenaar call feedkeys(":2change\<CR> L4\<CR> L5\<CR>.\<CR>", 'xt') 1695d98dc2aSBram Moolenaar call assert_equal([' L1', ' L4', ' L5', ' L3'], getline(1, '$')) 1705d98dc2aSBram Moolenaar %delete _ 1715d98dc2aSBram Moolenaar " change with toggling 'autoindent' 1725d98dc2aSBram Moolenaar call setline(1, [' L1', 'L2', 'L3']) 1735d98dc2aSBram Moolenaar call feedkeys(":change!\<CR> L4\<CR> L5\<CR>.\<CR>", 'xt') 1745d98dc2aSBram Moolenaar call assert_equal([' L4', ' L5', 'L2', 'L3'], getline(1, '$')) 1755d98dc2aSBram Moolenaar call assert_false(&autoindent) 1765d98dc2aSBram Moolenaar %delete _ 1775d98dc2aSBram Moolenaar " change with 'autoindent' set and toggling 'autoindent' 1785d98dc2aSBram Moolenaar set autoindent 1795d98dc2aSBram Moolenaar call setline(1, [' L1', 'L2', 'L3']) 1805d98dc2aSBram Moolenaar call feedkeys(":change!\<CR> L4\<CR> L5\<CR>.\<CR>", 'xt') 1815d98dc2aSBram Moolenaar call assert_equal([' L4', ' L5', 'L2', 'L3'], getline(1, '$')) 1825d98dc2aSBram Moolenaar call assert_true(&autoindent) 1835d98dc2aSBram Moolenaar set autoindent& 1845d98dc2aSBram Moolenaar close! 1855d98dc2aSBram Moolenaarendfunc 1865d98dc2aSBram Moolenaar 187e20b9eceSBram Moolenaar" Test for the :language command 188e20b9eceSBram Moolenaarfunc Test_language_cmd() 189e20b9eceSBram Moolenaar CheckFeature multi_lang 190e20b9eceSBram Moolenaar 191e20b9eceSBram Moolenaar call assert_fails('language ctype non_existing_lang', 'E197:') 192e20b9eceSBram Moolenaar call assert_fails('language time non_existing_lang', 'E197:') 193e20b9eceSBram Moolenaarendfunc 194e20b9eceSBram Moolenaar 195e20b9eceSBram Moolenaar" Test for the :confirm command dialog 196e20b9eceSBram Moolenaarfunc Test_confirm_cmd() 197e20b9eceSBram Moolenaar CheckNotGui 198e20b9eceSBram Moolenaar CheckRunVimInTerminal 199e20b9eceSBram Moolenaar 20027321dbeSBram Moolenaar call writefile(['foo1'], 'Xfoo') 20127321dbeSBram Moolenaar call writefile(['bar1'], 'Xbar') 202e20b9eceSBram Moolenaar 203e20b9eceSBram Moolenaar " Test for saving all the modified buffers 20427321dbeSBram Moolenaar let lines =<< trim END 20527321dbeSBram Moolenaar set nomore 20627321dbeSBram Moolenaar new Xfoo 20727321dbeSBram Moolenaar call setline(1, 'foo2') 20827321dbeSBram Moolenaar new Xbar 20927321dbeSBram Moolenaar call setline(1, 'bar2') 21027321dbeSBram Moolenaar wincmd b 21127321dbeSBram Moolenaar END 21227321dbeSBram Moolenaar call writefile(lines, 'Xscript') 21327321dbeSBram Moolenaar let buf = RunVimInTerminal('-S Xscript', {'rows': 20}) 214e20b9eceSBram Moolenaar call term_sendkeys(buf, ":confirm qall\n") 215e20b9eceSBram Moolenaar call WaitForAssert({-> assert_match('\[Y\]es, (N)o, Save (A)ll, (D)iscard All, (C)ancel: ', term_getline(buf, 20))}, 1000) 216e20b9eceSBram Moolenaar call term_sendkeys(buf, "A") 217e20b9eceSBram Moolenaar call StopVimInTerminal(buf) 218e20b9eceSBram Moolenaar 21927321dbeSBram Moolenaar call assert_equal(['foo2'], readfile('Xfoo')) 22027321dbeSBram Moolenaar call assert_equal(['bar2'], readfile('Xbar')) 221e20b9eceSBram Moolenaar 222e20b9eceSBram Moolenaar " Test for discarding all the changes to modified buffers 22327321dbeSBram Moolenaar let lines =<< trim END 22427321dbeSBram Moolenaar set nomore 22527321dbeSBram Moolenaar new Xfoo 22627321dbeSBram Moolenaar call setline(1, 'foo3') 22727321dbeSBram Moolenaar new Xbar 22827321dbeSBram Moolenaar call setline(1, 'bar3') 22927321dbeSBram Moolenaar wincmd b 23027321dbeSBram Moolenaar END 23127321dbeSBram Moolenaar call writefile(lines, 'Xscript') 23227321dbeSBram Moolenaar let buf = RunVimInTerminal('-S Xscript', {'rows': 20}) 233e20b9eceSBram Moolenaar call term_sendkeys(buf, ":confirm qall\n") 234e20b9eceSBram Moolenaar call WaitForAssert({-> assert_match('\[Y\]es, (N)o, Save (A)ll, (D)iscard All, (C)ancel: ', term_getline(buf, 20))}, 1000) 235e20b9eceSBram Moolenaar call term_sendkeys(buf, "D") 236e20b9eceSBram Moolenaar call StopVimInTerminal(buf) 237e20b9eceSBram Moolenaar 23827321dbeSBram Moolenaar call assert_equal(['foo2'], readfile('Xfoo')) 23927321dbeSBram Moolenaar call assert_equal(['bar2'], readfile('Xbar')) 240e20b9eceSBram Moolenaar 241e20b9eceSBram Moolenaar " Test for saving and discarding changes to some buffers 24227321dbeSBram Moolenaar let lines =<< trim END 24327321dbeSBram Moolenaar set nomore 24427321dbeSBram Moolenaar new Xfoo 24527321dbeSBram Moolenaar call setline(1, 'foo4') 24627321dbeSBram Moolenaar new Xbar 24727321dbeSBram Moolenaar call setline(1, 'bar4') 24827321dbeSBram Moolenaar wincmd b 24927321dbeSBram Moolenaar END 25027321dbeSBram Moolenaar call writefile(lines, 'Xscript') 25127321dbeSBram Moolenaar let buf = RunVimInTerminal('-S Xscript', {'rows': 20}) 252e20b9eceSBram Moolenaar call term_sendkeys(buf, ":confirm qall\n") 253e20b9eceSBram Moolenaar call WaitForAssert({-> assert_match('\[Y\]es, (N)o, Save (A)ll, (D)iscard All, (C)ancel: ', term_getline(buf, 20))}, 1000) 254e20b9eceSBram Moolenaar call term_sendkeys(buf, "N") 255e20b9eceSBram Moolenaar call WaitForAssert({-> assert_match('\[Y\]es, (N)o, (C)ancel: ', term_getline(buf, 20))}, 1000) 256e20b9eceSBram Moolenaar call term_sendkeys(buf, "Y") 257e20b9eceSBram Moolenaar call StopVimInTerminal(buf) 258e20b9eceSBram Moolenaar 25927321dbeSBram Moolenaar call assert_equal(['foo4'], readfile('Xfoo')) 26027321dbeSBram Moolenaar call assert_equal(['bar2'], readfile('Xbar')) 261e20b9eceSBram Moolenaar 26227321dbeSBram Moolenaar call delete('Xscript') 26327321dbeSBram Moolenaar call delete('Xfoo') 26427321dbeSBram Moolenaar call delete('Xbar') 26572749f06SBram Moolenaarendfunc 26672749f06SBram Moolenaar 26772749f06SBram Moolenaarfunc Test_confirm_cmd_cancel() 268bea9023dSBram Moolenaar CheckNotGui 269bea9023dSBram Moolenaar CheckRunVimInTerminal 270bea9023dSBram Moolenaar 271406cd90fSBram Moolenaar " Test for closing a window with a modified buffer 27227321dbeSBram Moolenaar let lines =<< trim END 27327321dbeSBram Moolenaar set nomore 27427321dbeSBram Moolenaar new 27527321dbeSBram Moolenaar call setline(1, 'abc') 27627321dbeSBram Moolenaar END 27727321dbeSBram Moolenaar call writefile(lines, 'Xscript') 27827321dbeSBram Moolenaar let buf = RunVimInTerminal('-S Xscript', {'rows': 20}) 279406cd90fSBram Moolenaar call term_sendkeys(buf, ":confirm close\n") 280406cd90fSBram Moolenaar call WaitForAssert({-> assert_match('^\[Y\]es, (N)o, (C)ancel: *$', 281406cd90fSBram Moolenaar \ term_getline(buf, 20))}, 1000) 282406cd90fSBram Moolenaar call term_sendkeys(buf, "C") 2837b1b36b1SBram Moolenaar call WaitForAssert({-> assert_equal('', term_getline(buf, 20))}, 1000) 284406cd90fSBram Moolenaar call term_sendkeys(buf, ":confirm close\n") 285406cd90fSBram Moolenaar call WaitForAssert({-> assert_match('^\[Y\]es, (N)o, (C)ancel: *$', 286406cd90fSBram Moolenaar \ term_getline(buf, 20))}, 1000) 287406cd90fSBram Moolenaar call term_sendkeys(buf, "N") 2889207d1f5SBram Moolenaar call WaitForAssert({-> assert_match('^ *0,0-1 All$', 2899207d1f5SBram Moolenaar \ term_getline(buf, 20))}, 1000) 290406cd90fSBram Moolenaar call StopVimInTerminal(buf) 29127321dbeSBram Moolenaar call delete('Xscript') 29227321dbeSBram Moolenaarendfunc 29327321dbeSBram Moolenaar 29427321dbeSBram Moolenaar" The ":confirm" prompt was sometimes used with the terminal in cooked mode. 29527321dbeSBram Moolenaar" This test verifies that a "\<CR>" character is NOT required to respond to a 29627321dbeSBram Moolenaar" prompt from the ":conf q" and ":conf wq" commands. 29727321dbeSBram Moolenaarfunc Test_confirm_q_wq() 29827321dbeSBram Moolenaar CheckNotGui 29927321dbeSBram Moolenaar CheckRunVimInTerminal 30027321dbeSBram Moolenaar 30127321dbeSBram Moolenaar call writefile(['foo'], 'Xfoo') 30227321dbeSBram Moolenaar 30327321dbeSBram Moolenaar let lines =<< trim END 30427321dbeSBram Moolenaar set hidden nomore 30527321dbeSBram Moolenaar call setline(1, 'abc') 30627321dbeSBram Moolenaar edit Xfoo 30727321dbeSBram Moolenaar END 30827321dbeSBram Moolenaar call writefile(lines, 'Xscript') 30927321dbeSBram Moolenaar let buf = RunVimInTerminal('-S Xscript', {'rows': 20}) 31027321dbeSBram Moolenaar call term_sendkeys(buf, ":confirm q\n") 31127321dbeSBram Moolenaar call WaitForAssert({-> assert_match('^\[Y\]es, (N)o, (C)ancel: *$', 31227321dbeSBram Moolenaar \ term_getline(buf, 20))}, 1000) 31327321dbeSBram Moolenaar call term_sendkeys(buf, 'C') 31427321dbeSBram Moolenaar call WaitForAssert({-> assert_notmatch('^\[Y\]es, (N)o, (C)ancel: C*$', 31527321dbeSBram Moolenaar \ term_getline(buf, 20))}, 1000) 31627321dbeSBram Moolenaar 31727321dbeSBram Moolenaar call term_sendkeys(buf, ":edit Xfoo\n") 31827321dbeSBram Moolenaar call term_sendkeys(buf, ":confirm wq\n") 31927321dbeSBram Moolenaar call WaitForAssert({-> assert_match('^\[Y\]es, (N)o, (C)ancel: *$', 32027321dbeSBram Moolenaar \ term_getline(buf, 20))}, 1000) 32127321dbeSBram Moolenaar call term_sendkeys(buf, 'C') 32227321dbeSBram Moolenaar call WaitForAssert({-> assert_notmatch('^\[Y\]es, (N)o, (C)ancel: C*$', 32327321dbeSBram Moolenaar \ term_getline(buf, 20))}, 1000) 32427321dbeSBram Moolenaar call StopVimInTerminal(buf) 32527321dbeSBram Moolenaar 32627321dbeSBram Moolenaar call delete('Xscript') 32727321dbeSBram Moolenaar call delete('Xfoo') 328e20b9eceSBram Moolenaarendfunc 329e20b9eceSBram Moolenaar 3302bf6034eSDominique Pellefunc Test_confirm_write_ro() 3312bf6034eSDominique Pelle CheckNotGui 3322bf6034eSDominique Pelle CheckRunVimInTerminal 3332bf6034eSDominique Pelle 3342bf6034eSDominique Pelle call writefile(['foo'], 'Xconfirm_write_ro') 3352bf6034eSDominique Pelle let lines =<< trim END 3362bf6034eSDominique Pelle set nobackup ff=unix cmdheight=2 3372bf6034eSDominique Pelle edit Xconfirm_write_ro 3382bf6034eSDominique Pelle norm Abar 3392bf6034eSDominique Pelle END 3402bf6034eSDominique Pelle call writefile(lines, 'Xscript') 3412bf6034eSDominique Pelle let buf = RunVimInTerminal('-S Xscript', {'rows': 20}) 3422bf6034eSDominique Pelle 3432bf6034eSDominique Pelle " Try to write with 'ro' option. 3442bf6034eSDominique Pelle call term_sendkeys(buf, ":set ro | confirm w\n") 3452bf6034eSDominique Pelle call WaitForAssert({-> assert_match("^'readonly' option is set for \"Xconfirm_write_ro\"\. *$", 3462bf6034eSDominique Pelle \ term_getline(buf, 18))}, 1000) 3472bf6034eSDominique Pelle call WaitForAssert({-> assert_match('^Do you wish to write anyway? *$', 3482bf6034eSDominique Pelle \ term_getline(buf, 19))}, 1000) 3492bf6034eSDominique Pelle call WaitForAssert({-> assert_match('^(Y)es, \[N\]o: *$', term_getline(buf, 20))}, 1000) 3502bf6034eSDominique Pelle call term_sendkeys(buf, 'N') 3512bf6034eSDominique Pelle call WaitForAssert({-> assert_match('^ *$', term_getline(buf, 19))}, 1000) 3522bf6034eSDominique Pelle call WaitForAssert({-> assert_match('.* All$', term_getline(buf, 20))}, 1000) 3532bf6034eSDominique Pelle call assert_equal(['foo'], readfile('Xconfirm_write_ro')) 3542bf6034eSDominique Pelle 3552bf6034eSDominique Pelle call term_sendkeys(buf, ":confirm w\n") 3562bf6034eSDominique Pelle call WaitForAssert({-> assert_match("^'readonly' option is set for \"Xconfirm_write_ro\"\. *$", 3572bf6034eSDominique Pelle \ term_getline(buf, 18))}, 1000) 3582bf6034eSDominique Pelle call WaitForAssert({-> assert_match('^Do you wish to write anyway? *$', 3592bf6034eSDominique Pelle \ term_getline(buf, 19))}, 1000) 3602bf6034eSDominique Pelle call WaitForAssert({-> assert_match('^(Y)es, \[N\]o: *$', term_getline(buf, 20))}, 1000) 3612bf6034eSDominique Pelle call term_sendkeys(buf, 'Y') 3622bf6034eSDominique Pelle call WaitForAssert({-> assert_match('^"Xconfirm_write_ro" 1L, 7B written$', 3632bf6034eSDominique Pelle \ term_getline(buf, 19))}, 1000) 3642bf6034eSDominique Pelle call assert_equal(['foobar'], readfile('Xconfirm_write_ro')) 3652bf6034eSDominique Pelle 3662bf6034eSDominique Pelle " Try to write with read-only file permissions. 3672bf6034eSDominique Pelle call setfperm('Xconfirm_write_ro', 'r--r--r--') 3682bf6034eSDominique Pelle call term_sendkeys(buf, ":set noro | undo | confirm w\n") 3692bf6034eSDominique Pelle call WaitForAssert({-> assert_match("^File permissions of \"Xconfirm_write_ro\" are read-only\. *$", 3702bf6034eSDominique Pelle \ term_getline(buf, 17))}, 1000) 3712bf6034eSDominique Pelle call WaitForAssert({-> assert_match('^It may still be possible to write it\. *$', 3722bf6034eSDominique Pelle \ term_getline(buf, 18))}, 1000) 3732bf6034eSDominique Pelle call WaitForAssert({-> assert_match('^Do you wish to try? *$', term_getline(buf, 19))}, 1000) 3742bf6034eSDominique Pelle call WaitForAssert({-> assert_match('^(Y)es, \[N\]o: *$', term_getline(buf, 20))}, 1000) 3752bf6034eSDominique Pelle call term_sendkeys(buf, 'Y') 3762bf6034eSDominique Pelle call WaitForAssert({-> assert_match('^"Xconfirm_write_ro" 1L, 4B written$', 3772bf6034eSDominique Pelle \ term_getline(buf, 19))}, 1000) 3782bf6034eSDominique Pelle call assert_equal(['foo'], readfile('Xconfirm_write_ro')) 3792bf6034eSDominique Pelle 3802bf6034eSDominique Pelle call StopVimInTerminal(buf) 3812bf6034eSDominique Pelle call delete('Xscript') 3822bf6034eSDominique Pelle call delete('Xconfirm_write_ro') 3832bf6034eSDominique Pelleendfunc 3842bf6034eSDominique Pelle 385bd9e7961SDominique Pellefunc Test_confirm_write_partial_file() 386bd9e7961SDominique Pelle CheckNotGui 387bd9e7961SDominique Pelle CheckRunVimInTerminal 388bd9e7961SDominique Pelle 389bd9e7961SDominique Pelle call writefile(['a', 'b', 'c', 'd'], 'Xwrite_partial') 390bd9e7961SDominique Pelle call writefile(['set nobackup ff=unix cmdheight=2', 391bd9e7961SDominique Pelle \ 'edit Xwrite_partial'], 'Xscript') 392bd9e7961SDominique Pelle let buf = RunVimInTerminal('-S Xscript', {'rows': 20}) 393bd9e7961SDominique Pelle 394bd9e7961SDominique Pelle call term_sendkeys(buf, ":confirm 2,3w\n") 395bd9e7961SDominique Pelle call WaitForAssert({-> assert_match('^Write partial file? *$', 396bd9e7961SDominique Pelle \ term_getline(buf, 19))}, 1000) 397bd9e7961SDominique Pelle call WaitForAssert({-> assert_match('^(Y)es, \[N\]o: *$', 398bd9e7961SDominique Pelle \ term_getline(buf, 20))}, 1000) 399bd9e7961SDominique Pelle call term_sendkeys(buf, 'N') 400bd9e7961SDominique Pelle call WaitForAssert({-> assert_match('.* All$', term_getline(buf, 20))}, 1000) 401bd9e7961SDominique Pelle call assert_equal(['a', 'b', 'c', 'd'], readfile('Xwrite_partial')) 402bd9e7961SDominique Pelle call delete('Xwrite_partial') 403bd9e7961SDominique Pelle 404bd9e7961SDominique Pelle call term_sendkeys(buf, ":confirm 2,3w\n") 405bd9e7961SDominique Pelle call WaitForAssert({-> assert_match('^Write partial file? *$', 406bd9e7961SDominique Pelle \ term_getline(buf, 19))}, 1000) 407bd9e7961SDominique Pelle call WaitForAssert({-> assert_match('^(Y)es, \[N\]o: *$', 408bd9e7961SDominique Pelle \ term_getline(buf, 20))}, 1000) 409bd9e7961SDominique Pelle call term_sendkeys(buf, 'Y') 410bd9e7961SDominique Pelle call WaitForAssert({-> assert_match('^"Xwrite_partial" \[New\] 2L, 4B written *$', 411bd9e7961SDominique Pelle \ term_getline(buf, 19))}, 1000) 412bd9e7961SDominique Pelle call WaitForAssert({-> assert_match('^Press ENTER or type command to continue *$', 413bd9e7961SDominique Pelle \ term_getline(buf, 20))}, 1000) 414bd9e7961SDominique Pelle call assert_equal(['b', 'c'], readfile('Xwrite_partial')) 415bd9e7961SDominique Pelle 416bd9e7961SDominique Pelle call StopVimInTerminal(buf) 417bd9e7961SDominique Pelle call delete('Xwrite_partial') 418bd9e7961SDominique Pelle call delete('Xscript') 419bd9e7961SDominique Pelleendfunc 420bd9e7961SDominique Pelle 4219f6277bdSBram Moolenaar" Test for the :print command 4229f6277bdSBram Moolenaarfunc Test_print_cmd() 4239f6277bdSBram Moolenaar call assert_fails('print', 'E749:') 4249f6277bdSBram Moolenaarendfunc 4259f6277bdSBram Moolenaar 4269f6277bdSBram Moolenaar" Test for the :winsize command 4279f6277bdSBram Moolenaarfunc Test_winsize_cmd() 4289f6277bdSBram Moolenaar call assert_fails('winsize 1', 'E465:') 429f5a5116aSBram Moolenaar call assert_fails('winsize 1 x', 'E465:') 430f5a5116aSBram Moolenaar call assert_fails('win_getid(1)', 'E475: Invalid argument: _getid(1)') 431f5a5116aSBram Moolenaar " Actually changing the window size would be flaky. 4329f6277bdSBram Moolenaarendfunc 4339f6277bdSBram Moolenaar 4349f6277bdSBram Moolenaar" Test for the :redir command 435f9a65505SBram Moolenaar" NOTE: if you run tests as root this will fail. Don't run tests as root! 4369f6277bdSBram Moolenaarfunc Test_redir_cmd() 4379f6277bdSBram Moolenaar call assert_fails('redir @@', 'E475:') 4389f6277bdSBram Moolenaar call assert_fails('redir abc', 'E475:') 4398dfcce3aSBram Moolenaar call assert_fails('redir => 1abc', 'E474:') 4408dfcce3aSBram Moolenaar call assert_fails('redir => a b', 'E488:') 4419b7bf9e9SBram Moolenaar call assert_fails('redir => abc[1]', 'E121:') 4428dfcce3aSBram Moolenaar let b = 0zFF 4438dfcce3aSBram Moolenaar call assert_fails('redir =>> b', 'E734:') 4448dfcce3aSBram Moolenaar unlet b 4458dfcce3aSBram Moolenaar 4469f6277bdSBram Moolenaar if has('unix') 4478dfcce3aSBram Moolenaar " Redirecting to a directory name 4489f6277bdSBram Moolenaar call mkdir('Xdir') 4499f6277bdSBram Moolenaar call assert_fails('redir > Xdir', 'E17:') 4509f6277bdSBram Moolenaar call delete('Xdir', 'd') 4519f6277bdSBram Moolenaar endif 452bc2b71d4SBram Moolenaar 453bc2b71d4SBram Moolenaar " Test for redirecting to a register 454bc2b71d4SBram Moolenaar redir @q> | echon 'clean ' | redir END 455bc2b71d4SBram Moolenaar redir @q>> | echon 'water' | redir END 456bc2b71d4SBram Moolenaar call assert_equal('clean water', @q) 457bc2b71d4SBram Moolenaar 458bc2b71d4SBram Moolenaar " Test for redirecting to a variable 459bc2b71d4SBram Moolenaar redir => color | echon 'blue ' | redir END 460bc2b71d4SBram Moolenaar redir =>> color | echon 'sky' | redir END 461bc2b71d4SBram Moolenaar call assert_equal('blue sky', color) 4629f6277bdSBram Moolenaarendfunc 4639f6277bdSBram Moolenaar 46417709e28SBram Moolenaarfunc Test_redir_cmd_readonly() 46517709e28SBram Moolenaar CheckNotRoot 46617709e28SBram Moolenaar 46717709e28SBram Moolenaar " Redirecting to a read-only file 46817709e28SBram Moolenaar call writefile([], 'Xfile') 46917709e28SBram Moolenaar call setfperm('Xfile', 'r--r--r--') 47017709e28SBram Moolenaar call assert_fails('redir! > Xfile', 'E190:') 47117709e28SBram Moolenaar call delete('Xfile') 47217709e28SBram Moolenaarendfunc 47317709e28SBram Moolenaar 4749f6277bdSBram Moolenaar" Test for the :filetype command 4759f6277bdSBram Moolenaarfunc Test_filetype_cmd() 4769f6277bdSBram Moolenaar call assert_fails('filetype abc', 'E475:') 4779f6277bdSBram Moolenaarendfunc 4789f6277bdSBram Moolenaar 4799f6277bdSBram Moolenaar" Test for the :mode command 4809f6277bdSBram Moolenaarfunc Test_mode_cmd() 4819f6277bdSBram Moolenaar call assert_fails('mode abc', 'E359:') 4829f6277bdSBram Moolenaarendfunc 4839f6277bdSBram Moolenaar 484bc2b71d4SBram Moolenaar" Test for the :sleep command 485bc2b71d4SBram Moolenaarfunc Test_sleep_cmd() 486bc2b71d4SBram Moolenaar call assert_fails('sleep x', 'E475:') 487bc2b71d4SBram Moolenaarendfunc 488bc2b71d4SBram Moolenaar 489bc2b71d4SBram Moolenaar" Test for the :read command 490bc2b71d4SBram Moolenaarfunc Test_read_cmd() 491bc2b71d4SBram Moolenaar call writefile(['one'], 'Xfile') 492bc2b71d4SBram Moolenaar new 493bc2b71d4SBram Moolenaar call assert_fails('read', 'E32:') 494bc2b71d4SBram Moolenaar edit Xfile 495bc2b71d4SBram Moolenaar read 496bc2b71d4SBram Moolenaar call assert_equal(['one', 'one'], getline(1, '$')) 497bc2b71d4SBram Moolenaar close! 498bc2b71d4SBram Moolenaar new 499bc2b71d4SBram Moolenaar read Xfile 500bc2b71d4SBram Moolenaar call assert_equal(['', 'one'], getline(1, '$')) 501bc2b71d4SBram Moolenaar call deletebufline('', 1, '$') 502bc2b71d4SBram Moolenaar call feedkeys("Qr Xfile\<CR>visual\<CR>", 'xt') 503bc2b71d4SBram Moolenaar call assert_equal(['one'], getline(1, '$')) 504bc2b71d4SBram Moolenaar close! 505bc2b71d4SBram Moolenaar call delete('Xfile') 506bc2b71d4SBram Moolenaarendfunc 507bc2b71d4SBram Moolenaar 508bc2b71d4SBram Moolenaar" Test for running Ex commands when text is locked. 509bc2b71d4SBram Moolenaar" <C-\>e in the command line is used to lock the text 510bc2b71d4SBram Moolenaarfunc Test_run_excmd_with_text_locked() 511bc2b71d4SBram Moolenaar " :quit 512bc2b71d4SBram Moolenaar let cmd = ":\<C-\>eexecute('quit')\<CR>\<C-C>" 513ff06f283SBram Moolenaar call assert_fails("call feedkeys(cmd, 'xt')", 'E565:') 514bc2b71d4SBram Moolenaar 515bc2b71d4SBram Moolenaar " :qall 516bc2b71d4SBram Moolenaar let cmd = ":\<C-\>eexecute('qall')\<CR>\<C-C>" 517ff06f283SBram Moolenaar call assert_fails("call feedkeys(cmd, 'xt')", 'E565:') 518bc2b71d4SBram Moolenaar 519bc2b71d4SBram Moolenaar " :exit 520bc2b71d4SBram Moolenaar let cmd = ":\<C-\>eexecute('exit')\<CR>\<C-C>" 521ff06f283SBram Moolenaar call assert_fails("call feedkeys(cmd, 'xt')", 'E565:') 522bc2b71d4SBram Moolenaar 523bc2b71d4SBram Moolenaar " :close - should be ignored 524bc2b71d4SBram Moolenaar new 525bc2b71d4SBram Moolenaar let cmd = ":\<C-\>eexecute('close')\<CR>\<C-C>" 526bc2b71d4SBram Moolenaar call assert_equal(2, winnr('$')) 527bc2b71d4SBram Moolenaar close 528818fc9adSBram Moolenaar 529ff06f283SBram Moolenaar call assert_fails("call feedkeys(\":\<C-R>=execute('bnext')\<CR>\", 'xt')", 'E565:') 5305d3c9f8cSBram Moolenaar 5315d3c9f8cSBram Moolenaar " :tabfirst 5325d3c9f8cSBram Moolenaar tabnew 5335d3c9f8cSBram Moolenaar call assert_fails("call feedkeys(\":\<C-R>=execute('tabfirst')\<CR>\", 'xt')", 'E565:') 5345d3c9f8cSBram Moolenaar tabclose 535818fc9adSBram Moolenaarendfunc 536818fc9adSBram Moolenaar 537818fc9adSBram Moolenaar" Test for the :verbose command 538818fc9adSBram Moolenaarfunc Test_verbose_cmd() 539818fc9adSBram Moolenaar call assert_equal([' verbose=1'], split(execute('verbose set vbs'), "\n")) 540818fc9adSBram Moolenaar call assert_equal([' verbose=0'], split(execute('0verbose set vbs'), "\n")) 541818fc9adSBram Moolenaar let l = execute("4verbose set verbose | set verbose") 542818fc9adSBram Moolenaar call assert_equal([' verbose=4', ' verbose=0'], split(l, "\n")) 543818fc9adSBram Moolenaarendfunc 544818fc9adSBram Moolenaar 545818fc9adSBram Moolenaar" Test for the :delete command and the related abbreviated commands 546818fc9adSBram Moolenaarfunc Test_excmd_delete() 547818fc9adSBram Moolenaar new 548818fc9adSBram Moolenaar call setline(1, ['foo', "\tbar"]) 549818fc9adSBram Moolenaar call assert_equal(['^Ibar$'], split(execute('dl'), "\n")) 550818fc9adSBram Moolenaar call setline(1, ['foo', "\tbar"]) 551818fc9adSBram Moolenaar call assert_equal(['^Ibar$'], split(execute('dell'), "\n")) 552818fc9adSBram Moolenaar call setline(1, ['foo', "\tbar"]) 553818fc9adSBram Moolenaar call assert_equal(['^Ibar$'], split(execute('delel'), "\n")) 554818fc9adSBram Moolenaar call setline(1, ['foo', "\tbar"]) 555818fc9adSBram Moolenaar call assert_equal(['^Ibar$'], split(execute('deletl'), "\n")) 556818fc9adSBram Moolenaar call setline(1, ['foo', "\tbar"]) 557818fc9adSBram Moolenaar call assert_equal(['^Ibar$'], split(execute('deletel'), "\n")) 558818fc9adSBram Moolenaar call setline(1, ['foo', "\tbar"]) 559818fc9adSBram Moolenaar call assert_equal([' bar'], split(execute('dp'), "\n")) 560818fc9adSBram Moolenaar call setline(1, ['foo', "\tbar"]) 561818fc9adSBram Moolenaar call assert_equal([' bar'], split(execute('dep'), "\n")) 562818fc9adSBram Moolenaar call setline(1, ['foo', "\tbar"]) 563818fc9adSBram Moolenaar call assert_equal([' bar'], split(execute('delp'), "\n")) 564818fc9adSBram Moolenaar call setline(1, ['foo', "\tbar"]) 565818fc9adSBram Moolenaar call assert_equal([' bar'], split(execute('delep'), "\n")) 566818fc9adSBram Moolenaar call setline(1, ['foo', "\tbar"]) 567818fc9adSBram Moolenaar call assert_equal([' bar'], split(execute('deletp'), "\n")) 568818fc9adSBram Moolenaar call setline(1, ['foo', "\tbar"]) 569818fc9adSBram Moolenaar call assert_equal([' bar'], split(execute('deletep'), "\n")) 570818fc9adSBram Moolenaar close! 571bc2b71d4SBram Moolenaarendfunc 572bc2b71d4SBram Moolenaar 573ca68ae13SBram Moolenaar" Test for commands that are blocked in a sandbox 574ca68ae13SBram Moolenaarfunc Sandbox_tests() 575ca68ae13SBram Moolenaar call assert_fails("call histadd(':', 'ls')", 'E48:') 576ca68ae13SBram Moolenaar call assert_fails("call mkdir('Xdir')", 'E48:') 577ca68ae13SBram Moolenaar call assert_fails("call rename('a', 'b')", 'E48:') 578ca68ae13SBram Moolenaar call assert_fails("call setbufvar(1, 'myvar', 1)", 'E48:') 579ca68ae13SBram Moolenaar call assert_fails("call settabvar(1, 'myvar', 1)", 'E48:') 580ca68ae13SBram Moolenaar call assert_fails("call settabwinvar(1, 1, 'myvar', 1)", 'E48:') 581ca68ae13SBram Moolenaar call assert_fails("call setwinvar(1, 'myvar', 1)", 'E48:') 582ca68ae13SBram Moolenaar call assert_fails("call timer_start(100, '')", 'E48:') 583ca68ae13SBram Moolenaar if has('channel') 584ca68ae13SBram Moolenaar call assert_fails("call prompt_setcallback(1, '')", 'E48:') 585ca68ae13SBram Moolenaar call assert_fails("call prompt_setinterrupt(1, '')", 'E48:') 586ca68ae13SBram Moolenaar call assert_fails("call prompt_setprompt(1, '')", 'E48:') 587ca68ae13SBram Moolenaar endif 588ca68ae13SBram Moolenaar call assert_fails("let $TESTVAR=1", 'E48:') 589ca68ae13SBram Moolenaar call assert_fails("call feedkeys('ivim')", 'E48:') 590ca68ae13SBram Moolenaar call assert_fails("source! Xfile", 'E48:') 591ca68ae13SBram Moolenaar call assert_fails("call delete('Xfile')", 'E48:') 592ca68ae13SBram Moolenaar call assert_fails("call writefile([], 'Xfile')", 'E48:') 593ca68ae13SBram Moolenaar call assert_fails('!ls', 'E48:') 594ca68ae13SBram Moolenaar call assert_fails('shell', 'E48:') 595ca68ae13SBram Moolenaar call assert_fails('stop', 'E48:') 596ca68ae13SBram Moolenaar call assert_fails('exe "normal \<C-Z>"', 'E48:') 597ca68ae13SBram Moolenaar set insertmode 598ca68ae13SBram Moolenaar call assert_fails('call feedkeys("\<C-Z>", "xt")', 'E48:') 599ca68ae13SBram Moolenaar set insertmode& 600ca68ae13SBram Moolenaar call assert_fails('suspend', 'E48:') 601ca68ae13SBram Moolenaar call assert_fails('call system("ls")', 'E48:') 602ca68ae13SBram Moolenaar call assert_fails('call systemlist("ls")', 'E48:') 603ca68ae13SBram Moolenaar if has('clientserver') 604ca68ae13SBram Moolenaar call assert_fails('let s=remote_expr("gvim", "2+2")', 'E48:') 605ca68ae13SBram Moolenaar if !has('win32') 606ca68ae13SBram Moolenaar " remote_foreground() doesn't thrown an error message on MS-Windows 607ca68ae13SBram Moolenaar call assert_fails('call remote_foreground("gvim")', 'E48:') 608ca68ae13SBram Moolenaar endif 609ca68ae13SBram Moolenaar call assert_fails('let s=remote_peek("gvim")', 'E48:') 610ca68ae13SBram Moolenaar call assert_fails('let s=remote_read("gvim")', 'E48:') 611ca68ae13SBram Moolenaar call assert_fails('let s=remote_send("gvim", "abc")', 'E48:') 612ca68ae13SBram Moolenaar call assert_fails('let s=server2client("gvim", "abc")', 'E48:') 613ca68ae13SBram Moolenaar endif 614ca68ae13SBram Moolenaar if has('terminal') 615ca68ae13SBram Moolenaar call assert_fails('terminal', 'E48:') 616ca68ae13SBram Moolenaar call assert_fails('call term_start("vim")', 'E48:') 617ca68ae13SBram Moolenaar call assert_fails('call term_dumpwrite(1, "Xfile")', 'E48:') 618ca68ae13SBram Moolenaar endif 619ca68ae13SBram Moolenaar if has('channel') 620ca68ae13SBram Moolenaar call assert_fails("call ch_logfile('chlog')", 'E48:') 621ca68ae13SBram Moolenaar call assert_fails("call ch_open('localhost:8765')", 'E48:') 622ca68ae13SBram Moolenaar endif 623ca68ae13SBram Moolenaar if has('job') 624ca68ae13SBram Moolenaar call assert_fails("call job_start('vim')", 'E48:') 625ca68ae13SBram Moolenaar endif 626ca68ae13SBram Moolenaar if has('unix') && has('libcall') 627ca68ae13SBram Moolenaar call assert_fails("echo libcall('libc.so', 'getenv', 'HOME')", 'E48:') 628ca68ae13SBram Moolenaar endif 629ca68ae13SBram Moolenaar if has('unix') 630ca68ae13SBram Moolenaar call assert_fails('cd `pwd`', 'E48:') 631ca68ae13SBram Moolenaar endif 63259585497SYegappan Lakshmanan " some options cannot be changed in a sandbox 63359585497SYegappan Lakshmanan call assert_fails('set exrc', 'E48:') 63459585497SYegappan Lakshmanan call assert_fails('set cdpath', 'E48:') 6352d6d718dSYegappan Lakshmanan if has('xim') && has('gui_gtk') 63659585497SYegappan Lakshmanan call assert_fails('set imstyle', 'E48:') 63759585497SYegappan Lakshmanan endif 638ca68ae13SBram Moolenaarendfunc 639ca68ae13SBram Moolenaar 640ca68ae13SBram Moolenaarfunc Test_sandbox() 641ca68ae13SBram Moolenaar sandbox call Sandbox_tests() 642ca68ae13SBram Moolenaarendfunc 643ca68ae13SBram Moolenaar 6446d37e8e3SDominique Pellefunc Test_command_not_implemented_E319() 6456d37e8e3SDominique Pelle if !has('mzscheme') 6466d37e8e3SDominique Pelle call assert_fails('mzscheme', 'E319:') 6476d37e8e3SDominique Pelle endif 6486d37e8e3SDominique Pelleendfunc 6496d37e8e3SDominique Pelle 650*08d7b1c8Skuuotefunc Test_not_break_expression_register() 651*08d7b1c8Skuuote call setreg('=', '1+1') 652*08d7b1c8Skuuote if 0 653*08d7b1c8Skuuote put =1 654*08d7b1c8Skuuote endif 655*08d7b1c8Skuuote call assert_equal('1+1', getreg('=', 1)) 656*08d7b1c8Skuuoteendfunc 657*08d7b1c8Skuuote 6585d98dc2aSBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab 659