158adb147SBram Moolenaar" Test for expanding file names 258adb147SBram Moolenaar 3bc2b71d4SBram Moolenaarsource shared.vim 4*8b8d829fSChristian Brabandtsource check.vim 5bc2b71d4SBram Moolenaar 658adb147SBram Moolenaarfunc Test_with_directories() 758adb147SBram Moolenaar call mkdir('Xdir1') 858adb147SBram Moolenaar call mkdir('Xdir2') 958adb147SBram Moolenaar call mkdir('Xdir3') 1058adb147SBram Moolenaar cd Xdir3 1158adb147SBram Moolenaar call mkdir('Xdir4') 1258adb147SBram Moolenaar cd .. 1358adb147SBram Moolenaar 1458adb147SBram Moolenaar split Xdir1/file 1558adb147SBram Moolenaar call setline(1, ['a', 'b']) 1658adb147SBram Moolenaar w 1758adb147SBram Moolenaar w Xdir3/Xdir4/file 1858adb147SBram Moolenaar close 1958adb147SBram Moolenaar 2058adb147SBram Moolenaar next Xdir?/*/file 2158adb147SBram Moolenaar call assert_equal('Xdir3/Xdir4/file', expand('%')) 22f60b796fSBram Moolenaar if has('unix') 2358adb147SBram Moolenaar next! Xdir?/*/nofile 2458adb147SBram Moolenaar call assert_equal('Xdir?/*/nofile', expand('%')) 25f60b796fSBram Moolenaar endif 2608b270a8SBram Moolenaar " Edit another file, on MS-Windows the swap file would be in use and can't 2708b270a8SBram Moolenaar " be deleted. 2808b270a8SBram Moolenaar edit foo 2958adb147SBram Moolenaar 3008b270a8SBram Moolenaar call assert_equal(0, delete('Xdir1', 'rf')) 3108b270a8SBram Moolenaar call assert_equal(0, delete('Xdir2', 'rf')) 3208b270a8SBram Moolenaar call assert_equal(0, delete('Xdir3', 'rf')) 3358adb147SBram Moolenaarendfunc 3458adb147SBram Moolenaar 3558adb147SBram Moolenaarfunc Test_with_tilde() 3658adb147SBram Moolenaar let dir = getcwd() 3758adb147SBram Moolenaar call mkdir('Xdir ~ dir') 3858adb147SBram Moolenaar call assert_true(isdirectory('Xdir ~ dir')) 3958adb147SBram Moolenaar cd Xdir\ ~\ dir 4058adb147SBram Moolenaar call assert_true(getcwd() =~ 'Xdir \~ dir') 413503d7c9SBram Moolenaar call chdir(dir) 4258adb147SBram Moolenaar call delete('Xdir ~ dir', 'd') 4358adb147SBram Moolenaar call assert_false(isdirectory('Xdir ~ dir')) 4458adb147SBram Moolenaarendfunc 4500136dc3SBram Moolenaar 4600136dc3SBram Moolenaarfunc Test_expand_tilde_filename() 4700136dc3SBram Moolenaar split ~ 4800136dc3SBram Moolenaar call assert_equal('~', expand('%')) 4900136dc3SBram Moolenaar call assert_notequal(expand('%:p'), expand('~/')) 5000136dc3SBram Moolenaar call assert_match('\~', expand('%:p')) 5100136dc3SBram Moolenaar bwipe! 5200136dc3SBram Moolenaarendfunc 5380dad48cSBram Moolenaar 5480dad48cSBram Moolenaarfunc Test_expandcmd() 5580dad48cSBram Moolenaar let $FOO = 'Test' 5680dad48cSBram Moolenaar call assert_equal('e x/Test/y', expandcmd('e x/$FOO/y')) 5780dad48cSBram Moolenaar unlet $FOO 5880dad48cSBram Moolenaar 5980dad48cSBram Moolenaar new 6080dad48cSBram Moolenaar edit Xfile1 6180dad48cSBram Moolenaar call assert_equal('e Xfile1', expandcmd('e %')) 6280dad48cSBram Moolenaar edit Xfile2 6380dad48cSBram Moolenaar edit Xfile1 64a4208966SBram Moolenaar call assert_equal('e Xfile2', 'e #'->expandcmd()) 6580dad48cSBram Moolenaar edit Xfile2 6680dad48cSBram Moolenaar edit Xfile3 6780dad48cSBram Moolenaar edit Xfile4 6880dad48cSBram Moolenaar let bnum = bufnr('Xfile2') 6980dad48cSBram Moolenaar call assert_equal('e Xfile2', expandcmd('e #' . bnum)) 7080dad48cSBram Moolenaar call setline('.', 'Vim!@#') 7180dad48cSBram Moolenaar call assert_equal('e Vim', expandcmd('e <cword>')) 7280dad48cSBram Moolenaar call assert_equal('e Vim!@#', expandcmd('e <cWORD>')) 7380dad48cSBram Moolenaar enew! 7480dad48cSBram Moolenaar edit Xfile.java 7580dad48cSBram Moolenaar call assert_equal('e Xfile.py', expandcmd('e %:r.py')) 7680dad48cSBram Moolenaar call assert_equal('make abc.java', expandcmd('make abc.%:e')) 7780dad48cSBram Moolenaar call assert_equal('make Xabc.java', expandcmd('make %:s?file?abc?')) 7880dad48cSBram Moolenaar edit a1a2a3.rb 7980dad48cSBram Moolenaar call assert_equal('make b1b2b3.rb a1a2a3 Xfile.o', expandcmd('make %:gs?a?b? %< #<.o')) 8080dad48cSBram Moolenaar 8180dad48cSBram Moolenaar call assert_fails('call expandcmd("make <afile>")', 'E495:') 8280dad48cSBram Moolenaar call assert_fails('call expandcmd("make <afile>")', 'E495:') 8380dad48cSBram Moolenaar enew 8480dad48cSBram Moolenaar call assert_fails('call expandcmd("make %")', 'E499:') 85818fc9adSBram Moolenaar let $FOO="blue\tsky" 86818fc9adSBram Moolenaar call setline(1, "$FOO") 87818fc9adSBram Moolenaar call assert_equal("grep pat blue\tsky", expandcmd('grep pat <cfile>')) 88cde0ff39SBram Moolenaar 89cde0ff39SBram Moolenaar " Test for expression expansion `= 90cde0ff39SBram Moolenaar let $FOO= "blue" 91cde0ff39SBram Moolenaar call assert_equal("blue sky", expandcmd("`=$FOO .. ' sky'`")) 92cde0ff39SBram Moolenaar 93cde0ff39SBram Moolenaar " Test for env variable with spaces 94cde0ff39SBram Moolenaar let $FOO= "foo bar baz" 95cde0ff39SBram Moolenaar call assert_equal("e foo bar baz", expandcmd("e $FOO")) 96cde0ff39SBram Moolenaar 97818fc9adSBram Moolenaar unlet $FOO 98818fc9adSBram Moolenaar close! 9980dad48cSBram Moolenaarendfunc 100bc2b71d4SBram Moolenaar 101bc2b71d4SBram Moolenaar" Test for expanding <sfile>, <slnum> and <sflnum> outside of sourcing a script 102bc2b71d4SBram Moolenaarfunc Test_source_sfile() 103bc2b71d4SBram Moolenaar let lines =<< trim [SCRIPT] 104bc2b71d4SBram Moolenaar :call assert_fails('echo expandcmd("<sfile>")', 'E498:') 105bc2b71d4SBram Moolenaar :call assert_fails('echo expandcmd("<slnum>")', 'E842:') 106bc2b71d4SBram Moolenaar :call assert_fails('echo expandcmd("<sflnum>")', 'E961:') 107bc2b71d4SBram Moolenaar :call assert_fails('call expandcmd("edit <cfile>")', 'E446:') 108bc2b71d4SBram Moolenaar :call assert_fails('call expandcmd("edit #")', 'E194:') 109bc2b71d4SBram Moolenaar :call assert_fails('call expandcmd("edit #<2")', 'E684:') 110bc2b71d4SBram Moolenaar :call assert_fails('call expandcmd("edit <cword>")', 'E348:') 111bc2b71d4SBram Moolenaar :call assert_fails('call expandcmd("edit <cexpr>")', 'E348:') 112bc2b71d4SBram Moolenaar :call assert_fails('autocmd User MyCmd echo "<sfile>"', 'E498:') 113bc2b71d4SBram Moolenaar :call writefile(v:errors, 'Xresult') 114bc2b71d4SBram Moolenaar :qall! 115bc2b71d4SBram Moolenaar 116bc2b71d4SBram Moolenaar [SCRIPT] 117bc2b71d4SBram Moolenaar call writefile(lines, 'Xscript') 118bc2b71d4SBram Moolenaar if RunVim([], [], '--clean -s Xscript') 119bc2b71d4SBram Moolenaar call assert_equal([], readfile('Xresult')) 120bc2b71d4SBram Moolenaar endif 121bc2b71d4SBram Moolenaar call delete('Xscript') 122bc2b71d4SBram Moolenaar call delete('Xresult') 123bc2b71d4SBram Moolenaarendfunc 124bc2b71d4SBram Moolenaar 125818fc9adSBram Moolenaar" Test for expanding filenames multiple times in a command line 126818fc9adSBram Moolenaarfunc Test_expand_filename_multicmd() 127818fc9adSBram Moolenaar edit foo 128818fc9adSBram Moolenaar call setline(1, 'foo!') 129818fc9adSBram Moolenaar new 130818fc9adSBram Moolenaar call setline(1, 'foo!') 131818fc9adSBram Moolenaar new <cword> | new <cWORD> 132818fc9adSBram Moolenaar call assert_equal(4, winnr('$')) 133818fc9adSBram Moolenaar call assert_equal('foo!', bufname(winbufnr(1))) 134818fc9adSBram Moolenaar call assert_equal('foo', bufname(winbufnr(2))) 135ee4e0c1eSBram Moolenaar call assert_fails('e %:s/.*//', 'E500:') 136818fc9adSBram Moolenaar %bwipe! 137818fc9adSBram Moolenaarendfunc 138bc2b71d4SBram Moolenaar 139*8b8d829fSChristian Brabandtfunc Test_expandcmd_shell_nonomatch() 140*8b8d829fSChristian Brabandt CheckNotMSWindows 141*8b8d829fSChristian Brabandt call assert_equal('$*', expandcmd('$*')) 142*8b8d829fSChristian Brabandtendfunc 143*8b8d829fSChristian Brabandt 144bc2b71d4SBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab 145