Mercurial > vim
view src/testdir/test_cd.vim @ 19115:7c7cf6b1e1cf
Added tag v8.2.0117 for changeset 3856047f2211ca2c43d7ca2fa7b7c888a617ddfc
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Tue, 14 Jan 2020 19:15:05 +0100 |
parents | 5bef1043abff |
children | a20c66f13a6e |
line wrap: on
line source
" Test for :cd and chdir() func Test_cd_large_path() " This used to crash with a heap write overflow. call assert_fails('cd ' . repeat('x', 5000), 'E472:') endfunc func Test_cd_up_and_down() let path = getcwd() cd .. call assert_notequal(path, getcwd()) exe 'cd ' .. fnameescape(path) call assert_equal(path, getcwd()) endfunc func Test_cd_no_arg() if has('unix') " Test that cd without argument goes to $HOME directory on Unix systems. let path = getcwd() cd call assert_equal($HOME, getcwd()) call assert_notequal(path, getcwd()) exe 'cd ' .. fnameescape(path) call assert_equal(path, getcwd()) else " Test that cd without argument echoes cwd on non-Unix systems. call assert_match(getcwd(), execute('cd')) endif endfunc func Test_cd_minus() " Test the :cd - goes back to the previous directory. let path = getcwd() cd .. let path_dotdot = getcwd() call assert_notequal(path, path_dotdot) cd - call assert_equal(path, getcwd()) cd - call assert_equal(path_dotdot, getcwd()) cd - call assert_equal(path, getcwd()) endfunc func Test_cd_with_cpo_chdir() e Xfoo call setline(1, 'foo') let path = getcwd() set cpo+=. " :cd should fail when buffer is modified and 'cpo' contains dot. call assert_fails('cd ..', 'E747:') call assert_equal(path, getcwd()) " :cd with exclamation mark should succeed. cd! .. call assert_notequal(path, getcwd()) " :cd should succeed when buffer has been written. w! exe 'cd ' .. fnameescape(path) call assert_equal(path, getcwd()) call delete('Xfoo') set cpo& bw! endfunc " Test for chdir() func Test_chdir_func() let topdir = getcwd() call mkdir('Xdir/y/z', 'p') " Create a few tabpages and windows with different directories new cd Xdir tabnew tcd y below new below new lcd z tabfirst call chdir('..') call assert_equal('y', fnamemodify(getcwd(1, 2), ':t')) call assert_equal('z', fnamemodify(3->getcwd(2), ':t')) tabnext | wincmd t eval '..'->chdir() call assert_equal('Xdir', fnamemodify(getcwd(1, 2), ':t')) call assert_equal('Xdir', fnamemodify(getcwd(2, 2), ':t')) call assert_equal('z', fnamemodify(getcwd(3, 2), ':t')) call assert_equal('testdir', fnamemodify(getcwd(1, 1), ':t')) 3wincmd w call chdir('..') call assert_equal('Xdir', fnamemodify(getcwd(1, 2), ':t')) call assert_equal('Xdir', fnamemodify(getcwd(2, 2), ':t')) call assert_equal('y', fnamemodify(getcwd(3, 2), ':t')) call assert_equal('testdir', fnamemodify(getcwd(1, 1), ':t')) " Error case call assert_fails("call chdir('dir-abcd')", 'E472:') silent! let d = chdir("dir_abcd") call assert_equal("", d) only | tabonly call chdir(topdir) call delete('Xdir', 'rf') endfunc func Test_cd_completion() call mkdir('XComplDir1', 'p') call mkdir('XComplDir2', 'p') call writefile([], 'XComplFile') for cmd in ['cd', 'chdir', 'lcd', 'lchdir', 'tcd', 'tchdir'] call feedkeys(':' .. cmd .. " XCompl\<C-A>\<C-B>\"\<CR>", 'tx') call assert_equal('"' .. cmd .. ' XComplDir1/ XComplDir2/', @:) endfor call delete('XComplDir1', 'd') call delete('XComplDir2', 'd') call delete('XComplFile') endfunc