xref: /vim-8.2.3635/src/testdir/test_getcwd.vim (revision e16b00a1)
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	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
92