Patch 8.1.0852
Problem: findfile() and finddir() are not properly tested.
Solution: Extend the test and add more. (Dominique Pelle, closes #3880)
Files: src/testdir/test_findfile.vim
*** ../vim-8.1.0851/src/testdir/test_findfile.vim 2017-02-23
18:20:26.000000000 +0100
--- src/testdir/test_findfile.vim 2019-01-30 22:11:09.378956665 +0100
***************
*** 1,25 ****
! " Test for findfile()
! "
func Test_findfile()
! new
! let cwd=getcwd()
! cd ..
! " Tests may be run from a shadow directory, so an extra cd needs to be done
to
! " get above src/
! if fnamemodify(getcwd(), ':t') != 'src'
! cd ../..
! else
! cd ..
! endif
! set ssl
! call assert_equal('src/testdir/test_findfile.vim',
findfile('test_findfile.vim','src/test*'))
! exe "cd" cwd
cd ..
! call assert_equal('testdir/test_findfile.vim',
findfile('test_findfile.vim','test*'))
! call assert_equal('testdir/test_findfile.vim',
findfile('test_findfile.vim','testdir'))
! exe "cd" cwd
! q!
endfunc
--- 1,169 ----
! " Test findfile() and finddir()
!
! let s:files = [ 'Xdir1/foo',
! \ 'Xdir1/bar',
! \ 'Xdir1/Xdir2/foo',
! \ 'Xdir1/Xdir2/foobar',
! \ 'Xdir1/Xdir2/Xdir3/bar',
! \ 'Xdir1/Xdir2/Xdir3/barfoo' ]
!
! func CreateFiles()
! call mkdir('Xdir1/Xdir2/Xdir3/Xdir2', 'p')
! for f in s:files
! call writefile([], f)
! endfor
! endfunc
!
! func CleanFiles()
! " Safer to delete each file even if it's more verbose
! " than doing a recursive delete('Xdir1', 'rf').
! for f in s:files
! call delete(f)
! endfor
!
! call delete('Xdir1/Xdir2/Xdir3/Xdir2', 'd')
! call delete('Xdir1/Xdir2/Xdir3', 'd')
! call delete('Xdir1/Xdir2', 'd')
! call delete('Xdir1', 'd')
! endfunc
!
! " Test findfile({name} [, {path} [, {count}]])
func Test_findfile()
! let save_path = &path
! let save_shellslash = &shellslash
! let save_dir = getcwd()
! set shellslash
! call CreateFiles()
! cd Xdir1
! e Xdir2/foo
!
! " With ,, in path, findfile() searches in current directory.
! set path=,,
! call assert_equal('foo', findfile('foo'))
! call assert_equal('bar', findfile('bar'))
! call assert_equal('', findfile('foobar'))
!
! " Directories should not be found (finddir() finds them).
! call assert_equal('', findfile('Xdir2'))
!
! " With . in 'path', findfile() searches relatively to current file.
! set path=.
! call assert_equal('Xdir2/foo', findfile('foo'))
! call assert_equal('', findfile('bar'))
! call assert_equal('Xdir2/foobar', findfile('foobar'))
!
! " Empty {path} 2nd argument is the same as no 2nd argument.
! call assert_equal('Xdir2/foo', findfile('foo', ''))
! call assert_equal('', findfile('bar', ''))
!
! " Test with *
! call assert_equal('Xdir2/foo', findfile('foo', '*'))
! call assert_equal('', findfile('bar', '*'))
! call assert_equal('Xdir2/Xdir3/bar', findfile('bar', '*/*'))
! call assert_equal('Xdir2/Xdir3/bar', findfile('bar', 'Xdir2/*'))
! call assert_equal('Xdir2/Xdir3/bar', findfile('bar', 'Xdir*/Xdir3'))
! call assert_equal('Xdir2/Xdir3/bar', findfile('bar', '*2/*3'))
!
! " Test with **
! call assert_equal('bar', findfile('bar', '**'))
! call assert_equal('Xdir2/Xdir3/bar', findfile('bar', '**/Xdir3'))
! call assert_equal('Xdir2/Xdir3/bar', findfile('bar', 'Xdir2/**'))
!
! call assert_equal('Xdir2/Xdir3/barfoo', findfile('barfoo', '**2'))
! call assert_equal('', findfile('barfoo', '**1'))
! call assert_equal('Xdir2/foobar', findfile('foobar', '**1'))
!
! " Test with {count} 3rd argument.
! call assert_equal('bar', findfile('bar', '**', 0))
! call assert_equal('bar', findfile('bar', '**', 1))
! call assert_equal('Xdir2/Xdir3/bar', findfile('bar', '**', 2))
! call assert_equal('', findfile('bar', '**', 3))
! call assert_equal(['bar', 'Xdir2/Xdir3/bar'], findfile('bar', '**', -1))
!
! " Test upwards search.
! cd Xdir2/Xdir3
! call assert_equal('bar', findfile('bar', ';'))
! call assert_match('.*/Xdir1/Xdir2/foo', findfile('foo', ';'))
! call assert_match('.*/Xdir1/Xdir2/foo', findfile('foo', ';', 1))
! call assert_match('.*/Xdir1/foo', findfile('foo', ';', 2))
! call assert_match('.*/Xdir1/foo', findfile('foo', ';', 2))
! call assert_match('.*/Xdir1/Xdir2/foo', findfile('foo', 'Xdir2;', 1))
! call assert_equal('', findfile('foo', 'Xdir2;', 2))
!
! " List l should have at least 2 values (possibly more if foo file
! " happens to be found upwards above Xdir1).
! let l = findfile('foo', ';', -1)
! call assert_match('.*/Xdir1/Xdir2/foo', l[0])
! call assert_match('.*/Xdir1/foo', l[1])
!
! " Test upwards search with stop-directory.
! cd Xdir2
! let l = findfile('bar', ';' . save_dir . '/Xdir1/Xdir2/', -1)
! call assert_equal(1, len(l))
! call assert_match('.*/Xdir1/Xdir2/Xdir3/bar', l[0])
!
! let l = findfile('bar', ';' . save_dir . '/Xdir1/', -1)
! call assert_equal(2, len(l))
! call assert_match('.*/Xdir1/Xdir2/Xdir3/bar', l[0])
! call assert_match('.*/Xdir1/bar', l[1])
!
! " Test combined downwards and upwards search from Xdir2/.
! cd ../..
! call assert_equal('Xdir3/bar', findfile('bar', '**;', 1))
! call assert_match('.*/Xdir1/bar', findfile('bar', '**;', 2))
!
! bwipe!
! exe 'cd ' . save_dir
! call CleanFiles()
! let &path = save_path
! let &shellslash = save_shellslash
! endfunc
!
! " Test finddir({name} [, {path} [, {count}]])
! func Test_finddir()
! let save_path = &path
! let save_shellslash = &shellslash
! let save_dir = getcwd()
! set path=,,
! call CreateFiles()
! cd Xdir1
!
! call assert_equal('Xdir2', finddir('Xdir2'))
! call assert_equal('', finddir('Xdir3'))
!
! " Files should not be found (findfile() finds them).
! call assert_equal('', finddir('foo'))
!
! call assert_equal('Xdir2', finddir('Xdir2', '**'))
! call assert_equal('Xdir2/Xdir3', finddir('Xdir3', '**'))
!
! call assert_equal('Xdir2', finddir('Xdir2', '**', 1))
! call assert_equal('Xdir2/Xdir3/Xdir2', finddir('Xdir2', '**', 2))
! call assert_equal(['Xdir2',
! \ 'Xdir2/Xdir3/Xdir2'], finddir('Xdir2', '**', -1))
!
! call assert_equal('Xdir2', finddir('Xdir2', '**1'))
! call assert_equal('Xdir2', finddir('Xdir2', '**0'))
! call assert_equal('Xdir2/Xdir3', finddir('Xdir3', '**1'))
! call assert_equal('', finddir('Xdir3', '**0'))
!
! " Test upwards dir search.
! cd Xdir2/Xdir3
! call assert_match('.*/Xdir1', finddir('Xdir1', ';'))
! " Test upwards search with stop-directory.
! call assert_match('.*/Xdir1', finddir('Xdir1', ';' . save_dir . '/'))
! call assert_equal('', finddir('Xdir1', ';' . save_dir . '/Xdir1/'))
! " Test combined downwards and upwards dir search from Xdir2/.
cd ..
! call assert_match('.*/Xdir1', finddir('Xdir1', '**;', 1))
! call assert_equal('Xdir3/Xdir2', finddir('Xdir2', '**;', 1))
! call assert_match('.*/Xdir1/Xdir2', finddir('Xdir2', '**;', 2))
! call assert_equal('Xdir3', finddir('Xdir3', '**;', 1))
! exe 'cd ' . save_dir
! call CleanFiles()
! let &path = save_path
! let &shellslash = save_shellslash
endfunc
*** ../vim-8.1.0851/src/version.c 2019-01-30 22:01:36.982854408 +0100
--- src/version.c 2019-01-30 22:12:44.338305213 +0100
***************
*** 785,786 ****
--- 785,788 ----
{ /* Add new patch number below this line */
+ /**/
+ 852,
/**/
--
FATHER: You only killed the bride's father - that's all -
LAUNCELOT: Oh dear, I didn't really mean to...
FATHER: Didn't mean to? You put your sword right through his head!
LAUNCELOT: Gosh - Is he all right?
"Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
/// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.