blob: f62d21afa1f26029e82186ddbee80c5ec70a9c83 [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:"
Bram Moolenaar1b0c2fc2016-09-05 23:29:26 +020012:" On windows a swapfile in Xtopdir prevents it from being cleaned up.
13:set noswapfile
14:"
Bram Moolenaarc9703302016-01-17 21:49:33 +010015:function! GetCwdInfo(win, tab)
16: let tab_changed = 0
17: let mod = ":t"
18: if a:tab > 0 && a:tab != tabpagenr()
19: let tab_changed = 1
20: exec "tabnext " . a:tab
21: endif
22: let bufname = fnamemodify(bufname(winbufnr(a:win)), mod)
23: if tab_changed
24: tabprevious
25: endif
26: if a:win == 0 && a:tab == 0
27: let dirname = fnamemodify(getcwd(), mod)
28: let lflag = haslocaldir()
29: elseif a:tab == 0
30: let dirname = fnamemodify(getcwd(a:win), mod)
31: let lflag = haslocaldir(a:win)
32: else
33: let dirname = fnamemodify(getcwd(a:win, a:tab), mod)
34: let lflag = haslocaldir(a:win, a:tab)
35: endif
36: return bufname . ' ' . dirname . ' ' . lflag
37:endfunction
38:" On windows a stale "Xtopdir" directory may exist, remove it so that
39:" we start from a clean state.
Bram Moolenaarabc70bb2016-06-08 21:48:50 +020040:call delete("Xtopdir", "rf")
Bram Moolenaarc9703302016-01-17 21:49:33 +010041:let r=[]
42:new
43:let cwd=getcwd()
44:let test_out = cwd . '/test.out'
45:call mkdir('Xtopdir')
46:cd Xtopdir
47:call mkdir('Xdir1')
48:call mkdir('Xdir2')
49:call mkdir('Xdir3')
50:new a
51:new b
52:new c
53:3wincmd w
54:lcd Xdir1
55:call add(r, GetCwdInfo(0, 0))
56:wincmd W
57:call add(r, GetCwdInfo(0, 0))
58:wincmd W
59:lcd Xdir3
60:call add(r, GetCwdInfo(0, 0))
61:call add(r, GetCwdInfo(bufwinnr("a"), 0))
62:call add(r, GetCwdInfo(bufwinnr("b"), 0))
63:call add(r, GetCwdInfo(bufwinnr("c"), 0))
64:wincmd W
65:call add(r, GetCwdInfo(bufwinnr("a"), tabpagenr()))
66:call add(r, GetCwdInfo(bufwinnr("b"), tabpagenr()))
67:call add(r, GetCwdInfo(bufwinnr("c"), tabpagenr()))
68:"
69:tabnew x
70:new y
71:new z
72:3wincmd w
73:call add(r, GetCwdInfo(0, 0))
74:wincmd W
75:lcd Xdir2
76:call add(r, GetCwdInfo(0, 0))
77:wincmd W
78:lcd Xdir3
79:call add(r, GetCwdInfo(0, 0))
80:call add(r, GetCwdInfo(bufwinnr("x"), 0))
81:call add(r, GetCwdInfo(bufwinnr("y"), 0))
82:call add(r, GetCwdInfo(bufwinnr("z"), 0))
83:let tp_nr = tabpagenr()
84:tabrewind
85:call add(r, GetCwdInfo(3, tp_nr))
86:call add(r, GetCwdInfo(2, tp_nr))
87:call add(r, GetCwdInfo(1, tp_nr))
88:"
89:call writefile(r, test_out, "a")
90:q
91:exec "cd " . cwd
Bram Moolenaarabc70bb2016-06-08 21:48:50 +020092:call delete("Xtopdir", "rf")
Bram Moolenaarc9703302016-01-17 21:49:33 +010093:qa!
94ENDTEST
95
96