mirror of
https://github.com/neovim/neovim.git
synced 2026-02-03 19:11:23 +10:00
176 lines
3.7 KiB
Plaintext
176 lines
3.7 KiB
Plaintext
Tests for find completion.
|
||
|
||
STARTTEST
|
||
:so small.vim
|
||
:" Do all test in a separate window to avoid E211 when we recursively
|
||
:" delete the Xfind directory during cleanup
|
||
:"
|
||
:" This will cause a few errors, do it silently.
|
||
:set visualbell
|
||
:"
|
||
:function! DeleteDirectory(dir)
|
||
: if has("win16") || has("win32") || has("win64") || has("dos16") || has("dos32")
|
||
: exec "silent !rmdir /Q /S " . a:dir
|
||
: else
|
||
: exec "silent !rm -rf " . a:dir
|
||
: endif
|
||
:endfun
|
||
:" On windows a stale "Xfind" directory may exist, remove it so that
|
||
:" we start from a clean state.
|
||
:call DeleteDirectory("Xfind")
|
||
:new
|
||
:let cwd=getcwd()
|
||
:let test_out = cwd . '/test.out'
|
||
:call mkdir('Xfind')
|
||
:cd Xfind
|
||
:set path=
|
||
:find
|
||
:exec "w! " . test_out
|
||
:close
|
||
:new
|
||
:set path=.
|
||
:find
|
||
:exec "w >>" . test_out
|
||
:close
|
||
:new
|
||
:set path=.,,
|
||
:find
|
||
:exec "w >>" . test_out
|
||
:close
|
||
:new
|
||
:set path=./**
|
||
:find
|
||
:exec "w >>" . test_out
|
||
:close
|
||
:new
|
||
:" We shouldn't find any file at this point, test.out must be empty.
|
||
:call mkdir('in')
|
||
:cd in
|
||
:call mkdir('path')
|
||
:exec "cd " . cwd
|
||
:e Xfind/file.txt
|
||
SHoly Grail:w
|
||
:e Xfind/in/file.txt
|
||
SJimmy Hoffa:w
|
||
:e Xfind/in/stuff.txt
|
||
SAnother Holy Grail:w
|
||
:e Xfind/in/path/file.txt
|
||
SE.T.:w
|
||
:set path=Xfind/**
|
||
:find file
|
||
:exec "w >>" . test_out
|
||
:find file
|
||
:exec "w >>" . test_out
|
||
:find file
|
||
:exec "w >>" . test_out
|
||
:" Rerun the previous three find completions, using fullpath in 'path'
|
||
:exec "set path=" . cwd . "/Xfind/**"
|
||
:find file
|
||
:exec "w >>" . test_out
|
||
:find file
|
||
:exec "w >>" . test_out
|
||
:find file
|
||
:exec "w >>" . test_out
|
||
:" Same steps again, using relative and fullpath items that point to the same
|
||
:" recursive location.
|
||
:" This is to test that there are no duplicates in the completion list.
|
||
:exec "set path+=Xfind/**"
|
||
:find file
|
||
:exec "w >>" . test_out
|
||
:find file
|
||
:exec "w >>" . test_out
|
||
:find file
|
||
:exec "w >>" . test_out
|
||
:find file
|
||
:" Test find completion for directory of current buffer, which at this point
|
||
:" is Xfind/in/file.txt.
|
||
:set path=.
|
||
:find st
|
||
:exec "w >>" . test_out
|
||
:" Test find completion for empty path item ",," which is the current directory
|
||
:cd Xfind
|
||
:set path=,,
|
||
:find f
|
||
:exec "w >>" . test_out
|
||
:" Test shortening of
|
||
:"
|
||
:" foo/x/bar/voyager.txt
|
||
:" foo/y/bar/voyager.txt
|
||
:"
|
||
:" When current directory is above foo/ they should be shortened to (in order
|
||
:" of appearance):
|
||
:"
|
||
:" x/bar/voyager.txt
|
||
:" y/bar/voyager.txt
|
||
:call mkdir('foo')
|
||
:cd foo
|
||
:call mkdir('x')
|
||
:call mkdir('y')
|
||
:cd x
|
||
:call mkdir('bar')
|
||
:cd ..
|
||
:cd y
|
||
:call mkdir('bar')
|
||
:cd ..
|
||
:cd ..
|
||
:" We should now be in the Xfind directory
|
||
:e foo/x/bar/voyager.txt
|
||
SVoyager 1:w
|
||
:e foo/y/bar/voyager.txt
|
||
SVoyager 2:w
|
||
:exec "set path=" . cwd . "/Xfind/**"
|
||
:find voyager
|
||
:exec "w >>" . test_out
|
||
:find voyager
|
||
:exec "w >>" . test_out
|
||
:"
|
||
:" When current directory is .../foo/y/bar they should be shortened to (in
|
||
:" order of appearance):
|
||
:"
|
||
:" ./voyager.txt
|
||
:" x/bar/voyager.txt
|
||
:cd foo
|
||
:cd y
|
||
:cd bar
|
||
:find voyager
|
||
:exec "w >> " . test_out
|
||
:find voyager
|
||
:exec "w >> " . test_out
|
||
:" Check the opposite too:
|
||
:cd ..
|
||
:cd ..
|
||
:cd x
|
||
:cd bar
|
||
:find voyager
|
||
:exec "w >> " . test_out
|
||
:find voyager
|
||
:exec "w >> " . test_out
|
||
:" Check for correct handling of shorten_fname()'s behavior on windows
|
||
:exec "cd " . cwd . "/Xfind/in"
|
||
:find file
|
||
:exec "w >>" . test_out
|
||
:" Test for relative to current buffer 'path' item
|
||
:exec "cd " . cwd . "/Xfind/"
|
||
:set path=./path
|
||
:" Open the file where Jimmy Hoffa is found
|
||
:e in/file.txt
|
||
:" Find the file containing 'E.T.' in the Xfind/in/path directory
|
||
:find file
|
||
:exec "w >>" . test_out
|
||
:"
|
||
:" Test that completion works when path=.,,
|
||
:"
|
||
:set path=.,,
|
||
:" Open Jimmy Hoffa file
|
||
:e in/file.txt
|
||
:exec "w >>" . test_out
|
||
:" Search for the file containing Holy Grail in same directory as in/path.txt
|
||
:find stu
|
||
:exec "w >>" . test_out
|
||
:q
|
||
:exec "cd " . cwd
|
||
:call DeleteDirectory("Xfind")
|
||
:qa!
|
||
ENDTEST
|
||
|