From 2afbce7651f79b0626ebeae3688274ce18ac2920 Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Sun, 19 Sep 2021 02:29:37 -0700 Subject: refactor(tests): remove redir_exec #15718 Problem - `redir_exec` is obsolete, but it keeps getting used in new tests because people copy existing tests. - Disadvantages of `redir_exec`: - Captures extra junk before the actual error/message that we _want_ to test. - Does not fail on error, unlike e.g. `command()`. Solution - Use new functions like `nvim_exec` and `pcall_err`. --- .../functional/vimscript/minmax_functions_spec.lua | 30 ++++++++++------------ 1 file changed, 14 insertions(+), 16 deletions(-) (limited to 'test/functional/vimscript/minmax_functions_spec.lua') diff --git a/test/functional/vimscript/minmax_functions_spec.lua b/test/functional/vimscript/minmax_functions_spec.lua index c6eb754f91..91106bef1e 100644 --- a/test/functional/vimscript/minmax_functions_spec.lua +++ b/test/functional/vimscript/minmax_functions_spec.lua @@ -2,29 +2,28 @@ local helpers = require('test.functional.helpers')(after_each) local eq = helpers.eq local eval = helpers.eval +local command = helpers.command local clear = helpers.clear local funcs = helpers.funcs -local redir_exec = helpers.redir_exec +local pcall_err = helpers.pcall_err before_each(clear) for _, func in ipairs({'min', 'max'}) do describe(func .. '()', function() it('gives a single error message when multiple values failed conversions', function() - eq('\nE745: Using a List as a Number\n0', - redir_exec('echo ' .. func .. '([-5, [], [], [], 5])')) - eq('\nE745: Using a List as a Number\n0', - redir_exec('echo ' .. func .. '({1:-5, 2:[], 3:[], 4:[], 5:5})')) + eq('Vim(echo):E745: Using a List as a Number', + pcall_err(command, 'echo ' .. func .. '([-5, [], [], [], 5])')) + eq('Vim(echo):E745: Using a List as a Number', + pcall_err(command, 'echo ' .. func .. '({1:-5, 2:[], 3:[], 4:[], 5:5})')) for errmsg, errinput in pairs({ - ['E745: Using a List as a Number'] = '[]', - ['E805: Using a Float as a Number'] = '0.0', - ['E703: Using a Funcref as a Number'] = 'function("tr")', - ['E728: Using a Dictionary as a Number'] = '{}', + ['Vim(echo):E745: Using a List as a Number'] = '[]', + ['Vim(echo):E805: Using a Float as a Number'] = '0.0', + ['Vim(echo):E703: Using a Funcref as a Number'] = 'function("tr")', + ['Vim(echo):E728: Using a Dictionary as a Number'] = '{}', }) do - eq('\n' .. errmsg .. '\n0', - redir_exec('echo ' .. func .. '([' .. errinput .. '])')) - eq('\n' .. errmsg .. '\n0', - redir_exec('echo ' .. func .. '({1:' .. errinput .. '})')) + eq(errmsg, pcall_err(command, 'echo ' .. func .. '([' .. errinput .. '])')) + eq(errmsg, pcall_err(command, 'echo ' .. func .. '({1:' .. errinput .. '})')) end end) it('works with arrays/dictionaries with zero items', function() @@ -42,9 +41,8 @@ for _, func in ipairs({'min', 'max'}) do it('errors out for invalid types', function() for _, errinput in ipairs({'1', 'v:true', 'v:false', 'v:null', 'function("tr")', '""'}) do - eq(('\nE712: Argument of %s() must be a List or Dictionary\n0'):format( - func), - redir_exec('echo ' .. func .. '(' .. errinput .. ')')) + eq(('Vim(echo):E712: Argument of %s() must be a List or Dictionary'):format(func), + pcall_err(command, 'echo ' .. func .. '(' .. errinput .. ')')) end end) end) -- cgit