blob: ca098781e4195e69de974bbd121f558af1b57369 [file] [log] [blame]
Bram Moolenaar1e115362019-01-09 23:01:02 +01001func 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
23endfunc
Bram Moolenaar292eff02017-07-11 21:46:28 +020024
25" Do all test in a separate window to avoid E211 when we recursively
26" delete the Xtopdir directory during cleanup
27function SetUp()
Bram Moolenaar1e115362019-01-09 23:01:02 +010028 set visualbell
29 set nocp viminfo+=nviminfo
Bram Moolenaar292eff02017-07-11 21:46:28 +020030
Bram Moolenaar1e115362019-01-09 23:01:02 +010031 " On windows a swapfile in Xtopdir prevents it from being cleaned up.
32 set noswapfile
Bram Moolenaar292eff02017-07-11 21:46:28 +020033
Bram Moolenaar1e115362019-01-09 23:01:02 +010034 " 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 let g:topdir = getcwd()
41 call mkdir('Xdir1')
42 call mkdir('Xdir2')
43 call mkdir('Xdir3')
Bram Moolenaar292eff02017-07-11 21:46:28 +020044endfunction
45
46let g:cwd=getcwd()
47function TearDown()
Bram Moolenaar1e115362019-01-09 23:01:02 +010048 q
49 exec "cd " . g:cwd
50 call delete("Xtopdir", "rf")
Bram Moolenaar292eff02017-07-11 21:46:28 +020051endfunction
52
53function Test_GetCwd()
Bram Moolenaar1e115362019-01-09 23:01:02 +010054 new a
55 new b
56 new c
57 3wincmd w
58 lcd Xdir1
59 call assert_equal("a Xdir1 1", GetCwdInfo(0, 0))
60 call assert_equal(g:topdir, getcwd(-1))
61 wincmd W
62 call assert_equal("b Xtopdir 0", GetCwdInfo(0, 0))
63 call assert_equal(g:topdir, getcwd(-1))
64 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))
70 call assert_equal(g:topdir, getcwd(-1))
71 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()))
75 call assert_equal(g:topdir, getcwd(-1))
Bram Moolenaar292eff02017-07-11 21:46:28 +020076
Bram Moolenaar1e115362019-01-09 23:01:02 +010077 tabnew x
78 new y
79 new z
80 3wincmd w
81 call assert_equal("x Xtopdir 0", GetCwdInfo(0, 0))
82 call assert_equal(g:topdir, getcwd(-1))
83 wincmd W
84 lcd Xdir2
85 call assert_equal("y Xdir2 1", GetCwdInfo(0, 0))
86 call assert_equal(g:topdir, getcwd(-1))
87 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))
93 call assert_equal(g:topdir, getcwd(-1))
94 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))
99 call assert_equal(g:topdir, getcwd(-1))
Bram Moolenaar292eff02017-07-11 21:46:28 +0200100endfunc
Bram Moolenaarc75878c2018-09-23 19:36:15 +0200101
102function Test_GetCwd_lcd_shellslash()
Bram Moolenaar1e115362019-01-09 23:01:02 +0100103 new
104 let root = fnamemodify('/', ':p')
105 exe 'lcd '.root
106 let cwd = getcwd()
107 if !exists('+shellslash') || &shellslash
108 call assert_equal(cwd[-1:], '/')
109 else
110 call assert_equal(cwd[-1:], '\')
111 endif
Bram Moolenaarc75878c2018-09-23 19:36:15 +0200112endfunc