mirror of
https://github.com/neovim/neovim.git
synced 2026-08-14 03:04:54 +00:00
fix(zip): only refuse a cwd unzip on Windows
This commit is contained in:
@@ -12,8 +12,12 @@ local function unzip()
|
||||
end
|
||||
-- Windows searches the current directory before $PATH, so an archive could be opened with an
|
||||
-- `unzip` shipped next to it.
|
||||
if vim.fs.dirname(vim.fs.normalize(command)) == vim.fs.normalize(vim.fn.getcwd()) then
|
||||
return nil, 'refusing to run unzip from the current directory'
|
||||
if vim.fn.has('win32') == 1 then
|
||||
local dir = uv.fs_realpath(vim.fs.dirname(vim.fs.normalize(command)))
|
||||
local cwd = uv.fs_realpath(vim.fn.getcwd())
|
||||
if dir and cwd and dir == cwd then
|
||||
return nil, 'refusing to run unzip from the current directory'
|
||||
end
|
||||
end
|
||||
return command
|
||||
end
|
||||
|
||||
@@ -330,6 +330,19 @@ describe('nvim.zip', function()
|
||||
end
|
||||
end)
|
||||
|
||||
it('runs the backend when the cwd is its directory', function()
|
||||
t.skip(t.is_os('win'), 'N/A: Windows searches the cwd before $PATH')
|
||||
local archive = stage(fixtures, 'browser.zip')
|
||||
local bin = vim.fs.joinpath(assert(vim.uv.fs_realpath(root)), 'bin')
|
||||
t.mkdir(bin)
|
||||
assert(vim.uv.fs_symlink(vim.fn.exepath('unzip'), vim.fs.joinpath(bin, 'unzip')))
|
||||
n.clear({ args = { '--clean' }, env = { PATH = bin .. ':' .. os.getenv('PATH') } })
|
||||
|
||||
api.nvim_set_current_dir(bin)
|
||||
edit(archive)
|
||||
eq('folder/', lines()[1])
|
||||
end)
|
||||
|
||||
it('keeps a leading dash in a path from becoming a backend option', function()
|
||||
local archive = stage(old_samples, 'poc.zip')
|
||||
clear_zip()
|
||||
|
||||
Reference in New Issue
Block a user