aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/testdir/test73.in
diff options
context:
space:
mode:
Diffstat (limited to 'src/nvim/testdir/test73.in')
-rw-r--r--src/nvim/testdir/test73.in176
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
+