patch 8.1.0456: running test hangs when the input file is being edited

Problem:    Running test hangs when the input file is being edited.
Solution:   Use a SwapExists autocommand to ignore editing the test script.
diff --git a/src/testdir/runtest.vim b/src/testdir/runtest.vim
index c341491..ff32abc 100644
--- a/src/testdir/runtest.vim
+++ b/src/testdir/runtest.vim
@@ -57,6 +57,19 @@
   set encoding=latin1
 endif
 
+" REDIR_TEST_TO_NULL has a very permissive SwapExists autocommand which is for
+" the test_name.vim file itself. Replace it here with a more restrictive one,
+" so we still catch mistakes.
+let s:test_script_fname = expand('%')
+au! SwapExists * call HandleSwapExists()
+func HandleSwapExists()
+  " Only ignore finding a swap file for the test script (the user might be
+  " editing it and do ":make test_name") and the output file.
+  if expand('<afile>') == 'messages' || expand('<afile>') =~ s:test_script_fname
+    let v:swapchoice = 'e'
+  endif
+endfunc
+
 " Avoid stopping at the "hit enter" prompt
 set nomore
 
@@ -146,6 +159,7 @@
 
   " Clear any autocommands
   au!
+  au SwapExists * call HandleSwapExists()
 
   " Close any extra tab pages and windows and make the current one not modified.
   while tabpagenr('$') > 1