blob: 15eab2abbb487bfbc07fc5ba074b06714c85b52b [file] [log] [blame]
Bram Moolenaar292eff02017-07-11 21:46:28 +02001function! GetCwdInfo(win, tab)
2 let tab_changed = 0
3 let mod = ":t"
4 if a:tab > 0 && a:tab != tabpagenr()
5 let tab_changed = 1
6 exec "tabnext " . a:tab
7 endif
8 let bufname = fnamemodify(bufname(winbufnr(a:win)), mod)
9 if tab_changed
10 tabprevious
11 endif
12 if a:win == 0 && a:tab == 0
13 let dirname = fnamemodify(getcwd(), mod)
14 let lflag = haslocaldir()
15 elseif a:tab == 0
16 let dirname = fnamemodify(getcwd(a:win), mod)
17 let lflag = haslocaldir(a:win)
18 else
19 let dirname = fnamemodify(getcwd(a:win, a:tab), mod)
20 let lflag = haslocaldir(a:win, a:tab)
21 endif
22 return bufname . ' ' . dirname . ' ' . lflag
23endfunction
24
25" Do all test in a separate window to avoid E211 when we recursively
26" delete the Xtopdir directory during cleanup
27function SetUp()
28 set visualbell
29 set nocp viminfo+=nviminfo
30
31 " On windows a swapfile in Xtopdir prevents it from being cleaned up.
32 set noswapfile
33
34 " On windows a stale "Xtopdir" directory may exist, remove it so that
35 " we start from a clean state.
36 call delete("Xtopdir", "rf")
37 new
38 call mkdir('Xtopdir')
39 cd Xtopdir
40 call mkdir('Xdir1')
41 call mkdir('Xdir2')
42 call mkdir('Xdir3')
43endfunction
44
45let g:cwd=getcwd()
46function TearDown()
47 q
48 exec "cd " . g:cwd
49 call delete("Xtopdir", "rf")
50endfunction
51
52function Test_GetCwd()
53 new a
54 new b
55 new c
56 3wincmd w
57 lcd Xdir1
58 call assert_equal("a Xdir1 1", GetCwdInfo(0, 0))
59 wincmd W
60 call assert_equal("b Xtopdir 0", GetCwdInfo(0, 0))
61 wincmd W
62 lcd Xdir3
63 call assert_equal("c Xdir3 1", GetCwdInfo(0, 0))
64 call assert_equal("a Xdir1 1", GetCwdInfo(bufwinnr("a"), 0))
65 call assert_equal("b Xtopdir 0", GetCwdInfo(bufwinnr("b"), 0))
66 call assert_equal("c Xdir3 1", GetCwdInfo(bufwinnr("c"), 0))
67 wincmd W
68 call assert_equal("a Xdir1 1", GetCwdInfo(bufwinnr("a"), tabpagenr()))
69 call assert_equal("b Xtopdir 0", GetCwdInfo(bufwinnr("b"), tabpagenr()))
70 call assert_equal("c Xdir3 1", GetCwdInfo(bufwinnr("c"), tabpagenr()))
71
72 tabnew x
73 new y
74 new z
75 3wincmd w
76 call assert_equal("x Xtopdir 0", GetCwdInfo(0, 0))
77 wincmd W
78 lcd Xdir2
79 call assert_equal("y Xdir2 1", GetCwdInfo(0, 0))
80 wincmd W
81 lcd Xdir3
82 call assert_equal("z Xdir3 1", GetCwdInfo(0, 0))
83 call assert_equal("x Xtopdir 0", GetCwdInfo(bufwinnr("x"), 0))
84 call assert_equal("y Xdir2 1", GetCwdInfo(bufwinnr("y"), 0))
85 call assert_equal("z Xdir3 1", GetCwdInfo(bufwinnr("z"), 0))
86 let tp_nr = tabpagenr()
87 tabrewind
88 call assert_equal("x Xtopdir 0", GetCwdInfo(3, tp_nr))
89 call assert_equal("y Xdir2 1", GetCwdInfo(2, tp_nr))
90 call assert_equal("z Xdir3 1", GetCwdInfo(1, tp_nr))
91endfunc