diff options
author | Bram Moolenaar <Bram@vim.org> | 2018-10-06 15:43:17 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2018-10-06 15:43:17 +0200 |
commit | 261099070940fb64d4633a766ae3510fffe4171d (patch) | |
tree | 94c2849ba65726e26b279777a05906c73e838bea /src/testdir/test_functions.vim | |
parent | 8295666dc2c65e42135b91d5c61e2a140d002333 (diff) | |
download | vim-git-261099070940fb64d4633a766ae3510fffe4171d.tar.gz |
patch 8.1.0454: resolve() was not tested with a symlink cyclev8.1.0454
Problem: resolve() was not tested with a symlink cycle.
Solution: Add a test. (Dominique Pelle, closes #3513)
Diffstat (limited to 'src/testdir/test_functions.vim')
-rw-r--r-- | src/testdir/test_functions.vim | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/testdir/test_functions.vim b/src/testdir/test_functions.vim index 17f7c1905..d601c278c 100644 --- a/src/testdir/test_functions.vim +++ b/src/testdir/test_functions.vim @@ -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('/')) |