Skip to content
Snippets Groups Projects
Unverified Commit 8a7e3353 authored by Evgeni Chasnovski's avatar Evgeni Chasnovski Committed by GitHub
Browse files

fix(fs): make `normalize()` work with '/' path (#24047)

Problem: Current implementation of "remove trailing /" doesn't
account for the case of literal '/' as path.
Solution: Remove trailing / only if it preceded by something else.

Co-authored by: notomo <notomo.motono@gmail.com>
parent 7e301ed5
Branches
Tags
No related merge requests found
......@@ -348,9 +348,7 @@ function M.normalize(path, opts)
path = path:gsub('%$([%w_]+)', vim.uv.os_getenv)
end
path = path:gsub('\\', '/'):gsub('/+', '/')
return path:sub(-1) == '/' and path:sub(1, -2) or path
return (path:gsub('\\', '/'):gsub('/+', '/'):gsub('(.)/$', '%1'))
end
return M
......@@ -281,6 +281,12 @@ describe('vim.fs', function()
it('works with backward slashes', function()
eq('C:/Users/jdoe', exec_lua [[ return vim.fs.normalize('C:\\Users\\jdoe') ]])
end)
it('removes trailing /', function()
eq('/home/user', exec_lua [[ return vim.fs.normalize('/home/user/') ]])
end)
it('works with /', function()
eq('/', exec_lua [[ return vim.fs.normalize('/') ]])
end)
it('works with ~', function()
eq( exec_lua([[
local home = ...
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment