view src/testdir/test_getcwd.in @ 11313:327a04a762f6 v8.0.0542

patch 8.0.0542: getpos() can return a negative line number commit https://github.com/vim/vim/commit/a1d5fa65bc7e8a548858e9c295a192b63dcd011b Author: Bram Moolenaar <Bram@vim.org> Date: Mon Apr 3 22:02:55 2017 +0200 patch 8.0.0542: getpos() can return a negative line number Problem: getpos() can return a negative line number. (haya14busa) Solution: Handle a zero topline and botline. (closes https://github.com/vim/vim/issues/1613)
author Christian Brabandt <cb@256bit.org>
date Mon, 03 Apr 2017 22:15:05 +0200
parents a539e9e4e534
children
line wrap: on
line source

Tests for getcwd(), haslocaldir(), and :lcd                   vim: set ft=vim :

STARTTEST
:so small.vim
:" Do all test in a separate window to avoid E211 when we recursively
:" delete the Xtopdir directory during cleanup
:"
:" This will cause a few errors, do it silently.
:set visualbell
:set nocp viminfo+=nviminfo
:"
:" On windows a swapfile in Xtopdir prevents it from being cleaned up.
:set noswapfile
:"
: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
:" On windows a stale "Xtopdir" directory may exist, remove it so that
:" we start from a clean state.
:call delete("Xtopdir", "rf")
:let r=[]
:new
:let cwd=getcwd()
:let test_out = cwd . '/test.out'
:call mkdir('Xtopdir')
:cd Xtopdir
:call mkdir('Xdir1')
:call mkdir('Xdir2')
:call mkdir('Xdir3')
:new a
:new b
:new c
:3wincmd w
:lcd Xdir1
:call add(r, GetCwdInfo(0, 0))
:wincmd W
:call add(r, GetCwdInfo(0, 0))
:wincmd W
:lcd Xdir3
:call add(r, GetCwdInfo(0, 0))
:call add(r, GetCwdInfo(bufwinnr("a"), 0))
:call add(r, GetCwdInfo(bufwinnr("b"), 0))
:call add(r, GetCwdInfo(bufwinnr("c"), 0))
:wincmd W
:call add(r, GetCwdInfo(bufwinnr("a"), tabpagenr()))
:call add(r, GetCwdInfo(bufwinnr("b"), tabpagenr()))
:call add(r, GetCwdInfo(bufwinnr("c"), tabpagenr()))
:"
:tabnew x
:new y
:new z
:3wincmd w
:call add(r, GetCwdInfo(0, 0))
:wincmd W
:lcd Xdir2
:call add(r, GetCwdInfo(0, 0))
:wincmd W
:lcd Xdir3
:call add(r, GetCwdInfo(0, 0))
:call add(r, GetCwdInfo(bufwinnr("x"), 0))
:call add(r, GetCwdInfo(bufwinnr("y"), 0))
:call add(r, GetCwdInfo(bufwinnr("z"), 0))
:let tp_nr = tabpagenr()
:tabrewind
:call add(r, GetCwdInfo(3, tp_nr))
:call add(r, GetCwdInfo(2, tp_nr))
:call add(r, GetCwdInfo(1, tp_nr))
:"
:call writefile(r, test_out, "a")
:q
:exec "cd " . cwd
:call delete("Xtopdir", "rf")
:qa!
ENDTEST