refactor(fs): replace vim.fn/vim.env in vim.fs (#20379)

Avoid using vim.env and vim.fn in vim.fs functions so that
they can be used in "fast" contexts.
This commit is contained in:
Mike
2022-12-01 09:15:05 -06:00
committed by GitHub
parent adda751407
commit 61e99217e6
2 changed files with 105 additions and 3 deletions

View File

@@ -12,6 +12,39 @@ local is_os = helpers.is_os
local nvim_prog_basename = is_os('win') and 'nvim.exe' or 'nvim'
local test_basename_dirname_eq = {
'~/foo/',
'~/foo',
'~/foo/bar.lua',
'foo.lua',
' ',
'',
'.',
'..',
'../',
'~',
'/usr/bin',
'/usr/bin/gcc',
'/',
'/usr/',
'/usr',
'c:/usr',
'c:/',
'c:',
'c:/users/foo',
'c:/users/foo/bar.lua',
'c:/users/foo/bar/../',
}
local tests_windows_paths = {
'c:\\usr',
'c:\\',
'c:',
'c:\\users\\foo',
'c:\\users\\foo\\bar.lua',
'c:\\users\\foo\\bar\\..\\',
}
before_each(clear)
describe('vim.fs', function()
@@ -41,15 +74,58 @@ describe('vim.fs', function()
local nvim_dir = ...
return vim.fs.dirname(nvim_dir)
]], nvim_dir))
local function test_paths(paths)
for _, path in ipairs(paths) do
eq(
exec_lua([[
local path = ...
return vim.fn.fnamemodify(path,':h'):gsub('\\', '/')
]], path),
exec_lua([[
local path = ...
return vim.fs.dirname(path)
]], path),
path
)
end
end
test_paths(test_basename_dirname_eq)
if is_os('win') then
test_paths(tests_windows_paths)
end
end)
end)
describe('basename()', function()
it('works', function()
eq(nvim_prog_basename, exec_lua([[
local nvim_prog = ...
return vim.fs.basename(nvim_prog)
]], nvim_prog))
local function test_paths(paths)
for _, path in ipairs(paths) do
eq(
exec_lua([[
local path = ...
return vim.fn.fnamemodify(path,':t'):gsub('\\', '/')
]], path),
exec_lua([[
local path = ...
return vim.fs.basename(path)
]], path),
path
)
end
end
test_paths(test_basename_dirname_eq)
if is_os('win') then
test_paths(tests_windows_paths)
end
end)
end)