mirror of
https://github.com/neovim/neovim.git
synced 2024-12-24 13:15:09 -07:00
af23d17388
The new oldtest directory is in test/old/testdir. The reason for this is that many tests have hardcoded the parent directory name to be 'testdir'.
113 lines
3.2 KiB
VimL
113 lines
3.2 KiB
VimL
func GetCwdInfo(win, tab)
|
|
let tab_changed = 0
|
|
let mod = ":t"
|
|
if a:tab > 0 && a:tab != tabpagenr()
|
|
let tab_changed = 1
|
|
exec "tabnext " . a:tab
|
|
endif
|
|
let bufname = fnamemodify(bufname(winbufnr(a:win)), mod)
|
|
if tab_changed
|
|
tabprevious
|
|
endif
|
|
if a:win == 0 && a:tab == 0
|
|
let dirname = fnamemodify(getcwd(), mod)
|
|
let lflag = haslocaldir()
|
|
elseif a:tab == 0
|
|
let dirname = fnamemodify(getcwd(a:win), mod)
|
|
let lflag = haslocaldir(a:win)
|
|
else
|
|
let dirname = fnamemodify(getcwd(a:win, a:tab), mod)
|
|
let lflag = a:win->haslocaldir(a:tab)
|
|
endif
|
|
return bufname . ' ' . dirname . ' ' . lflag
|
|
endfunc
|
|
|
|
" Do all test in a separate window to avoid E211 when we recursively
|
|
" delete the Xtopdir directory during cleanup
|
|
func SetUp()
|
|
set visualbell
|
|
set nocp viminfo+=nviminfo
|
|
|
|
" On windows a swapfile in Xtopdir prevents it from being cleaned up.
|
|
set noswapfile
|
|
|
|
" On windows a stale "Xtopdir" directory may exist, remove it so that
|
|
" we start from a clean state.
|
|
call delete("Xtopdir", "rf")
|
|
new
|
|
eval 'Xtopdir'->mkdir()
|
|
cd Xtopdir
|
|
let g:topdir = getcwd()
|
|
call mkdir('Xdir1')
|
|
call mkdir('Xdir2')
|
|
call mkdir('Xdir3')
|
|
endfunction
|
|
|
|
let g:cwd=getcwd()
|
|
function TearDown()
|
|
q
|
|
call chdir(g:cwd)
|
|
call delete("Xtopdir", "rf")
|
|
endfunction
|
|
|
|
function Test_GetCwd()
|
|
new a
|
|
new b
|
|
new c
|
|
3wincmd w
|
|
lcd Xdir1
|
|
call assert_equal("a Xdir1 1", GetCwdInfo(0, 0))
|
|
call assert_equal(g:topdir, getcwd(-1))
|
|
wincmd W
|
|
call assert_equal("b Xtopdir 0", GetCwdInfo(0, 0))
|
|
call assert_equal(g:topdir, getcwd(-1))
|
|
wincmd W
|
|
lcd Xdir3
|
|
call assert_equal("c Xdir3 1", GetCwdInfo(0, 0))
|
|
call assert_equal("a Xdir1 1", GetCwdInfo(bufwinnr("a"), 0))
|
|
call assert_equal("b Xtopdir 0", GetCwdInfo(bufwinnr("b"), 0))
|
|
call assert_equal("c Xdir3 1", GetCwdInfo(bufwinnr("c"), 0))
|
|
call assert_equal(g:topdir, getcwd(-1))
|
|
wincmd W
|
|
call assert_equal("a Xdir1 1", GetCwdInfo(bufwinnr("a"), tabpagenr()))
|
|
call assert_equal("b Xtopdir 0", GetCwdInfo(bufwinnr("b"), tabpagenr()))
|
|
call assert_equal("c Xdir3 1", GetCwdInfo(bufwinnr("c"), tabpagenr()))
|
|
call assert_equal(g:topdir, getcwd(-1))
|
|
|
|
tabnew x
|
|
new y
|
|
new z
|
|
3wincmd w
|
|
call assert_equal("x Xtopdir 0", GetCwdInfo(0, 0))
|
|
call assert_equal(g:topdir, getcwd(-1))
|
|
wincmd W
|
|
lcd Xdir2
|
|
call assert_equal("y Xdir2 1", GetCwdInfo(0, 0))
|
|
call assert_equal(g:topdir, getcwd(-1))
|
|
wincmd W
|
|
lcd Xdir3
|
|
call assert_equal("z Xdir3 1", GetCwdInfo(0, 0))
|
|
call assert_equal("x Xtopdir 0", GetCwdInfo(bufwinnr("x"), 0))
|
|
call assert_equal("y Xdir2 1", GetCwdInfo(bufwinnr("y"), 0))
|
|
call assert_equal("z Xdir3 1", GetCwdInfo(bufwinnr("z"), 0))
|
|
call assert_equal(g:topdir, getcwd(-1))
|
|
let tp_nr = tabpagenr()
|
|
tabrewind
|
|
call assert_equal("x Xtopdir 0", GetCwdInfo(3, tp_nr))
|
|
call assert_equal("y Xdir2 1", GetCwdInfo(2, tp_nr))
|
|
call assert_equal("z Xdir3 1", GetCwdInfo(1, tp_nr))
|
|
call assert_equal(g:topdir, getcwd(-1))
|
|
endfunc
|
|
|
|
function Test_GetCwd_lcd_shellslash()
|
|
new
|
|
let root = fnamemodify('/', ':p')
|
|
exe 'lcd '.root
|
|
let cwd = getcwd()
|
|
if !exists('+shellslash') || &shellslash
|
|
call assert_equal(cwd[-1:], '/')
|
|
else
|
|
call assert_equal(cwd[-1:], '\')
|
|
endif
|
|
endfunc
|