-- Tests for getcwd(), haslocaldir(), and :lcd local t = require('test.testutil') local n = require('test.functional.testnvim')() local eq, eval, source = t.eq, n.eval, n.source local call, clear, command = n.call, n.clear, n.command describe('getcwd', function() before_each(clear) after_each(function() n.rmdir('Xtopdir') end) it('is working', function() source([[ function! 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 = haslocaldir(a:win, a:tab) endif return bufname . ' ' . dirname . ' ' . lflag endfunction ]]) command('new') command('let cwd=getcwd()') call('mkdir', 'Xtopdir') command('silent cd Xtopdir') call('mkdir', 'Xdir1') call('mkdir', 'Xdir2') call('mkdir', 'Xdir3') command('new a') command('new b') command('new c') command('3wincmd w') command('silent lcd Xdir1') eq('a Xdir1 1', eval('GetCwdInfo(0, 0)')) command('wincmd W') eq('b Xtopdir 0', eval('GetCwdInfo(0, 0)')) command('wincmd W') command('silent lcd Xdir3') eq('c Xdir3 1', eval('GetCwdInfo(0, 0)')) eq('a Xdir1 1', eval('GetCwdInfo(bufwinnr("a"), 0)')) eq('b Xtopdir 0', eval('GetCwdInfo(bufwinnr("b"), 0)')) eq('c Xdir3 1', eval('GetCwdInfo(bufwinnr("c"), 0)')) command('wincmd W') eq('a Xdir1 1', eval('GetCwdInfo(bufwinnr("a"), tabpagenr())')) eq('b Xtopdir 0', eval('GetCwdInfo(bufwinnr("b"), tabpagenr())')) eq('c Xdir3 1', eval('GetCwdInfo(bufwinnr("c"), tabpagenr())')) command('tabnew x') command('new y') command('new z') command('3wincmd w') eq('x Xtopdir 0', eval('GetCwdInfo(0, 0)')) command('wincmd W') command('silent lcd Xdir2') eq('y Xdir2 1', eval('GetCwdInfo(0, 0)')) command('wincmd W') command('silent lcd Xdir3') eq('z Xdir3 1', eval('GetCwdInfo(0, 0)')) eq('x Xtopdir 0', eval('GetCwdInfo(bufwinnr("x"), 0)')) eq('y Xdir2 1', eval('GetCwdInfo(bufwinnr("y"), 0)')) eq('z Xdir3 1', eval('GetCwdInfo(bufwinnr("z"), 0)')) command('let tp_nr = tabpagenr()') command('tabrewind') eq('x Xtopdir 0', eval('GetCwdInfo(3, tp_nr)')) eq('y Xdir2 1', eval('GetCwdInfo(2, tp_nr)')) eq('z Xdir3 1', eval('GetCwdInfo(1, tp_nr)')) end) end)