test_autochdir.vim (3269B)
1 " Test 'autochdir' behavior 2 3 source check.vim 4 CheckOption autochdir 5 6 func Test_set_filename() 7 CheckFunction test_autochdir 8 let cwd = getcwd() 9 call test_autochdir() 10 set acd 11 12 let s:li = [] 13 autocmd DirChanged auto call add(s:li, "autocd") 14 autocmd DirChanged auto call add(s:li, expand("<afile>")) 15 16 new 17 w samples/Xtest 18 call assert_equal("Xtest", expand('%')) 19 call assert_equal("samples", substitute(getcwd(), '.*/\(\k*\)', '\1', '')) 20 call assert_equal(["autocd", getcwd()], s:li) 21 22 bwipe! 23 au! DirChanged 24 set noacd 25 call chdir(cwd) 26 call delete('samples/Xtest') 27 endfunc 28 29 func Test_set_filename_other_window() 30 CheckFunction test_autochdir 31 let cwd = getcwd() 32 call test_autochdir() 33 call mkdir('Xa', 'R') 34 call mkdir('Xb', 'R') 35 call mkdir('Xc', 'R') 36 try 37 args Xa/aaa.txt Xb/bbb.txt 38 set acd 39 let winid = win_getid() 40 snext 41 call assert_equal('Xb', substitute(getcwd(), '.*/\([^/]*\)$', '\1', '')) 42 call win_execute(winid, 'file ' .. cwd .. '/Xc/ccc.txt') 43 call assert_equal('Xb', substitute(getcwd(), '.*/\([^/]*\)$', '\1', '')) 44 finally 45 set noacd 46 call chdir(cwd) 47 bwipe! aaa.txt 48 bwipe! bbb.txt 49 bwipe! ccc.txt 50 endtry 51 endfunc 52 53 func Test_acd_win_execute() 54 CheckFunction test_autochdir 55 let cwd = getcwd() 56 set acd 57 call test_autochdir() 58 59 call mkdir('XacdDir', 'R') 60 let winid = win_getid() 61 new XacdDir/file 62 call assert_match('testdir.XacdDir$', getcwd()) 63 cd .. 64 call assert_match('testdir$', getcwd()) 65 call win_execute(winid, 'echo') 66 call assert_match('testdir$', getcwd()) 67 68 bwipe! 69 set noacd 70 call chdir(cwd) 71 endfunc 72 73 func Test_verbose_pwd() 74 CheckFunction test_autochdir 75 let cwd = getcwd() 76 call test_autochdir() 77 78 edit global.txt 79 call assert_match('\[global\].*testdir$', execute('verbose pwd')) 80 81 call mkdir('Xautodir', 'R') 82 split Xautodir/local.txt 83 lcd Xautodir 84 call assert_match('\[window\].*testdir[/\\]Xautodir', execute('verbose pwd')) 85 86 set acd 87 wincmd w 88 call assert_match('\[autochdir\].*testdir$', execute('verbose pwd')) 89 execute 'tcd' cwd 90 call assert_match('\[tabpage\].*testdir$', execute('verbose pwd')) 91 execute 'cd' cwd 92 call assert_match('\[global\].*testdir$', execute('verbose pwd')) 93 execute 'lcd' cwd 94 call assert_match('\[window\].*testdir$', execute('verbose pwd')) 95 edit 96 call assert_match('\[autochdir\].*testdir$', execute('verbose pwd')) 97 enew 98 wincmd w 99 call assert_match('\[autochdir\].*testdir[/\\]Xautodir', execute('verbose pwd')) 100 wincmd w 101 call assert_match('\[window\].*testdir$', execute('verbose pwd')) 102 wincmd w 103 call assert_match('\[autochdir\].*testdir[/\\]Xautodir', execute('verbose pwd')) 104 set noacd 105 call assert_match('\[autochdir\].*testdir[/\\]Xautodir', execute('verbose pwd')) 106 wincmd w 107 call assert_match('\[window\].*testdir$', execute('verbose pwd')) 108 execute 'cd' cwd 109 call assert_match('\[global\].*testdir$', execute('verbose pwd')) 110 wincmd w 111 call assert_match('\[window\].*testdir[/\\]Xautodir', execute('verbose pwd')) 112 113 bwipe! 114 call chdir(cwd) 115 endfunc 116 117 func Test_multibyte() 118 " using an invalid character should not cause a crash 119 set wic 120 call assert_fails('tc �����*', has('win32') ? 'E480:' : 'E344:') 121 set nowic 122 endfunc 123 124 125 " vim: shiftwidth=2 sts=2 expandtab