mirror of
https://github.com/neovim/neovim.git
synced 2025-12-16 03:15:39 +00:00
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:
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user