mirror of
https://github.com/neovim/neovim.git
synced 2025-12-10 08:32:42 +00:00
Merge pull request #3722 from ZyX-I/fix-3721
shada: Continue dumping when variables failed to dump
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
-- ShaDa errors handling support
|
||||
local helpers = require('test.functional.helpers')
|
||||
local nvim_command, eq, exc_exec = helpers.command, helpers.eq, helpers.exc_exec
|
||||
local nvim_command, eq, exc_exec, redir_exec =
|
||||
helpers.command, helpers.eq, helpers.exc_exec, helpers.redir_exec
|
||||
|
||||
local shada_helpers = require('test.functional.shada.helpers')
|
||||
local reset, clear, get_shada_rw =
|
||||
@@ -492,4 +493,21 @@ $
|
||||
eq('Vim(wshada):E576: Error while reading ShaDa file: last entry specified that it occupies 47 bytes, but file ended earlier', exc_exec('wshada ' .. shada_fname))
|
||||
eq(0, exc_exec('wshada! ' .. shada_fname))
|
||||
end)
|
||||
|
||||
it('errors when a funcref is stored in a variable', function()
|
||||
nvim_command('let F = function("tr")')
|
||||
nvim_command('set shada+=!')
|
||||
eq('\nE475: Invalid argument: attempt to dump function reference'
|
||||
.. '\nE574: Failed to write variable F',
|
||||
redir_exec('wshada'))
|
||||
end)
|
||||
|
||||
it('errors when a self-referencing list is stored in a variable', function()
|
||||
nvim_command('let L = []')
|
||||
nvim_command('call add(L, L)')
|
||||
nvim_command('set shada+=!')
|
||||
eq('\nE475: Invalid argument: container references itself'
|
||||
.. '\nE574: Failed to write variable L',
|
||||
redir_exec('wshada'))
|
||||
end)
|
||||
end)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
-- ShaDa variables saving/reading support
|
||||
local helpers = require('test.functional.helpers')
|
||||
local meths, funcs, nvim_command, eq =
|
||||
helpers.meths, helpers.funcs, helpers.command, helpers.eq
|
||||
local meths, funcs, nvim_command, eq, exc_exec =
|
||||
helpers.meths, helpers.funcs, helpers.command, helpers.eq, helpers.exc_exec
|
||||
|
||||
local shada_helpers = require('test.functional.shada.helpers')
|
||||
local reset, set_additional_cmd, clear =
|
||||
@@ -136,4 +136,31 @@ describe('ShaDa support code', function()
|
||||
eq({['\171']={{'\171'}, {['\171']='\171'}, {a='Test'}}},
|
||||
meths.get_var('NESTEDVAR'))
|
||||
end)
|
||||
|
||||
it('errors and writes when a funcref is stored in a variable',
|
||||
function()
|
||||
nvim_command('let F = function("tr")')
|
||||
meths.set_var('U', '10')
|
||||
nvim_command('set shada+=!')
|
||||
set_additional_cmd('set shada+=!')
|
||||
eq('Vim(wshada):E475: Invalid argument: attempt to dump function reference',
|
||||
exc_exec('wshada'))
|
||||
meths.set_option('shada', '')
|
||||
reset()
|
||||
eq('10', meths.get_var('U'))
|
||||
end)
|
||||
|
||||
it('errors and writes when a self-referencing list is stored in a variable',
|
||||
function()
|
||||
meths.set_var('L', {})
|
||||
nvim_command('call add(L, L)')
|
||||
meths.set_var('U', '10')
|
||||
nvim_command('set shada+=!')
|
||||
eq('Vim(wshada):E475: Invalid argument: container references itself',
|
||||
exc_exec('wshada'))
|
||||
meths.set_option('shada', '')
|
||||
set_additional_cmd('set shada+=!')
|
||||
reset()
|
||||
eq('10', meths.get_var('U'))
|
||||
end)
|
||||
end)
|
||||
|
||||
Reference in New Issue
Block a user