Mercurial > vim
changeset 14256:a1d21fc6e457 v8.1.0144
patch 8.1.0144: the :cd command does not have good test coverage
commit https://github.com/vim/vim/commit/b2e0c94a4d27e3e6222d26f13e0418a85cab21a2
Author: Bram Moolenaar <Bram@vim.org>
Date: Tue Jul 3 18:36:27 2018 +0200
patch 8.1.0144: the :cd command does not have good test coverage
Problem: The :cd command does not have good test coverage.
Solution: Add more tests. (Dominique Pelle, closes https://github.com/vim/vim/issues/2972)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Tue, 03 Jul 2018 18:45:07 +0200 |
parents | 0b47fbbde504 |
children | 2d81cd3925d2 |
files | src/testdir/test_cd.vim src/version.c |
diffstat | 2 files changed, 56 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/testdir/test_cd.vim +++ b/src/testdir/test_cd.vim @@ -8,6 +8,60 @@ endfunc func Test_cd_up_and_down() let path = getcwd() cd .. + call assert_notequal(path, getcwd()) exe 'cd ' . 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 ' . 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 ' . path + call assert_equal(path, getcwd()) + + call delete('Xfoo') + set cpo& + bw! +endfunc