summaryrefslogtreecommitdiffstats
path: root/src/testdir/test_functions.vim
diff options
context:
space:
mode:
Diffstat (limited to 'src/testdir/test_functions.vim')
-rw-r--r--src/testdir/test_functions.vim99
1 files changed, 98 insertions, 1 deletions
diff --git a/src/testdir/test_functions.vim b/src/testdir/test_functions.vim
index 69e6ce0f8f..a7caf22408 100644
--- a/src/testdir/test_functions.vim
+++ b/src/testdir/test_functions.vim
@@ -188,7 +188,7 @@ func Test_strftime()
call assert_fails('call strftime("%Y", [])', 'E745:')
endfunc
-func Test_resolve()
+func Test_resolve_unix()
if !has('unix')
return
endif
@@ -234,6 +234,103 @@ func Test_resolve()
call delete('Xlink1')
endfunc
+func s:normalize_fname(fname)
+ let ret = substitute(a:fname, '\', '/', 'g')
+ let ret = substitute(ret, '//', '/', 'g')
+ let ret = tolower(ret)
+endfunc
+
+func Test_resolve_win32()
+ if !has('win32')
+ return
+ endif
+
+ " test for shortcut file
+ if executable('cscript')
+ new Xfile
+ wq
+ call writefile([
+ \ 'Set fs = CreateObject("Scripting.FileSystemObject")',
+ \ 'Set ws = WScript.CreateObject("WScript.Shell")',
+ \ 'Set shortcut = ws.CreateShortcut("Xlink.lnk")',
+ \ 'shortcut.TargetPath = fs.BuildPath(ws.CurrentDirectory, "Xfile")',
+ \ 'shortcut.Save'
+ \], 'link.vbs')
+ silent !cscript link.vbs
+ call delete('link.vbs')
+ call assert_equal(s:normalize_fname(getcwd() . '\Xfile'), s:normalize_fname(resolve('./Xlink.lnk')))
+ call delete('Xfile')
+
+ call assert_equal(s:normalize_fname(getcwd() . '\Xfile'), s:normalize_fname(resolve('./Xlink.lnk')))
+ call delete('Xlink.lnk')
+ else
+ echomsg 'skipped test for shortcut file'
+ endif
+
+ " remove files
+ call delete('Xlink')
+ call delete('Xdir', 'd')
+ call delete('Xfile')
+
+ " test for symbolic link to a file
+ new Xfile
+ wq
+ silent !mklink Xlink Xfile
+ if !v:shell_error
+ call assert_equal(s:normalize_fname(getcwd() . '\Xfile'), s:normalize_fname(resolve('./Xlink')))
+ call delete('Xlink')
+ else
+ echomsg 'skipped test for symbolic link to a file'
+ endif
+ call delete('Xfile')
+
+ " test for junction to a directory
+ call mkdir('Xdir')
+ silent !mklink /J Xlink Xdir
+ if !v:shell_error
+ call assert_equal(s:normalize_fname(getcwd() . '\Xdir'), s:normalize_fname(resolve(getcwd() . '/Xlink')))
+
+ call delete('Xdir', 'd')
+
+ " test for junction already removed
+ call assert_equal(s:normalize_fname(getcwd() . '\Xlink'), s:normalize_fname(resolve(getcwd() . '/Xlink')))
+ call delete('Xlink')
+ else
+ echomsg 'skipped test for junction to a directory'
+ call delete('Xdir', 'd')
+ endif
+
+ " test for symbolic link to a directory
+ call mkdir('Xdir')
+ silent !mklink /D Xlink Xdir
+ if !v:shell_error
+ call assert_equal(s:normalize_fname(getcwd() . '\Xdir'), s:normalize_fname(resolve(getcwd() . '/Xlink')))
+
+ call delete('Xdir', 'd')
+
+ " test for symbolic link already removed
+ call assert_equal(s:normalize_fname(getcwd() . '\Xlink'), s:normalize_fname(resolve(getcwd() . '/Xlink')))
+ call delete('Xlink')
+ else
+ echomsg 'skipped test for symbolic link to a directory'
+ call delete('Xdir', 'd')
+ endif
+
+ " test for buffer name
+ new Xfile
+ wq
+ silent !mklink Xlink Xfile
+ if !v:shell_error
+ edit Xlink
+ call assert_equal('Xlink', bufname('%'))
+ call delete('Xlink')
+ bw!
+ else
+ echomsg 'skipped test for buffer name'
+ endif
+ call delete('Xfile')
+endfunc
+
func Test_simplify()
call assert_equal('', simplify(''))
call assert_equal('/', simplify('/'))