fix(zip): list a valid empty archive as empty

This commit is contained in:
Barrett Ruth
2026-07-24 16:28:25 -07:00
parent e63cf57106
commit f82cf8fd59
2 changed files with 17 additions and 0 deletions

View File

@@ -45,6 +45,9 @@ local function list_archive(source)
end
local result = system:wait()
if result.code ~= 0 then
if vim.trim(result.stdout or '') == 'Empty zipfile.' then
return {}
end
return nil, vim.trim(result.stderr or ''), true
end
return vim.split(result.stdout or '', '\n', { plain = true, trimempty = true })

View File

@@ -283,6 +283,20 @@ describe('nvim.zip', function()
eq({ '' }, lines())
end)
it('lists a valid empty archive as empty', function()
local archive = vim.fs.joinpath(root, 'empty.zip')
local file = assert(io.open(archive, 'wb'))
file:write('PK\5\6' .. string.rep('\0', 18))
file:close()
clear_zip()
edit(archive)
eq({ '' }, lines())
eq('zip', api.nvim_get_option_value('filetype', { buf = 0 }))
eq(true, exec_lua('return vim.b.nvim_zip ~= nil'))
end)
it('treats archive glob characters literally', function()
t.skip(t.is_os('win'), 'N/A: Windows filenames cannot contain these characters')
local archive = vim.fs.joinpath(root, 'archive::[*?].zip')