mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
vim-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 vim/vim#3513)
2610990709
This commit is contained in:
parent
22804c66a5
commit
ab3a4a4896
@ -189,6 +189,52 @@ func Test_strftime()
|
|||||||
call assert_fails('call strftime("%Y", [])', 'E745:')
|
call assert_fails('call strftime("%Y", [])', 'E745:')
|
||||||
endfunc
|
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()
|
func Test_simplify()
|
||||||
call assert_equal('', simplify(''))
|
call assert_equal('', simplify(''))
|
||||||
call assert_equal('/', simplify('/'))
|
call assert_equal('/', simplify('/'))
|
||||||
|
Loading…
Reference in New Issue
Block a user