mirror of
https://github.com/neovim/neovim.git
synced 2025-09-14 15:28:17 +00:00
shada: Make sure that NIL and EXT values can also be parsed back
Note: currently they are both *dumped*, but parsing them produces an error. This is inappropriate: variables should either be skipped with error message when dumping or should be read back properly. It also appears that I did not have test for “has wrong variable value type” error, so nothing got removed from errors_spec.
This commit is contained in:
@@ -3883,12 +3883,6 @@ shada_read_next_item_hist_no_conv:
|
|||||||
initial_fpos);
|
initial_fpos);
|
||||||
goto shada_read_next_item_error;
|
goto shada_read_next_item_error;
|
||||||
}
|
}
|
||||||
if (unpacked.data.via.array.ptr[1].type == MSGPACK_OBJECT_NIL
|
|
||||||
|| unpacked.data.via.array.ptr[1].type == MSGPACK_OBJECT_EXT) {
|
|
||||||
emsgu(_(READERR("variable", "has wrong variable value type")),
|
|
||||||
initial_fpos);
|
|
||||||
goto shada_read_next_item_error;
|
|
||||||
}
|
|
||||||
entry->data.global_var.name =
|
entry->data.global_var.name =
|
||||||
xmemdupz(unpacked.data.via.array.ptr[0].via.bin.ptr,
|
xmemdupz(unpacked.data.via.array.ptr[0].via.bin.ptr,
|
||||||
unpacked.data.via.array.ptr[0].via.bin.size);
|
unpacked.data.via.array.ptr[0].via.bin.size);
|
||||||
|
@@ -22,12 +22,17 @@ describe('ShaDa support code', function()
|
|||||||
eq('foo', meths.get_var('STRVAR'))
|
eq('foo', meths.get_var('STRVAR'))
|
||||||
end)
|
end)
|
||||||
|
|
||||||
local autotest = function(tname, varname, varval)
|
local autotest = function(tname, varname, varval, val_is_expr)
|
||||||
it('is able to dump and read back ' .. tname .. ' variable automatically',
|
it('is able to dump and read back ' .. tname .. ' variable automatically',
|
||||||
function()
|
function()
|
||||||
set_additional_cmd('set shada+=!')
|
set_additional_cmd('set shada+=!')
|
||||||
reset()
|
reset()
|
||||||
meths.set_var(varname, varval)
|
if val_is_expr then
|
||||||
|
nvim_command('let g:' .. varname .. ' = ' .. varval)
|
||||||
|
varval = meths.get_var(varname)
|
||||||
|
else
|
||||||
|
meths.set_var(varname, varval)
|
||||||
|
end
|
||||||
-- Exit during `reset` is not a regular exit: it does not write shada
|
-- Exit during `reset` is not a regular exit: it does not write shada
|
||||||
-- automatically
|
-- automatically
|
||||||
nvim_command('qall')
|
nvim_command('qall')
|
||||||
@@ -41,6 +46,10 @@ describe('ShaDa support code', function()
|
|||||||
autotest('float', 'FLTVAR', 42.5)
|
autotest('float', 'FLTVAR', 42.5)
|
||||||
autotest('dictionary', 'DCTVAR', {a=10})
|
autotest('dictionary', 'DCTVAR', {a=10})
|
||||||
autotest('list', 'LSTVAR', {{a=10}, {b=10.5}, {c='str'}})
|
autotest('list', 'LSTVAR', {{a=10}, {b=10.5}, {c='str'}})
|
||||||
|
autotest('true', 'TRUEVAR', true)
|
||||||
|
autotest('false', 'FALSEVAR', false)
|
||||||
|
autotest('null', 'NULLVAR', 'v:null', true)
|
||||||
|
autotest('ext', 'EXTVAR', '{"_TYPE": v:msgpack_types.ext, "_VAL": [2, ["", ""]]}', true)
|
||||||
|
|
||||||
it('does not read back variables without `!` in &shada', function()
|
it('does not read back variables without `!` in &shada', function()
|
||||||
meths.set_var('STRVAR', 'foo')
|
meths.set_var('STRVAR', 'foo')
|
||||||
|
Reference in New Issue
Block a user