blob: 8c7b24ebf0f6e1e8180a503270c6afde2d6831d9 [file] [log] [blame]
Bram Moolenaarc9703302016-01-17 21:49:33 +01001Tests for getcwd(), haslocaldir(), and :lcd vim: set ft=vim :
2
3STARTTEST
4:so small.vim
5:" Do all test in a separate window to avoid E211 when we recursively
6:" delete the Xtopdir directory during cleanup
7:"
8:" This will cause a few errors, do it silently.
9:set visualbell
10:set nocp viminfo+=nviminfo
11:"
12:function! DeleteDirectory(dir)
13: if has("win16") || has("win32") || has("win64") || has("dos16") || has("dos32")
14: exec "silent !rmdir /Q /S " . a:dir
15: else
16: exec "silent !rm -rf " . a:dir
17: endif
18:endfun
19:"
20:function! GetCwdInfo(win, tab)
21: let tab_changed = 0
22: let mod = ":t"
23: if a:tab > 0 && a:tab != tabpagenr()
24: let tab_changed = 1
25: exec "tabnext " . a:tab
26: endif
27: let bufname = fnamemodify(bufname(winbufnr(a:win)), mod)
28: if tab_changed
29: tabprevious
30: endif
31: if a:win == 0 && a:tab == 0
32: let dirname = fnamemodify(getcwd(), mod)
33: let lflag = haslocaldir()
34: elseif a:tab == 0
35: let dirname = fnamemodify(getcwd(a:win), mod)
36: let lflag = haslocaldir(a:win)
37: else
38: let dirname = fnamemodify(getcwd(a:win, a:tab), mod)
39: let lflag = haslocaldir(a:win, a:tab)
40: endif
41: return bufname . ' ' . dirname . ' ' . lflag
42:endfunction
43:" On windows a stale "Xtopdir" directory may exist, remove it so that
44:" we start from a clean state.
45:call DeleteDirectory("Xtopdir")
46:let r=[]
47:new
48:let cwd=getcwd()
49:let test_out = cwd . '/test.out'
50:call mkdir('Xtopdir')
51:cd Xtopdir
52:call mkdir('Xdir1')
53:call mkdir('Xdir2')
54:call mkdir('Xdir3')
55:new a
56:new b
57:new c
58:3wincmd w
59:lcd Xdir1
60:call add(r, GetCwdInfo(0, 0))
61:wincmd W
62:call add(r, GetCwdInfo(0, 0))
63:wincmd W
64:lcd Xdir3
65:call add(r, GetCwdInfo(0, 0))
66:call add(r, GetCwdInfo(bufwinnr("a"), 0))
67:call add(r, GetCwdInfo(bufwinnr("b"), 0))
68:call add(r, GetCwdInfo(bufwinnr("c"), 0))
69:wincmd W
70:call add(r, GetCwdInfo(bufwinnr("a"), tabpagenr()))
71:call add(r, GetCwdInfo(bufwinnr("b"), tabpagenr()))
72:call add(r, GetCwdInfo(bufwinnr("c"), tabpagenr()))
73:"
74:tabnew x
75:new y
76:new z
77:3wincmd w
78:call add(r, GetCwdInfo(0, 0))
79:wincmd W
80:lcd Xdir2
81:call add(r, GetCwdInfo(0, 0))
82:wincmd W
83:lcd Xdir3
84:call add(r, GetCwdInfo(0, 0))
85:call add(r, GetCwdInfo(bufwinnr("x"), 0))
86:call add(r, GetCwdInfo(bufwinnr("y"), 0))
87:call add(r, GetCwdInfo(bufwinnr("z"), 0))
88:let tp_nr = tabpagenr()
89:tabrewind
90:call add(r, GetCwdInfo(3, tp_nr))
91:call add(r, GetCwdInfo(2, tp_nr))
92:call add(r, GetCwdInfo(1, tp_nr))
93:"
94:call writefile(r, test_out, "a")
95:q
96:exec "cd " . cwd
97:call DeleteDirectory("Xtopdir")
98:qa!
99ENDTEST
100
101