forked from aniani/vim
patch 9.0.1557: test failures for unreachable code
Problem: Test failures for unreachable code. Solution: Add a test override to ignore unreachable code.
This commit is contained in:
parent
cf2610c82b
commit
9d383f30bb
@ -369,6 +369,7 @@ test_override({name}, {val}) *test_override()*
|
||||
string is detected
|
||||
ui_delay time in msec to use in ui_delay(); overrules a
|
||||
wait time of up to 3 seconds for messages
|
||||
unreachable no error for code after `:throw` and `:return`
|
||||
uptime overrules sysinfo.uptime
|
||||
vterm_title setting the window title by a job running in a
|
||||
terminal window
|
||||
@ -378,13 +379,18 @@ test_override({name}, {val}) *test_override()*
|
||||
"starting" is to be used when a test should behave like
|
||||
startup was done. Since the tests are run by sourcing a
|
||||
script the "starting" variable is non-zero. This is usually a
|
||||
good thing (tests run faster), but sometimes changes behavior
|
||||
in a way that the test doesn't work properly.
|
||||
good thing (tests run faster), but sometimes this changes
|
||||
behavior in a way that the test doesn't work properly.
|
||||
When using: >
|
||||
call test_override('starting', 1)
|
||||
< The value of "starting" is saved. It is restored by: >
|
||||
call test_override('starting', 0)
|
||||
|
||||
< To make sure the flag is reset later using `:defer` can be
|
||||
useful: >
|
||||
call test_override('unreachable', 1)
|
||||
defer call test_override('unreachable', 0)
|
||||
|
||||
< Can also be used as a |method|: >
|
||||
GetOverrideVal()-> test_override('starting')
|
||||
|
||||
|
@ -1914,6 +1914,7 @@ EXTERN int disable_vterm_title_for_testing INIT(= FALSE);
|
||||
EXTERN long override_sysinfo_uptime INIT(= -1);
|
||||
EXTERN int override_autoload INIT(= FALSE);
|
||||
EXTERN int ml_get_alloc_lines INIT(= FALSE);
|
||||
EXTERN int ignore_unreachable_code_for_testing INIT(= FALSE);
|
||||
|
||||
EXTERN int in_free_unref_items INIT(= FALSE);
|
||||
#endif
|
||||
|
@ -490,7 +490,7 @@ def Test_try_catch_throw()
|
||||
try # comment
|
||||
add(l, '1')
|
||||
throw 'wrong'
|
||||
add(l, '2')
|
||||
add(l, '2') # "unreachable code"
|
||||
catch # comment
|
||||
add(l, v:exception)
|
||||
finally # comment
|
||||
@ -503,7 +503,7 @@ def Test_try_catch_throw()
|
||||
try
|
||||
add(l, '1')
|
||||
throw 'wrong'
|
||||
add(l, '2')
|
||||
add(l, '2') # "unreachable code"
|
||||
catch /right/
|
||||
add(l, v:exception)
|
||||
endtry
|
||||
@ -754,7 +754,7 @@ def Test_try_catch_throw()
|
||||
var ret = 5
|
||||
try
|
||||
throw 'getout'
|
||||
return -1
|
||||
return -1 # "unreachable code"
|
||||
catch /getout/
|
||||
# ret is evaluated here
|
||||
return ret
|
||||
@ -1082,7 +1082,12 @@ enddef
|
||||
def DeletedFunc(): list<any>
|
||||
return ['delete me']
|
||||
enddef
|
||||
defcompile
|
||||
defcompile DeletedFunc
|
||||
|
||||
call test_override('unreachable', 1)
|
||||
defcompile Test_try_catch_throw
|
||||
call test_override('unreachable', 0)
|
||||
|
||||
delfunc DeletedFunc
|
||||
|
||||
def s:ThrowFromDef()
|
||||
@ -1128,7 +1133,7 @@ def Test_try_catch_nested()
|
||||
try
|
||||
l->add('1')
|
||||
throw 'bad'
|
||||
l->add('x')
|
||||
l->add('x') # "unreachable code"
|
||||
catch /bad/
|
||||
l->add('2')
|
||||
try
|
||||
@ -1168,6 +1173,10 @@ def Test_try_catch_nested()
|
||||
assert_equal(['1', '2', '3', '4'], l)
|
||||
enddef
|
||||
|
||||
call test_override('unreachable', 1)
|
||||
defcompile Test_try_catch_nested
|
||||
call test_override('unreachable', 0)
|
||||
|
||||
def s:TryOne(): number
|
||||
try
|
||||
return 0
|
||||
|
@ -1039,6 +1039,8 @@ f_test_override(typval_T *argvars, typval_T *rettv UNUSED)
|
||||
no_wait_return = val;
|
||||
else if (STRCMP(name, (char_u *)"ui_delay") == 0)
|
||||
ui_delay_for_testing = val;
|
||||
else if (STRCMP(name, (char_u *)"unreachable") == 0)
|
||||
ignore_unreachable_code_for_testing = val;
|
||||
else if (STRCMP(name, (char_u *)"term_props") == 0)
|
||||
reset_term_props_on_termresponse = val;
|
||||
else if (STRCMP(name, (char_u *)"vterm_title") == 0)
|
||||
|
@ -695,6 +695,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
1557,
|
||||
/**/
|
||||
1556,
|
||||
/**/
|
||||
|
@ -1578,7 +1578,8 @@ compile_catch(char_u *arg, cctx_T *cctx UNUSED)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (scope->se_u.se_try.ts_caught_all)
|
||||
if (scope->se_u.se_try.ts_caught_all
|
||||
&& !ignore_unreachable_code_for_testing)
|
||||
{
|
||||
emsg(_(e_catch_unreachable_after_catch_all));
|
||||
return NULL;
|
||||
|
@ -3493,7 +3493,8 @@ compile_def_function(
|
||||
&& ea.cmdidx != CMD_endwhile
|
||||
&& ea.cmdidx != CMD_catch
|
||||
&& ea.cmdidx != CMD_finally
|
||||
&& ea.cmdidx != CMD_endtry)
|
||||
&& ea.cmdidx != CMD_endtry
|
||||
&& !ignore_unreachable_code_for_testing)
|
||||
{
|
||||
emsg(_(e_unreachable_code_after_return));
|
||||
goto erret;
|
||||
|
Loading…
x
Reference in New Issue
Block a user