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