patch 8.2.1919: assert_fails() setting emsg_silent changes normal execution
Problem: Assert_fails() setting emsg_silent changes normal execution.
Solution: Use a separate flag in_assert_fails.
diff --git a/src/testdir/gen_opt_test.vim b/src/testdir/gen_opt_test.vim
index 271abed..600a790 100644
--- a/src/testdir/gen_opt_test.vim
+++ b/src/testdir/gen_opt_test.vim
@@ -200,8 +200,8 @@
" setting an option can only fail when it's implemented.
call add(script, "if exists('+" . name . "')")
for val in a[1]
- call add(script, "call assert_fails('set " . name . "=" . val . "')")
- call add(script, "call assert_fails('set " . shortname . "=" . val . "')")
+ call add(script, "silent! call assert_fails('set " . name . "=" . val . "')")
+ call add(script, "silent! call assert_fails('set " . shortname . "=" . val . "')")
endfor
call add(script, "endif")
endif
diff --git a/src/testdir/test_autocmd.vim b/src/testdir/test_autocmd.vim
index 639f9eb..1e8711c 100644
--- a/src/testdir/test_autocmd.vim
+++ b/src/testdir/test_autocmd.vim
@@ -194,7 +194,7 @@
exe 'autocmd BufUnload <buffer> ' . (lastbuf + 1) . 'bwipeout!'
augroup END
- call assert_fails('edit bb.txt', ['E937:', 'E517:'])
+ call assert_fails('edit bb.txt', 'E937:')
autocmd! test_autocmd_bufunload
augroup! test_autocmd_bufunload
@@ -1768,7 +1768,7 @@
func Test_nocatch_wipe_all_buffers()
" Real nasty autocommand: wipe all buffers on any event.
au * * bwipe *
- call assert_fails('next x', ['E94:', 'E517:'])
+ call assert_fails('next x', ['E94:', 'E937:'])
bwipe
au!
endfunc
diff --git a/src/testdir/test_mapping.vim b/src/testdir/test_mapping.vim
index 67a908a..5bec95a 100644
--- a/src/testdir/test_mapping.vim
+++ b/src/testdir/test_mapping.vim
@@ -681,7 +681,7 @@
" invalid <expr> abbreviation
abbr <expr> hte GetAbbr()
call assert_fails('normal ihte ', 'E117:')
- call assert_equal(' ', getline(1))
+ call assert_equal('', getline(1))
unabbr <expr> hte
close!
diff --git a/src/testdir/test_popup.vim b/src/testdir/test_popup.vim
index 381a2c1..28481b3 100644
--- a/src/testdir/test_popup.vim
+++ b/src/testdir/test_popup.vim
@@ -344,7 +344,7 @@
/^one
call assert_fails('call feedkeys("A\<C-X>\<C-U>\<C-N>\<Esc>", "x")', 'E578:')
call assert_equal(winid, win_getid())
- call assert_equal('oneDEF', getline(1))
+ call assert_equal('onedef', getline(1))
q!
endfunc
diff --git a/src/testdir/test_terminal.vim b/src/testdir/test_terminal.vim
index 676d864..829706c 100644
--- a/src/testdir/test_terminal.vim
+++ b/src/testdir/test_terminal.vim
@@ -65,7 +65,7 @@
setlocal modifiable
exe "normal Axxx\<Esc>"
- call assert_fails(buf . 'bwipe', ['E89:', 'E517:'])
+ call assert_fails(buf . 'bwipe', 'E89:')
undo
exe buf . 'bwipe'
@@ -89,7 +89,7 @@
func Test_terminal_wipe_buffer()
let buf = Run_shell_in_terminal({})
- call assert_fails(buf . 'bwipe', ['E89:', 'E517:'])
+ call assert_fails(buf . 'bwipe', 'E89:')
exe buf . 'bwipe!'
call WaitForAssert({-> assert_equal('dead', job_status(g:job))})
call assert_equal("", bufname(buf))
@@ -648,7 +648,7 @@
func Test_terminal_list_args()
let buf = term_start([&shell, &shellcmdflag, 'echo "123"'])
- call assert_fails(buf . 'bwipe', ['E89:', 'E517:'])
+ call assert_fails(buf . 'bwipe', 'E89:')
exe buf . 'bwipe!'
call assert_equal("", bufname(buf))
endfunction
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim
index 919af74..4ec0f6f 100644
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
@@ -1467,14 +1467,14 @@
g:did_it = 'yes'
enddef
-"func UserError()
-" silent! invalid
-"endfunc
-"
-"def SilentlyUserError()
-" UserError()
-" g:did_it = 'yes'
-"enddef
+func UserError()
+ silent! invalid
+endfunc
+
+def SilentlyUserError()
+ UserError()
+ g:did_it = 'yes'
+enddef
" This can't be a :def function, because the assert would not be reached.
" And this must not be inside a try/endtry.
@@ -1483,10 +1483,9 @@
call SilentlyError()
call assert_equal('yes', g:did_it)
-" this doesn't work yet
-" let g:did_it = 'no'
-" call SilentlyUserError()
-" call assert_equal('yes', g:did_it)
+ let g:did_it = 'no'
+ call SilentlyUserError()
+ call assert_equal('yes', g:did_it)
unlet g:did_it
endfunc