neovim/test/functional/ex_cmds/oldfiles_spec.lua
2017-04-29 23:48:28 -04:00

95 lines
2.9 KiB
Lua

local Screen = require('test.functional.ui.screen')
local helpers = require('test.functional.helpers')(after_each)
local buf, eq, feed_command = helpers.curbufmeths, helpers.eq, helpers.feed_command
local feed, nvim_prog, wait = helpers.feed, helpers.nvim_prog, helpers.wait
local ok, set_session, spawn = helpers.ok, helpers.set_session, helpers.spawn
local shada_file = 'Xtest.shada'
local function _clear()
set_session(spawn({nvim_prog, '--embed', '-u', 'NONE',
-- Need shada for these tests.
'-i', shada_file,
'--cmd', 'set noswapfile undodir=. directory=. viewdir=. backupdir=. belloff= noshowcmd noruler'}))
end
describe(':oldfiles', function()
before_each(_clear)
after_each(function()
os.remove(shada_file)
end)
local function add_padding(s)
return s .. string.rep(' ', 96 - string.len(s))
end
it('shows most recently used files', function()
local screen = Screen.new(100, 5)
screen:attach()
feed_command('edit testfile1')
feed_command('edit testfile2')
feed_command('wshada')
feed_command('rshada!')
local oldfiles = helpers.meths.get_vvar('oldfiles')
feed_command('oldfiles')
screen:expect([[
testfile2 |
1: ]].. add_padding(oldfiles[1]) ..[[ |
2: ]].. add_padding(oldfiles[2]) ..[[ |
|
Press ENTER or type command to continue^ |
]])
end)
end)
describe(':browse oldfiles', function()
local filename
local filename2
local oldfiles
before_each(function()
_clear()
feed_command('edit testfile1')
filename = buf.get_name()
feed_command('edit testfile2')
filename2 = buf.get_name()
feed_command('wshada')
wait()
_clear()
-- Ensure nvim is out of "Press ENTER..." prompt.
feed('<cr>')
-- Ensure v:oldfiles isn't busted. Since things happen so fast,
-- the ordering of v:oldfiles is unstable (it uses qsort() under-the-hood).
-- Let's verify the contents and the length of v:oldfiles before moving on.
oldfiles = helpers.meths.get_vvar('oldfiles')
eq(2, #oldfiles)
ok(filename == oldfiles[1] or filename == oldfiles[2])
ok(filename2 == oldfiles[1] or filename2 == oldfiles[2])
feed_command('browse oldfiles')
end)
after_each(function()
os.remove(shada_file)
end)
it('provides a prompt and edits the chosen file', function()
feed('2<cr>')
eq(oldfiles[2], buf.get_name())
end)
it('provides a prompt and does nothing on <cr>', function()
feed('<cr>')
eq('', buf.get_name())
end)
it('provides a prompt and does nothing if choice is out-of-bounds', function()
feed('3<cr>')
eq('', buf.get_name())
end)
end)