diff options
Diffstat (limited to 'src/nvim/testdir/test73.in')
-rw-r--r-- | src/nvim/testdir/test73.in | 176 |
1 files changed, 176 insertions, 0 deletions
diff --git a/src/nvim/testdir/test73.in b/src/nvim/testdir/test73.in new file mode 100644 index 0000000000..666e4d2e50 --- /dev/null +++ b/src/nvim/testdir/test73.in @@ -0,0 +1,176 @@ +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 +:set nocp viminfo+=nviminfo +:" +: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 + |