xref: /vim-8.2.3635/src/testdir/test_getcwd.vim (revision 8c5e0093)
1function! 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	let g:topdir = getcwd()
41	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))
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))
76
77	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))
100endfunc
101