comparison src/testdir/test_functions.vim @ 15774:c4efa095f323 v8.1.0894

patch 8.1.0894: MS-Windows: resolve() does not return a reparse point commit https://github.com/vim/vim/commit/dce1e89be4675bcdbc9785584d3da25295481e63 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Feb 10 23:18:53 2019 +0100 patch 8.1.0894: MS-Windows: resolve() does not return a reparse point Problem: MS-Windows: resolve() does not return a reparse point. Solution: Improve resolve(). (Yasuhiro Matsumoto, closes https://github.com/vim/vim/issues/3896)
author Bram Moolenaar <Bram@vim.org>
date Sun, 10 Feb 2019 23:30:08 +0100
parents e16dc16dc927
children 393a9a3a2da2
comparison
equal deleted inserted replaced
15773:e3c2762bc354 15774:c4efa095f323
186 186
187 call assert_fails('call strftime([])', 'E730:') 187 call assert_fails('call strftime([])', 'E730:')
188 call assert_fails('call strftime("%Y", [])', 'E745:') 188 call assert_fails('call strftime("%Y", [])', 'E745:')
189 endfunc 189 endfunc
190 190
191 func Test_resolve() 191 func Test_resolve_unix()
192 if !has('unix') 192 if !has('unix')
193 return 193 return
194 endif 194 endif
195 195
196 " Xlink1 -> Xlink2 196 " Xlink1 -> Xlink2
230 230
231 silent !ln -s -f ./Xlink2 Xlink1 231 silent !ln -s -f ./Xlink2 Xlink1
232 call assert_equal('Xlink2', resolve('Xlink1')) 232 call assert_equal('Xlink2', resolve('Xlink1'))
233 call assert_equal('./Xlink2', resolve('./Xlink1')) 233 call assert_equal('./Xlink2', resolve('./Xlink1'))
234 call delete('Xlink1') 234 call delete('Xlink1')
235 endfunc
236
237 func s:normalize_fname(fname)
238 let ret = substitute(a:fname, '\', '/', 'g')
239 let ret = substitute(ret, '//', '/', 'g')
240 let ret = tolower(ret)
241 endfunc
242
243 func Test_resolve_win32()
244 if !has('win32')
245 return
246 endif
247
248 " test for shortcut file
249 if executable('cscript')
250 new Xfile
251 wq
252 call writefile([
253 \ 'Set fs = CreateObject("Scripting.FileSystemObject")',
254 \ 'Set ws = WScript.CreateObject("WScript.Shell")',
255 \ 'Set shortcut = ws.CreateShortcut("Xlink.lnk")',
256 \ 'shortcut.TargetPath = fs.BuildPath(ws.CurrentDirectory, "Xfile")',
257 \ 'shortcut.Save'
258 \], 'link.vbs')
259 silent !cscript link.vbs
260 call delete('link.vbs')
261 call assert_equal(s:normalize_fname(getcwd() . '\Xfile'), s:normalize_fname(resolve('./Xlink.lnk')))
262 call delete('Xfile')
263
264 call assert_equal(s:normalize_fname(getcwd() . '\Xfile'), s:normalize_fname(resolve('./Xlink.lnk')))
265 call delete('Xlink.lnk')
266 else
267 echomsg 'skipped test for shortcut file'
268 endif
269
270 " remove files
271 call delete('Xlink')
272 call delete('Xdir', 'd')
273 call delete('Xfile')
274
275 " test for symbolic link to a file
276 new Xfile
277 wq
278 silent !mklink Xlink Xfile
279 if !v:shell_error
280 call assert_equal(s:normalize_fname(getcwd() . '\Xfile'), s:normalize_fname(resolve('./Xlink')))
281 call delete('Xlink')
282 else
283 echomsg 'skipped test for symbolic link to a file'
284 endif
285 call delete('Xfile')
286
287 " test for junction to a directory
288 call mkdir('Xdir')
289 silent !mklink /J Xlink Xdir
290 if !v:shell_error
291 call assert_equal(s:normalize_fname(getcwd() . '\Xdir'), s:normalize_fname(resolve(getcwd() . '/Xlink')))
292
293 call delete('Xdir', 'd')
294
295 " test for junction already removed
296 call assert_equal(s:normalize_fname(getcwd() . '\Xlink'), s:normalize_fname(resolve(getcwd() . '/Xlink')))
297 call delete('Xlink')
298 else
299 echomsg 'skipped test for junction to a directory'
300 call delete('Xdir', 'd')
301 endif
302
303 " test for symbolic link to a directory
304 call mkdir('Xdir')
305 silent !mklink /D Xlink Xdir
306 if !v:shell_error
307 call assert_equal(s:normalize_fname(getcwd() . '\Xdir'), s:normalize_fname(resolve(getcwd() . '/Xlink')))
308
309 call delete('Xdir', 'd')
310
311 " test for symbolic link already removed
312 call assert_equal(s:normalize_fname(getcwd() . '\Xlink'), s:normalize_fname(resolve(getcwd() . '/Xlink')))
313 call delete('Xlink')
314 else
315 echomsg 'skipped test for symbolic link to a directory'
316 call delete('Xdir', 'd')
317 endif
318
319 " test for buffer name
320 new Xfile
321 wq
322 silent !mklink Xlink Xfile
323 if !v:shell_error
324 edit Xlink
325 call assert_equal('Xlink', bufname('%'))
326 call delete('Xlink')
327 bw!
328 else
329 echomsg 'skipped test for buffer name'
330 endif
331 call delete('Xfile')
235 endfunc 332 endfunc
236 333
237 func Test_simplify() 334 func Test_simplify()
238 call assert_equal('', simplify('')) 335 call assert_equal('', simplify(''))
239 call assert_equal('/', simplify('/')) 336 call assert_equal('/', simplify('/'))