mirror of
https://github.com/neovim/neovim.git
synced 2024-12-20 11:15:14 -07:00
test regression: recover_spec.lua
This commit is contained in:
parent
04806dee4b
commit
b23e444b37
71
test/functional/ex_cmds/recover_spec.lua
Normal file
71
test/functional/ex_cmds/recover_spec.lua
Normal file
@ -0,0 +1,71 @@
|
||||
-- Tests for :recover
|
||||
|
||||
local helpers = require('test.functional.helpers')
|
||||
local execute, eq, clear, eval, feed, expect, source =
|
||||
helpers.execute, helpers.eq, helpers.clear, helpers.eval, helpers.feed,
|
||||
helpers.expect, helpers.source
|
||||
|
||||
describe(':recover', function()
|
||||
before_each(clear)
|
||||
|
||||
it('fails if given a non-existent swapfile', function()
|
||||
local swapname = 'bogus-swapfile'
|
||||
execute('recover '..swapname) -- This should not segfault. #2117
|
||||
eq('E305: No swap file found for '..swapname, eval('v:errmsg'))
|
||||
end)
|
||||
|
||||
end)
|
||||
|
||||
describe(':preserve', function()
|
||||
local swapdir = lfs.currentdir()..'/testdir_recover_spec'
|
||||
before_each(function()
|
||||
clear()
|
||||
os.remove(swapdir)
|
||||
lfs.mkdir(swapdir)
|
||||
end)
|
||||
after_each(function()
|
||||
os.remove(swapdir)
|
||||
end)
|
||||
|
||||
it("saves to custom 'directory' and (R)ecovers (issue #1836)", function()
|
||||
local testfile = 'testfile_recover_spec'
|
||||
local init = [[
|
||||
set swapfile fileformat=unix undolevels=-1
|
||||
set directory^=]]..swapdir..[[//
|
||||
]]
|
||||
|
||||
source(init)
|
||||
execute('set swapfile fileformat=unix undolevels=-1')
|
||||
-- Put swapdir at the start of the 'directory' list. #1836
|
||||
execute('set directory^='..swapdir..'//')
|
||||
execute('edit '..testfile)
|
||||
feed('isometext<esc>')
|
||||
execute('preserve')
|
||||
source('redir => g:swapname | swapname | redir END')
|
||||
|
||||
local swappath1 = eval('g:swapname')
|
||||
|
||||
--TODO(justinmk): this is an ugly hack to force `helpers` to support
|
||||
--multiple sessions.
|
||||
local nvim2 = helpers.spawn({helpers.nvim_prog, '-u', 'NONE', '--embed'})
|
||||
helpers.set_session(nvim2)
|
||||
|
||||
source(init)
|
||||
|
||||
-- Use the "SwapExists" event to choose the (R)ecover choice at the dialog.
|
||||
execute('autocmd SwapExists * let v:swapchoice = "r"')
|
||||
execute('silent edit '..testfile)
|
||||
source('redir => g:swapname | swapname | redir END')
|
||||
|
||||
local swappath2 = eval('g:swapname')
|
||||
|
||||
-- swapfile from session 1 should end in .swp
|
||||
assert(testfile..'.swp' == string.match(swappath1, '[^%%]+$'))
|
||||
|
||||
-- swapfile from session 2 should end in .swo
|
||||
assert(testfile..'.swo' == string.match(swappath2, '[^%%]+$'))
|
||||
|
||||
expect('sometext')
|
||||
end)
|
||||
|
||||
end)
|
Loading…
Reference in New Issue
Block a user