1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
" Test for :cd
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 ' . 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
|