neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

test_getcwd.vim (3226B)


      1 func 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 = a:win->haslocaldir(a:tab)
     21  endif
     22  return bufname . ' ' . dirname . ' ' . lflag
     23 endfunc
     24 
     25 " Do all test in a separate window to avoid E211 when we recursively
     26 " delete the Xtopdir directory during cleanup
     27 func 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  eval 'Xtopdir'->mkdir()
     39  cd Xtopdir
     40  let g:topdir = getcwd()
     41  call mkdir('Xdir1')
     42  call mkdir('Xdir2')
     43  call mkdir('Xdir3')
     44 endfunction
     45 
     46 let g:cwd=getcwd()
     47 function TearDown()
     48  q
     49  call chdir(g:cwd)
     50  call delete("Xtopdir", "rf")
     51 endfunction
     52 
     53 function 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))
    100 endfunc
    101 
    102 function Test_GetCwd_lcd_shellslash()
    103  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
    112 endfunc