aboutsummaryrefslogtreecommitdiff
path: root/test/functional/shada/shada_spec.lua
diff options
context:
space:
mode:
Diffstat (limited to 'test/functional/shada/shada_spec.lua')
-rw-r--r--test/functional/shada/shada_spec.lua201
1 files changed, 112 insertions, 89 deletions
diff --git a/test/functional/shada/shada_spec.lua b/test/functional/shada/shada_spec.lua
index 3a3238eb34..6eb318015d 100644
--- a/test/functional/shada/shada_spec.lua
+++ b/test/functional/shada/shada_spec.lua
@@ -1,25 +1,20 @@
-- Other ShaDa tests
local helpers = require('test.functional.helpers')(after_each)
-local meths, nvim_command, funcs, eq =
- helpers.meths, helpers.command, helpers.funcs, helpers.eq
+local api, nvim_command, fn, eq = helpers.api, helpers.command, helpers.fn, helpers.eq
local write_file, spawn, set_session, nvim_prog, exc_exec =
- helpers.write_file, helpers.spawn, helpers.set_session, helpers.nvim_prog,
- helpers.exc_exec
+ helpers.write_file, helpers.spawn, helpers.set_session, helpers.nvim_prog, helpers.exc_exec
local is_os = helpers.is_os
local skip = helpers.skip
-local luv = require('luv')
-local paths = require('test.cmakeconfig.paths')
-
-local mpack = require('mpack')
+local uv = vim.uv
+local paths = helpers.paths
local shada_helpers = require('test.functional.shada.helpers')
local reset, clear, get_shada_rw =
shada_helpers.reset, shada_helpers.clear, shada_helpers.get_shada_rw
local read_shada_file = shada_helpers.read_shada_file
-local wshada, _, shada_fname, clean =
- get_shada_rw('Xtest-functional-shada-shada.shada')
+local wshada, _, shada_fname, clean = get_shada_rw('Xtest-functional-shada-shada.shada')
local dirname = 'Xtest-functional-shada-shada.d'
local dirshada = dirname .. '/main.shada'
@@ -29,12 +24,16 @@ describe('ShaDa support code', function()
after_each(function()
clear()
clean()
- luv.fs_rmdir(dirname)
+ uv.fs_rmdir(dirname)
end)
it('preserves `s` item size limit with unknown entries', function()
- wshada('\100\000\207\000\000\000\000\000\000\004\000\218\003\253' .. ('-'):rep(1024 - 3)
- .. '\100\000\207\000\000\000\000\000\000\004\001\218\003\254' .. ('-'):rep(1025 - 3))
+ wshada(
+ '\100\000\207\000\000\000\000\000\000\004\000\218\003\253'
+ .. ('-'):rep(1024 - 3)
+ .. '\100\000\207\000\000\000\000\000\000\004\001\218\003\254'
+ .. ('-'):rep(1025 - 3)
+ )
eq(0, exc_exec('wshada ' .. shada_fname))
local found = 0
for _, v in ipairs(read_shada_file(shada_fname)) do
@@ -58,8 +57,8 @@ describe('ShaDa support code', function()
local hist1 = ('-'):rep(1024 - 5)
local hist2 = ('-'):rep(1025 - 5)
nvim_command('set shada-=s10 shada+=s1')
- funcs.histadd(':', hist1)
- funcs.histadd(':', hist2)
+ fn.histadd(':', hist1)
+ fn.histadd(':', hist2)
eq(0, exc_exec('wshada ' .. shada_fname))
local found = 0
for _, v in ipairs(read_shada_file(shada_fname)) do
@@ -73,35 +72,53 @@ describe('ShaDa support code', function()
it('leaves .tmp.a in-place when there is error in original ShaDa', function()
wshada('Some text file')
- eq('Vim(wshada):E576: Error while reading ShaDa file: last entry specified that it occupies 109 bytes, but file ended earlier', exc_exec('wshada ' .. shada_fname))
+ eq(
+ 'Vim(wshada):E576: Error while reading ShaDa file: last entry specified that it occupies 109 bytes, but file ended earlier',
+ exc_exec('wshada ' .. shada_fname)
+ )
eq(1, read_shada_file(shada_fname .. '.tmp.a')[1].type)
end)
- it('does not leave .tmp.a in-place when there is error in original ShaDa, but writing with bang', function()
- wshada('Some text file')
- eq(0, exc_exec('wshada! ' .. shada_fname))
- eq(1, read_shada_file(shada_fname)[1].type)
- eq(nil, luv.fs_stat(shada_fname .. '.tmp.a'))
- end)
+ it(
+ 'does not leave .tmp.a in-place when there is error in original ShaDa, but writing with bang',
+ function()
+ wshada('Some text file')
+ eq(0, exc_exec('wshada! ' .. shada_fname))
+ eq(1, read_shada_file(shada_fname)[1].type)
+ eq(nil, uv.fs_stat(shada_fname .. '.tmp.a'))
+ end
+ )
it('leaves .tmp.b in-place when there is error in original ShaDa and it has .tmp.a', function()
wshada('Some text file')
- eq('Vim(wshada):E576: Error while reading ShaDa file: last entry specified that it occupies 109 bytes, but file ended earlier', exc_exec('wshada ' .. shada_fname))
- eq('Vim(wshada):E576: Error while reading ShaDa file: last entry specified that it occupies 109 bytes, but file ended earlier', exc_exec('wshada ' .. shada_fname))
+ eq(
+ 'Vim(wshada):E576: Error while reading ShaDa file: last entry specified that it occupies 109 bytes, but file ended earlier',
+ exc_exec('wshada ' .. shada_fname)
+ )
+ eq(
+ 'Vim(wshada):E576: Error while reading ShaDa file: last entry specified that it occupies 109 bytes, but file ended earlier',
+ exc_exec('wshada ' .. shada_fname)
+ )
eq(1, read_shada_file(shada_fname .. '.tmp.a')[1].type)
eq(1, read_shada_file(shada_fname .. '.tmp.b')[1].type)
end)
- it('leaves .tmp.z in-place when there is error in original ShaDa and it has .tmp.a … .tmp.x', function()
- wshada('Some text file')
- local i = ('a'):byte()
- while i < ('z'):byte() do
- write_file(shada_fname .. ('.tmp.%c'):format(i), 'Some text file', true)
- i = i + 1
+ it(
+ 'leaves .tmp.z in-place when there is error in original ShaDa and it has .tmp.a … .tmp.x',
+ function()
+ wshada('Some text file')
+ local i = ('a'):byte()
+ while i < ('z'):byte() do
+ write_file(shada_fname .. ('.tmp.%c'):format(i), 'Some text file', true)
+ i = i + 1
+ end
+ eq(
+ 'Vim(wshada):E576: Error while reading ShaDa file: last entry specified that it occupies 109 bytes, but file ended earlier',
+ exc_exec('wshada ' .. shada_fname)
+ )
+ eq(1, read_shada_file(shada_fname .. '.tmp.z')[1].type)
end
- eq('Vim(wshada):E576: Error while reading ShaDa file: last entry specified that it occupies 109 bytes, but file ended earlier', exc_exec('wshada ' .. shada_fname))
- eq(1, read_shada_file(shada_fname .. '.tmp.z')[1].type)
- end)
+ )
it('errors out when there are .tmp.a … .tmp.z ShaDa files', function()
wshada('')
@@ -110,33 +127,36 @@ describe('ShaDa support code', function()
write_file(shada_fname .. ('.tmp.%c'):format(i), '', true)
i = i + 1
end
- eq('Vim(wshada):E138: All Xtest-functional-shada-shada.shada.tmp.X files exist, cannot write ShaDa file!', exc_exec('wshada ' .. shada_fname))
+ eq(
+ 'Vim(wshada):E138: All Xtest-functional-shada-shada.shada.tmp.X files exist, cannot write ShaDa file!',
+ exc_exec('wshada ' .. shada_fname)
+ )
end)
it('reads correctly various timestamps', function()
local msgpack = {
- '\100', -- Positive fixnum 100
- '\204\255', -- uint 8 255
- '\205\010\003', -- uint 16 2563
- '\206\255\010\030\004', -- uint 32 4278853124
- '\207\005\100\060\250\255\010\030\004', -- uint 64 388502516579048964
+ '\100', -- Positive fixnum 100
+ '\204\255', -- uint 8 255
+ '\205\010\003', -- uint 16 2563
+ '\206\255\010\030\004', -- uint 32 4278853124
+ '\207\005\100\060\250\255\010\030\004', -- uint 64 388502516579048964
}
local s = '\100'
local e = '\001\192'
wshada(s .. table.concat(msgpack, e .. s) .. e)
eq(0, exc_exec('wshada ' .. shada_fname))
local found = 0
- local typ = mpack.decode(s)
+ local typ = vim.mpack.decode(s)
for _, v in ipairs(read_shada_file(shada_fname)) do
if v.type == typ then
found = found + 1
- eq(mpack.decode(msgpack[found]), v.timestamp)
+ eq(vim.mpack.decode(msgpack[found]), v.timestamp)
end
end
eq(#msgpack, found)
end)
- local marklike = {[7]=true, [8]=true, [10]=true, [11]=true}
+ local marklike = { [7] = true, [8] = true, [10] = true, [11] = true }
local find_file = function(fname)
local found = {}
for _, v in ipairs(read_shada_file(shada_fname)) do
@@ -155,7 +175,7 @@ describe('ShaDa support code', function()
it('correctly uses shada-r option', function()
nvim_command('set shellslash')
- meths.set_var('__home', paths.test_source_path)
+ api.nvim_set_var('__home', paths.test_source_path)
nvim_command('let $HOME = __home')
nvim_command('unlet __home')
nvim_command('edit ~/README.md')
@@ -163,104 +183,107 @@ describe('ShaDa support code', function()
nvim_command('undo')
nvim_command('set shada+=%')
nvim_command('wshada! ' .. shada_fname)
- local readme_fname = funcs.resolve(paths.test_source_path) .. '/README.md'
- eq({[7]=2, [8]=2, [9]=1, [10]=4, [11]=1}, find_file(readme_fname))
+ local readme_fname = fn.resolve(paths.test_source_path) .. '/README.md'
+ eq({ [7] = 2, [8] = 2, [9] = 1, [10] = 4, [11] = 1 }, find_file(readme_fname))
nvim_command('set shada+=r~')
nvim_command('wshada! ' .. shada_fname)
eq({}, find_file(readme_fname))
nvim_command('set shada-=r~')
nvim_command('wshada! ' .. shada_fname)
- eq({[7]=2, [8]=2, [9]=1, [10]=4, [11]=1}, find_file(readme_fname))
- nvim_command('set shada+=r' .. funcs.escape(
- funcs.escape(paths.test_source_path, '$~'), ' "\\,'))
+ eq({ [7] = 2, [8] = 2, [9] = 1, [10] = 4, [11] = 1 }, find_file(readme_fname))
+ nvim_command('set shada+=r' .. fn.escape(fn.escape(paths.test_source_path, '$~'), ' "\\,'))
nvim_command('wshada! ' .. shada_fname)
eq({}, find_file(readme_fname))
end)
it('correctly ignores case with shada-r option', function()
nvim_command('set shellslash')
- local pwd = funcs.getcwd()
+ local pwd = fn.getcwd()
local relfname = 'абв/test'
local fname = pwd .. '/' .. relfname
- meths.set_var('__fname', fname)
+ api.nvim_set_var('__fname', fname)
nvim_command('silent! edit `=__fname`')
- funcs.setline(1, {'a', 'b', 'c', 'd'})
+ fn.setline(1, { 'a', 'b', 'c', 'd' })
nvim_command('normal! GmAggmaAabc')
nvim_command('undo')
nvim_command('set shada+=%')
nvim_command('wshada! ' .. shada_fname)
- eq({[7]=2, [8]=2, [9]=1, [10]=4, [11]=2}, find_file(fname))
+ eq({ [7] = 2, [8] = 2, [9] = 1, [10] = 4, [11] = 2 }, find_file(fname))
nvim_command('set shada+=r' .. pwd .. '/АБВ')
nvim_command('wshada! ' .. shada_fname)
eq({}, find_file(fname))
end)
it('is able to set &shada after &viminfo', function()
- meths.set_option_value('viminfo', '\'10', {})
- eq('\'10', meths.get_option_value('viminfo', {}))
- eq('\'10', meths.get_option_value('shada', {}))
- meths.set_option_value('shada', '', {})
- eq('', meths.get_option_value('viminfo', {}))
- eq('', meths.get_option_value('shada', {}))
+ api.nvim_set_option_value('viminfo', "'10", {})
+ eq("'10", api.nvim_get_option_value('viminfo', {}))
+ eq("'10", api.nvim_get_option_value('shada', {}))
+ api.nvim_set_option_value('shada', '', {})
+ eq('', api.nvim_get_option_value('viminfo', {}))
+ eq('', api.nvim_get_option_value('shada', {}))
end)
it('is able to set all& after setting &shada', function()
- meths.set_option_value('shada', '\'10', {})
- eq('\'10', meths.get_option_value('viminfo', {}))
- eq('\'10', meths.get_option_value('shada', {}))
+ api.nvim_set_option_value('shada', "'10", {})
+ eq("'10", api.nvim_get_option_value('viminfo', {}))
+ eq("'10", api.nvim_get_option_value('shada', {}))
nvim_command('set all&')
- eq('!,\'100,<50,s10,h', meths.get_option_value('viminfo', {}))
- eq('!,\'100,<50,s10,h', meths.get_option_value('shada', {}))
+ eq("!,'100,<50,s10,h", api.nvim_get_option_value('viminfo', {}))
+ eq("!,'100,<50,s10,h", api.nvim_get_option_value('shada', {}))
end)
it('is able to set &shada after &viminfo using :set', function()
- nvim_command('set viminfo=\'10')
- eq('\'10', meths.get_option_value('viminfo', {}))
- eq('\'10', meths.get_option_value('shada', {}))
+ nvim_command("set viminfo='10")
+ eq("'10", api.nvim_get_option_value('viminfo', {}))
+ eq("'10", api.nvim_get_option_value('shada', {}))
nvim_command('set shada=')
- eq('', meths.get_option_value('viminfo', {}))
- eq('', meths.get_option_value('shada', {}))
+ eq('', api.nvim_get_option_value('viminfo', {}))
+ eq('', api.nvim_get_option_value('shada', {}))
end)
it('setting &shada gives proper error message on missing number', function()
- eq([[Vim(set):E526: Missing number after <">: shada="]],
- exc_exec([[set shada=\"]]))
- for _, c in ipairs({"'", "/", ":", "<", "@", "s"}) do
- eq(([[Vim(set):E526: Missing number after <%s>: shada=%s]]):format(c, c),
- exc_exec(([[set shada=%s]]):format(c)))
+ eq([[Vim(set):E526: Missing number after <">: shada="]], exc_exec([[set shada=\"]]))
+ for _, c in ipairs({ "'", '/', ':', '<', '@', 's' }) do
+ eq(
+ ([[Vim(set):E526: Missing number after <%s>: shada=%s]]):format(c, c),
+ exc_exec(([[set shada=%s]]):format(c))
+ )
end
end)
it('does not crash when ShaDa file directory is not writable', function()
skip(is_os('win'))
- funcs.mkdir(dirname, '', 0)
- eq(0, funcs.filewritable(dirname))
- reset{shadafile=dirshada, args={'--cmd', 'set shada='}}
- meths.set_option_value('shada', '\'10', {})
- eq('Vim(wshada):E886: System error while opening ShaDa file '
- .. 'Xtest-functional-shada-shada.d/main.shada for reading to merge '
- .. 'before writing it: permission denied',
- exc_exec('wshada'))
- meths.set_option_value('shada', '', {})
+ fn.mkdir(dirname, '', 0)
+ eq(0, fn.filewritable(dirname))
+ reset { shadafile = dirshada, args = { '--cmd', 'set shada=' } }
+ api.nvim_set_option_value('shada', "'10", {})
+ eq(
+ 'Vim(wshada):E886: System error while opening ShaDa file '
+ .. 'Xtest-functional-shada-shada.d/main.shada for reading to merge '
+ .. 'before writing it: permission denied',
+ exc_exec('wshada')
+ )
+ api.nvim_set_option_value('shada', '', {})
end)
end)
describe('ShaDa support code', function()
it('does not write NONE file', function()
- local session = spawn({nvim_prog, '-u', 'NONE', '-i', 'NONE', '--embed',
- '--headless', '--cmd', 'qall'}, true)
+ local session = spawn(
+ { nvim_prog, '-u', 'NONE', '-i', 'NONE', '--embed', '--headless', '--cmd', 'qall' },
+ true
+ )
session:close()
- eq(nil, luv.fs_stat('NONE'))
- eq(nil, luv.fs_stat('NONE.tmp.a'))
+ eq(nil, uv.fs_stat('NONE'))
+ eq(nil, uv.fs_stat('NONE.tmp.a'))
end)
it('does not read NONE file', function()
write_file('NONE', '\005\001\015\131\161na\162rX\194\162rc\145\196\001-')
- local session = spawn({nvim_prog, '-u', 'NONE', '-i', 'NONE', '--embed',
- '--headless'}, true)
+ local session = spawn({ nvim_prog, '-u', 'NONE', '-i', 'NONE', '--embed', '--headless' }, true)
set_session(session)
- eq('', funcs.getreg('a'))
+ eq('', fn.getreg('a'))
session:close()
os.remove('NONE')
end)