blob: 334b890772388afa22eb082b2342b37975375097 [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
Bram Moolenaar54591292018-02-09 20:53:59 +010040 let g:topdir = getcwd()
Bram Moolenaar292eff02017-07-11 21:46:28 +020041 call mkdir('Xdir1')
42 call mkdir('Xdir2')
43 call mkdir('Xdir3')
44endfunction
45
46let g:cwd=getcwd()
47function TearDown()
48 q
49 exec "cd " . g:cwd
50 call delete("Xtopdir", "rf")
51endfunction
52
53function Test_GetCwd()
54 new a
55 new b
56 new c
57 3wincmd w
58 lcd Xdir1
59 call assert_equal("a Xdir1 1", GetCwdInfo(0, 0))
Bram Moolenaar54591292018-02-09 20:53:59 +010060 call assert_equal(g:topdir, getcwd(-1))
Bram Moolenaar292eff02017-07-11 21:46:28 +020061 wincmd W
62 call assert_equal("b Xtopdir 0", GetCwdInfo(0, 0))
Bram Moolenaar54591292018-02-09 20:53:59 +010063 call assert_equal(g:topdir, getcwd(-1))
Bram Moolenaar292eff02017-07-11 21:46:28 +020064 wincmd W
65 lcd Xdir3
66 call assert_equal("c Xdir3 1", GetCwdInfo(0, 0))
67 call assert_equal("a Xdir1 1", GetCwdInfo(bufwinnr("a"), 0))
68 call assert_equal("b Xtopdir 0", GetCwdInfo(bufwinnr("b"), 0))
69 call assert_equal("c Xdir3 1", GetCwdInfo(bufwinnr("c"), 0))
Bram Moolenaar54591292018-02-09 20:53:59 +010070 call assert_equal(g:topdir, getcwd(-1))
Bram Moolenaar292eff02017-07-11 21:46:28 +020071 wincmd W
72 call assert_equal("a Xdir1 1", GetCwdInfo(bufwinnr("a"), tabpagenr()))
73 call assert_equal("b Xtopdir 0", GetCwdInfo(bufwinnr("b"), tabpagenr()))
74 call assert_equal("c Xdir3 1", GetCwdInfo(bufwinnr("c"), tabpagenr()))
Bram Moolenaar54591292018-02-09 20:53:59 +010075 call assert_equal(g:topdir, getcwd(-1))
Bram Moolenaar292eff02017-07-11 21:46:28 +020076
77 tabnew x
78 new y
79 new z
80 3wincmd w
81 call assert_equal("x Xtopdir 0", GetCwdInfo(0, 0))
Bram Moolenaar54591292018-02-09 20:53:59 +010082 call assert_equal(g:topdir, getcwd(-1))
Bram Moolenaar292eff02017-07-11 21:46:28 +020083 wincmd W
84 lcd Xdir2
85 call assert_equal("y Xdir2 1", GetCwdInfo(0, 0))
Bram Moolenaar54591292018-02-09 20:53:59 +010086 call assert_equal(g:topdir, getcwd(-1))
Bram Moolenaar292eff02017-07-11 21:46:28 +020087 wincmd W
88 lcd Xdir3
89 call assert_equal("z Xdir3 1", GetCwdInfo(0, 0))
90 call assert_equal("x Xtopdir 0", GetCwdInfo(bufwinnr("x"), 0))
91 call assert_equal("y Xdir2 1", GetCwdInfo(bufwinnr("y"), 0))
92 call assert_equal("z Xdir3 1", GetCwdInfo(bufwinnr("z"), 0))
Bram Moolenaar54591292018-02-09 20:53:59 +010093 call assert_equal(g:topdir, getcwd(-1))
Bram Moolenaar292eff02017-07-11 21:46:28 +020094 let tp_nr = tabpagenr()
95 tabrewind
96 call assert_equal("x Xtopdir 0", GetCwdInfo(3, tp_nr))
97 call assert_equal("y Xdir2 1", GetCwdInfo(2, tp_nr))
98 call assert_equal("z Xdir3 1", GetCwdInfo(1, tp_nr))
Bram Moolenaar54591292018-02-09 20:53:59 +010099 call assert_equal(g:topdir, getcwd(-1))
Bram Moolenaar292eff02017-07-11 21:46:28 +0200100endfunc