0
0
mirror of https://github.com/vim/vim.git synced 2025-09-29 04:34:16 -04:00

patch 8.1.0454: resolve() was not tested with a symlink cycle

Problem:    resolve() was not tested with a symlink cycle.
Solution:   Add a test. (Dominique Pelle, closes #3513)
This commit is contained in:
Bram Moolenaar
2018-10-06 15:43:17 +02:00
parent 8295666dc2
commit 2610990709
2 changed files with 48 additions and 0 deletions

View File

@@ -190,6 +190,52 @@ func Test_strftime()
call assert_fails('call strftime("%Y", [])', 'E745:')
endfunc
func Test_resolve()
if !has('unix')
return
endif
" Xlink1 -> Xlink2
" Xlink2 -> Xlink3
silent !ln -s -f Xlink2 Xlink1
silent !ln -s -f Xlink3 Xlink2
call assert_equal('Xlink3', resolve('Xlink1'))
call assert_equal('./Xlink3', resolve('./Xlink1'))
call assert_equal('Xlink3/', resolve('Xlink2/'))
" FIXME: these tests result in things like "Xlink2/" instead of "Xlink3/"?!
"call assert_equal('Xlink3/', resolve('Xlink1/'))
"call assert_equal('./Xlink3/', resolve('./Xlink1/'))
"call assert_equal(getcwd() . '/Xlink3/', resolve(getcwd() . '/Xlink1/'))
call assert_equal(getcwd() . '/Xlink3', resolve(getcwd() . '/Xlink1'))
" Test resolve() with a symlink cycle.
" Xlink1 -> Xlink2
" Xlink2 -> Xlink3
" Xlink3 -> Xlink1
silent !ln -s -f Xlink1 Xlink3
call assert_fails('call resolve("Xlink1")', 'E655:')
call assert_fails('call resolve("./Xlink1")', 'E655:')
call assert_fails('call resolve("Xlink2")', 'E655:')
call assert_fails('call resolve("Xlink3")', 'E655:')
call delete('Xlink1')
call delete('Xlink2')
call delete('Xlink3')
silent !ln -s -f Xdir//Xfile Xlink
call assert_equal('Xdir/Xfile', resolve('Xlink'))
call delete('Xlink')
silent !ln -s -f Xlink2/ Xlink1
call assert_equal('Xlink2', resolve('Xlink1'))
call assert_equal('Xlink2/', resolve('Xlink1/'))
call delete('Xlink1')
silent !ln -s -f ./Xlink2 Xlink1
call assert_equal('Xlink2', resolve('Xlink1'))
call assert_equal('./Xlink2', resolve('./Xlink1'))
call delete('Xlink1')
endfunc
func Test_simplify()
call assert_equal('', simplify(''))
call assert_equal('/', simplify('/'))

View File

@@ -792,6 +792,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
454,
/**/
453,
/**/