2015-07-25 15:52:50 -07:00
-- ShaDa errors handling support
local helpers = require ( ' test.functional.helpers ' )
local nvim , nvim_window , nvim_curwin , nvim_command , nvim_feed , nvim_eval , eq =
helpers.nvim , helpers.window , helpers.curwin , helpers.command , helpers.feed ,
helpers.eval , helpers.eq
local write_file = helpers.write_file
local shada_helpers = require ( ' test.functional.shada.helpers ' )
local reset , set_additional_cmd , clear , exc_exec =
shada_helpers.reset , shada_helpers.set_additional_cmd ,
shada_helpers.clear , shada_helpers.exc_exec
local shada_fname = ' Xtest-functional-shada-errors.shada '
local wshada = function ( text )
write_file ( shada_fname , text , true )
end
local sdrcmd = function ( bang )
return ' rshada ' .. ( bang and ' ! ' or ' ' ) .. ' ' .. shada_fname
end
describe ( ' ShaDa error handling ' , function ( )
before_each ( reset )
after_each ( function ( )
clear ( )
os.remove ( shada_fname )
local i = ( ' a ' ) : byte ( )
while i < ( ' z ' ) : byte ( ) do
if not os.remove ( shada_fname .. ( ' .tmp.%c ' ) : format ( i ) ) then
break
end
i = i + 1
end
end )
-- Note: most of tests have additional items like sX, mX, rX. These are for
-- valgrind tests, to check for memory leaks (i.e. whether error handling code
-- does (not) forget to call ga_clear). Not needed for array-based items like
-- history because they are not using ad_ga.
it ( ' does not fail on empty file ' , function ( )
wshada ( ' ' )
eq ( 0 , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on zero ' , function ( )
wshada ( ' \000 ' )
2015-08-01 16:49:44 -07:00
eq ( ' Vim(rshada):E576: Error while reading ShaDa file: expected positive integer at position 0, but got nothing ' , exc_exec ( sdrcmd ( ) ) )
2015-07-25 15:52:50 -07:00
end )
it ( ' fails on missing item ' , function ( )
wshada ( ' \000 \000 \000 ' )
2015-08-01 16:49:44 -07:00
eq ( ' Vim(rshada):E576: Error while reading ShaDa file: there is an item at position 0 that must not be there: Missing items are for internal uses only ' , exc_exec ( sdrcmd ( ) ) )
2015-07-25 15:52:50 -07:00
end )
it ( ' fails on -2 type ' , function ( )
wshada ( ' \254 \000 \000 ' )
2015-08-01 16:49:44 -07:00
eq ( ' Vim(rshada):E576: Error while reading ShaDa file: expected positive integer at position 0 ' , exc_exec ( sdrcmd ( ) ) )
2015-07-25 15:52:50 -07:00
end )
it ( ' does not fail on header with zero length ' , function ( )
-- Header items are skipped when reading.
wshada ( ' \001 \000 \000 ' )
eq ( 0 , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on search pattern item with zero length ' , function ( )
wshada ( ' \002 \000 \000 ' )
2015-08-01 16:49:44 -07:00
eq ( ' Vim(rshada):E576: Failed to parse ShaDa file: incomplete msgpack string at position 0 ' , exc_exec ( sdrcmd ( ) ) )
2015-07-25 15:52:50 -07:00
end )
it ( ' fails on search pattern item with -2 timestamp ' , function ( )
wshada ( ' \002 \254 \000 ' )
2015-08-01 16:49:44 -07:00
eq ( ' Vim(rshada):E576: Error while reading ShaDa file: expected positive integer at position 1 ' , exc_exec ( sdrcmd ( ) ) )
2015-07-25 15:52:50 -07:00
end )
it ( ' fails on search pattern item with -2 length ' , function ( )
wshada ( ' \002 \000 \254 ' )
2015-08-01 16:49:44 -07:00
eq ( ' Vim(rshada):E576: Error while reading ShaDa file: expected positive integer at position 2 ' , exc_exec ( sdrcmd ( ) ) )
2015-07-25 15:52:50 -07:00
end )
it ( ' fails on search pattern item with length greater then file length ' , function ( )
wshada ( ' \002 \000 \002 \000 ' )
2015-08-01 16:49:44 -07:00
eq ( ' Vim(rshada):E576: Error while reading ShaDa file: last entry specified that it occupies 2 bytes, but file ended earlier ' , exc_exec ( sdrcmd ( ) ) )
2015-07-25 15:52:50 -07:00
end )
it ( ' fails on search pattern item with invalid byte ' , function ( )
-- 195 (== 0xC1) cannot start any valid messagepack entry (the only byte
-- that cannot do this). Specifically unpack_template.h contains
--
-- //case 0xc1: // string
-- // again_terminal_trail(NEXT_CS(p), p+1);
--
-- (literally: commented out code) which means that in place of this code
-- `goto _failed` is used from default: case. I do not know any other way to
-- get MSGPACK_UNPACK_PARSE_ERROR and not MSGPACK_UNPACK_CONTINUE or
-- MSGPACK_UNPACK_EXTRA_BYTES.
wshada ( ' \002 \000 \001 \193 ' )
2015-08-01 16:49:44 -07:00
eq ( ' Vim(rshada):E576: Failed to parse ShaDa file due to a msgpack parser error at position 0 ' , exc_exec ( sdrcmd ( ) ) )
2015-07-25 15:52:50 -07:00
end )
it ( ' fails on search pattern item with incomplete map ' , function ( )
wshada ( ' \002 \000 \001 \129 ' )
2015-08-01 16:49:44 -07:00
eq ( ' Vim(rshada):E576: Failed to parse ShaDa file: incomplete msgpack string at position 0 ' , exc_exec ( sdrcmd ( ) ) )
2015-07-25 15:52:50 -07:00
end )
it ( ' fails on search pattern item without a pattern ' , function ( )
wshada ( ' \002 \000 \005 \129 \162 sX \192 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: search pattern entry at position 0 has no pattern ' , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on search pattern with extra bytes ' , function ( )
wshada ( ' \002 \000 \002 \128 \000 ' )
2015-08-01 16:49:44 -07:00
eq ( ' Vim(rshada):E576: Failed to parse ShaDa file: extra bytes in msgpack string at position 0 ' , exc_exec ( sdrcmd ( ) ) )
2015-07-25 15:52:50 -07:00
end )
it ( ' fails on search pattern item with NIL value ' , function ( )
wshada ( ' \002 \000 \001 \192 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: search pattern entry at position 0 is not a dictionary ' , exc_exec ( sdrcmd ( ) ) )
end )
-- sp entry is here because it causes an allocation.
it ( ' fails on search pattern item with BIN key ' , function ( )
wshada ( ' \002 \000 \014 \131 \162 sp \196 \001 a \162 sX \192 \196 \000 \000 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: search pattern entry at position 0 has key which is not a string ' , exc_exec ( sdrcmd ( ) ) )
end )
2015-08-03 22:19:01 -07:00
-- sp entry is here because it causes an allocation.
it ( ' fails on search pattern item with empty key ' , function ( )
wshada ( ' \002 \000 \013 \131 \162 sp \196 \001 a \162 sX \192 \160 \000 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: search pattern entry at position 0 has empty key ' , exc_exec ( sdrcmd ( ) ) )
end )
2015-07-25 15:52:50 -07:00
it ( ' fails on search pattern item with NIL magic key value ' , function ( )
wshada ( ' \002 \000 \009 \130 \162 sX \192 \162 sm \192 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: search pattern entry at position 0 has sm key value which is not a boolean ' , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on search pattern item with NIL smartcase key value ' , function ( )
wshada ( ' \002 \000 \009 \130 \162 sX \192 \162 sc \192 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: search pattern entry at position 0 has sc key value which is not a boolean ' , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on search pattern item with NIL has_line_offset key value ' , function ( )
wshada ( ' \002 \000 \009 \130 \162 sX \192 \162 sl \192 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: search pattern entry at position 0 has sl key value which is not a boolean ' , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on search pattern item with NIL place_cursor_at_end key value ' , function ( )
wshada ( ' \002 \000 \009 \130 \162 sX \192 \162 se \192 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: search pattern entry at position 0 has se key value which is not a boolean ' , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on search pattern item with NIL is_last_used key value ' , function ( )
wshada ( ' \002 \000 \009 \130 \162 sX \192 \162 su \192 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: search pattern entry at position 0 has su key value which is not a boolean ' , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on search pattern item with NIL is_substitute_pattern key value ' , function ( )
wshada ( ' \002 \000 \009 \130 \162 sX \192 \162 ss \192 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: search pattern entry at position 0 has ss key value which is not a boolean ' , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on search pattern item with NIL highlighted key value ' , function ( )
wshada ( ' \002 \000 \009 \130 \162 sX \192 \162 sh \192 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: search pattern entry at position 0 has sh key value which is not a boolean ' , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on search pattern item with NIL offset key value ' , function ( )
wshada ( ' \002 \000 \009 \130 \162 sX \192 \162 so \192 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: search pattern entry at position 0 has so key value which is not an integer ' , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on search pattern item with NIL pat key value ' , function ( )
wshada ( ' \002 \000 \009 \130 \162 sX \192 \162 sp \192 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: search pattern entry at position 0 has sp key value which is not a binary ' , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on search pattern item with STR pat key value ' , function ( )
wshada ( ' \002 \000 \011 \130 \162 sX \192 \162 sp \162 sp ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: search pattern entry at position 0 has sp key value which is not a binary ' , exc_exec ( sdrcmd ( ) ) )
end )
for _ , v in ipairs ( { { name = ' global mark ' , mpack = ' \007 ' } ,
{ name = ' jump ' , mpack = ' \008 ' } ,
{ name = ' local mark ' , mpack = ' \010 ' } ,
{ name = ' change ' , mpack = ' \011 ' } ,
} ) do
local is_mark_test = ( { [ ' global mark ' ] = true , [ ' local mark ' ] = true } ) [ v.name ]
it ( ' fails on ' .. v.name .. ' item with NIL value ' , function ( )
wshada ( v.mpack .. ' \000 \001 \192 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: mark entry at position 0 is not a dictionary ' , exc_exec ( sdrcmd ( ) ) )
end )
-- f entry is here because it causes an allocation.
it ( ' fails on ' .. v.name .. ' item with BIN key ' , function ( )
wshada ( v.mpack .. ' \000 \013 \131 \161 f \196 \001 / \162 mX \192 \196 \000 \000 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: mark entry at position 0 has key which is not a string ' , exc_exec ( sdrcmd ( ) ) )
end )
2015-08-03 22:19:01 -07:00
-- f entry is here because it causes an allocation.
it ( ' fails on ' .. v.name .. ' item with empty key ' , function ( )
wshada ( v.mpack .. ' \000 \012 \131 \161 f \196 \001 / \162 mX \192 \160 \000 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: mark entry at position 0 has empty key ' , exc_exec ( sdrcmd ( ) ) )
end )
2015-07-25 15:52:50 -07:00
it ( ' fails on ' .. v.name .. ' item without f key ' , function ( )
wshada ( v.mpack .. ' \000 \008 \130 \162 mX \192 \161 l \001 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: mark entry at position 0 is missing file name ' , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on ' .. v.name .. ' item with zero l key ' , function ( )
wshada ( v.mpack .. ' \000 \013 \131 \162 mX \192 \161 f \196 \001 / \161 l \000 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: mark entry at position 0 has invalid line number ' , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on ' .. v.name .. ' item with negative l key ' , function ( )
wshada ( v.mpack .. ' \000 \013 \131 \162 mX \192 \161 f \196 \001 / \161 l \255 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: mark entry at position 0 has invalid line number ' , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on ' .. v.name .. ' item with negative c key ' , function ( )
wshada ( v.mpack .. ' \000 \013 \131 \162 mX \192 \161 f \196 \001 / \161 c \255 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: mark entry at position 0 has invalid column number ' , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on ' .. v.name .. ' item with STR n key value ' , function ( )
wshada ( v.mpack .. ' \000 \011 \130 \162 mX \192 \161 n \163 spa ' )
eq ( is_mark_test and ' Vim(rshada):E575: Error while reading ShaDa file: mark entry at position 0 has n key value which is not an unsigned integer ' or ' Vim(rshada):E575: Error while reading ShaDa file: mark entry at position 0 has n key which is only valid for local and global mark entries ' , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on ' .. v.name .. ' item with STR l key value ' , function ( )
wshada ( v.mpack .. ' \000 \010 \130 \162 mX \192 \161 l \162 sp ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: mark entry at position 0 has l key value which is not an integer ' , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on ' .. v.name .. ' item with STR c key value ' , function ( )
wshada ( v.mpack .. ' \000 \010 \130 \162 mX \192 \161 c \162 sp ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: mark entry at position 0 has c key value which is not an integer ' , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on ' .. v.name .. ' item with STR f key value ' , function ( )
wshada ( v.mpack .. ' \000 \010 \130 \162 mX \192 \161 f \162 sp ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: mark entry at position 0 has f key value which is not a binary ' , exc_exec ( sdrcmd ( ) ) )
end )
end
it ( ' fails on register item with NIL value ' , function ( )
wshada ( ' \005 \000 \001 \192 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: register entry at position 0 is not a dictionary ' , exc_exec ( sdrcmd ( ) ) )
end )
-- rc entry is here because it causes an allocation
it ( ' fails on register item with BIN key ' , function ( )
wshada ( ' \005 \000 \015 \131 \162 rc \145 \196 \001 a \162 rX \192 \196 \000 \000 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: register entry at position 0 has key which is not a string ' , exc_exec ( sdrcmd ( ) ) )
end )
2015-08-03 22:19:01 -07:00
-- rc entry is here because it causes an allocation
it ( ' fails on register item with BIN key ' , function ( )
wshada ( ' \005 \000 \014 \131 \162 rc \145 \196 \001 a \162 rX \192 \160 \000 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: register entry at position 0 has empty key ' , exc_exec ( sdrcmd ( ) ) )
end )
2015-07-25 15:52:50 -07:00
it ( ' fails on register item with NIL rt key value ' , function ( )
wshada ( ' \005 \000 \009 \130 \162 rX \192 \162 rt \192 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: register entry at position 0 has rt key value which is not an unsigned integer ' , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on register item with NIL rw key value ' , function ( )
wshada ( ' \005 \000 \009 \130 \162 rX \192 \162 rw \192 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: register entry at position 0 has rw key value which is not an unsigned integer ' , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on register item with NIL rc key value ' , function ( )
wshada ( ' \005 \000 \009 \130 \162 rX \192 \162 rc \192 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: register entry at position 0 has rc key with non-array value ' , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on register item with empty rc key value ' , function ( )
wshada ( ' \005 \000 \009 \130 \162 rX \192 \162 rc \144 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: register entry at position 0 has rc key with empty array ' , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on register item with NIL in rc array ' , function ( )
wshada ( ' \005 \000 \013 \130 \162 rX \192 \162 rc \146 \196 \001 a \192 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: register entry at position 0 has rc array with non-binary value ' , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on register item without rc array ' , function ( )
wshada ( ' \005 \000 \009 \129 \162 rX \146 \196 \001 a \192 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: register entry at position 0 has missing rc array ' , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on history item with NIL value ' , function ( )
wshada ( ' \004 \000 \001 \192 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: history entry at position 0 is not an array ' , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on history item with empty value ' , function ( )
wshada ( ' \004 \000 \001 \144 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: history entry at position 0 does not have enough elements ' , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on history item with single element value ' , function ( )
wshada ( ' \004 \000 \002 \145 \000 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: history entry at position 0 does not have enough elements ' , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on history item with NIL first item ' , function ( )
wshada ( ' \004 \000 \003 \146 \192 \000 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: history entry at position 0 has wrong history type type ' , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on history item with FIXUINT second item ' , function ( )
wshada ( ' \004 \000 \003 \146 \000 \000 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: history entry at position 0 has wrong history string type ' , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on history item with second item with zero byte ' , function ( )
wshada ( ' \004 \000 \007 \146 \000 \196 \003 ab \000 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: history entry at position 0 contains string with zero byte inside ' , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on search history item without third item ' , function ( )
wshada ( ' \004 \000 \007 \146 \001 \196 \003 abc ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: search history entry at position 0 does not have separator character ' , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on search history item with NIL third item ' , function ( )
wshada ( ' \004 \000 \007 \147 \001 \196 \002 ab \192 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: search history entry at position 0 has wrong history separator type ' , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on variable item with NIL value ' , function ( )
wshada ( ' \006 \000 \001 \192 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: variable entry at position 0 is not an array ' , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on variable item with empty value ' , function ( )
wshada ( ' \006 \000 \001 \144 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: variable entry at position 0 does not have enough elements ' , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on variable item with single element value ' , function ( )
wshada ( ' \006 \000 \002 \145 \000 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: variable entry at position 0 does not have enough elements ' , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on variable item with NIL first item ' , function ( )
wshada ( ' \006 \000 \003 \146 \192 \000 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: variable entry at position 0 has wrong variable name type ' , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on replacement item with NIL value ' , function ( )
wshada ( ' \003 \000 \001 \192 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: sub string entry at position 0 is not an array ' , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on replacement item with empty value ' , function ( )
wshada ( ' \003 \000 \001 \144 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: sub string entry at position 0 does not have enough elements ' , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on replacement item with NIL first item ' , function ( )
wshada ( ' \003 \000 \002 \145 \192 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: sub string entry at position 0 has wrong sub string type ' , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on buffer list item with NIL value ' , function ( )
nvim_command ( ' set shada+=% ' )
wshada ( ' \009 \000 \001 \192 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: buffer list entry at position 0 is not an array ' , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on buffer list item with NIL item in the array ' , function ( )
nvim_command ( ' set shada+=% ' )
wshada ( ' \009 \000 \008 \146 \129 \161 f \196 \001 / \192 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: buffer list at position 0 contains entry that is not a dictionary ' , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on buffer list item with empty item ' , function ( )
nvim_command ( ' set shada+=% ' )
wshada ( ' \009 \000 \008 \146 \129 \161 f \196 \001 / \128 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: buffer list at position 0 contains entry that does not have a file name ' , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on buffer list item with NIL l key ' , function ( )
nvim_command ( ' set shada+=% ' )
wshada ( ' \009 \000 \017 \146 \129 \161 f \196 \001 / \130 \161 f \196 \002 /a \161 l \192 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: buffer list entry entry at position 0 has l key value which is not an integer ' , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on buffer list item with zero l key ' , function ( )
nvim_command ( ' set shada+=% ' )
wshada ( ' \009 \000 \017 \146 \129 \161 f \196 \001 / \130 \161 f \196 \002 /a \161 l \000 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: buffer list at position 0 contains entry with invalid line number ' , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on buffer list item with negative l key ' , function ( )
nvim_command ( ' set shada+=% ' )
wshada ( ' \009 \000 \017 \146 \129 \161 f \196 \001 / \130 \161 f \196 \002 /a \161 l \255 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: buffer list at position 0 contains entry with invalid line number ' , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on buffer list item with negative c key ' , function ( )
nvim_command ( ' set shada+=% ' )
wshada ( ' \009 \000 \017 \146 \129 \161 f \196 \001 / \130 \161 f \196 \002 /a \161 c \255 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: buffer list at position 0 contains entry with invalid column number ' , exc_exec ( sdrcmd ( ) ) )
end )
it ( ' fails on buffer list item with NIL c key ' , function ( )
nvim_command ( ' set shada+=% ' )
wshada ( ' \009 \000 \017 \146 \129 \161 f \196 \001 / \130 \161 f \196 \002 /a \161 c \192 ' )
eq ( ' Vim(rshada):E575: Error while reading ShaDa file: buffer list entry entry at position 0 has c key value which is not an integer ' , exc_exec ( sdrcmd ( ) ) )
end )
end )