vim-patch:9.2.0037: netrw: need better tests for absolute paths

Problem:  netrw: need better tests for absolute paths
Solution: Use absolutepath(), instead of regex test (Miguel Barro).

closes: vim/vim#19477

bd1dc5b1a6

Cherry-pick a typo fix from latest Vim.

Co-authored-by: Miguel Barro <miguel.barro@live.com>
This commit is contained in:
zeertzjq
2026-03-02 08:52:23 +08:00
parent ed12d56163
commit 84cafb9c97
2 changed files with 32 additions and 2 deletions

View File

@@ -19,6 +19,7 @@
" 2025 Dec 26 by Vim Project fix use of g:netrw_cygwin #19015
" 2026 Jan 19 by Vim Project do not create swapfiles #18854
" 2026 Feb 15 by Vim Project fix global variable initialization for MS-Windows #19287
" 2026 Feb 21 by Vim Project better absolute path detection on MS-Windows #19477
" Copyright: Copyright (C) 2016 Charles E. Campbell {{{1
" Permission is hereby granted to use and distribute this code,
" with or without modifications, provided that this copyright
@@ -3239,7 +3240,7 @@ function s:NetrwFile(fname)
endif
if !g:netrw_cygwin && has("win32")
if fname =~ '^\' || fname =~ '^\a:\'
if isabsolutepath(fname)
" windows, but full path given
let ret= fname
else

View File

@@ -113,7 +113,6 @@ function Test_NetrwMarkFileCopy_SameDir(dir = $HOME, symlink = 0) abort
endif
endfunction
" Test file copy operations via s:NetrwMarkFileMove()
function Test_NetrwMarkFileMove(source_dir, target_dir, marked_files) abort
" set up
@@ -128,6 +127,12 @@ function Test_NetrwMarkFileMove(source_dir, target_dir, marked_files) abort
bw
endfunction
" Test how netrw fixes paths according with settings
" (g:netrw_keepdir, g:netrw_cygwin, tree style ...)
function Test_NetrwFile(fname) abort
return s:NetrwFile(a:fname)
endfunction
" }}}
END
@@ -310,6 +315,30 @@ func Test_netrw_wipe_empty_buffer_fastpath()
unlet! netrw_fastbrowse
endfunction
" Test UNC paths on windows
func Test_netrw_check_UNC_paths()
CheckMSWindows
let test_paths = [
\ '\\Server2\Share\Test\Foo.txt',
\ '//Server2/Share/Test/Foo.txt',
\ '\\Server2\Share\Test\',
\ '//Server2/Share/Test/',
\ '\\wsl.localhost\Ubuntu\home\user\_vimrc',
\ '//wsl.localhost/Ubuntu/home/user/_vimrc',
\ '\\wsl.localhost\Ubuntu\home\user',
\ '//wsl.localhost/Ubuntu/home/user']
" The paths must be interpreted as absolute ones
for path in test_paths
call assert_equal(
\ path,
\ Test_NetrwFile(path),
\ $"UNC path: {path} misinterpreted")
endfor
endfunction
" ---------------------------------
" Testing file management functions
" ---------------------------------