Mercurial > vim
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('/')) |