From 947e356cdaa931bec9b2314c36bbfed926514030 Mon Sep 17 00:00:00 2001 From: Marco Hinz Date: Tue, 10 Nov 2015 16:23:18 +0100 Subject: [PATCH] Test: improve functional/ex_cmds/oldfiles_spec.lua - change approach for test 1: screen:expect() instead of assert() - use execute() instead of command() - 2 new tests that check none and wrong input for :oldfiles! Helped-by: @fwalch Helped-by: @tarruda Helper-by: @justinmk --- test/functional/ex_cmds/oldfiles_spec.lua | 95 ++++++++++++++++------- 1 file changed, 66 insertions(+), 29 deletions(-) diff --git a/test/functional/ex_cmds/oldfiles_spec.lua b/test/functional/ex_cmds/oldfiles_spec.lua index fedf5babe8..d54e43f6cb 100644 --- a/test/functional/ex_cmds/oldfiles_spec.lua +++ b/test/functional/ex_cmds/oldfiles_spec.lua @@ -1,49 +1,86 @@ -local h = require('test.functional.helpers') +local Screen = require('test.functional.ui.screen') +local helpers = require('test.functional.helpers') -local buf = h.curbufmeths -local command = h.command -local eq = h.eq -local execute = h.execute -local feed = h.feed -local nvim = h.nvim +local buf, eq, execute = helpers.curbufmeths, helpers.eq, helpers.execute +local feed, nvim, nvim_prog = helpers.feed, helpers.nvim, helpers.nvim_prog +local set_session, spawn = helpers.set_session, helpers.spawn local shada_file = 'test.shada' --- h.clear() uses "-i NONE", which is not useful for this test. -local function clear() +-- +-- helpers.clear() uses "-i NONE", which is not useful for this test. +-- +local function _clear() if session then session:exit(0) end - h.set_session(h.spawn({h.nvim_prog, - '-u', 'NONE', - '--cmd', 'set noswapfile undodir=. directory=. viewdir=. backupdir=.', - '--embed'})) + set_session(spawn({nvim_prog, + '-u', 'NONE', + '--cmd', 'set noswapfile undodir=. directory=. viewdir=. backupdir=.', + '--embed'})) end describe(':oldfiles', function() - before_each(clear) + 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() - command('edit testfile1') - command('edit testfile2') - command('wshada ' .. shada_file) - command('rshada! ' .. shada_file) - assert(string.find(nvim('command_output', 'oldfiles'), 'testfile2')) - os.remove(shada_file) + screen = Screen.new(100, 5) + screen:attach() + execute('edit testfile1') + local filename1 = buf.get_name() + execute('edit testfile2') + local filename2 = buf.get_name() + execute('wshada ' .. shada_file) + execute('rshada! ' .. shada_file) + execute('oldfiles') + screen:expect([[ + testfile2 | + 1: ]].. add_padding(filename1) ..[[ | + 2: ]].. add_padding(filename2) ..[[ | + | + Press ENTER or type command to continue^ | + ]]) end) end) describe(':oldfiles!', function() - it('provides a file selection prompt and edits the chosen file', function() - command('edit testfile1') - command('edit testfile2') - local filename = buf.get_name() - command('wshada ' .. shada_file) - clear() - command('rshada! ' .. shada_file) + local filename + + before_each(function() + _clear() + execute('edit testfile1') + execute('edit testfile2') + filename = buf.get_name() + execute('wshada ' .. shada_file) + _clear() + execute('rshada! ' .. shada_file) execute('oldfiles!') - feed('2') - eq(filename, buf.get_name()) + end) + + after_each(function() os.remove(shada_file) end) + + it('provides a prompt and edits the chosen file', function() + feed('2') + eq(filename, buf.get_name()) + end) + + it('provides a prompt and does nothing on ', function() + feed('') + eq('', buf.get_name()) + end) + + it('provides a prompt and does nothing if choice is out-of-bounds', function() + feed('3') + eq('', buf.get_name()) + end) end)