patch 9.1.0827: CI: tests can be improved

Problem:  CI: tests can be improved
Solution: collect failed indent tests, raise timeout for search()
          functions when using ASAN/Valgrind (Aliaksei Budavei)

ASan-instrumented Vim builds tend to run slower (x2) than
non-instrumented Vim builds and occasionally make indent
tests fail when "search*()" functions time out and give up
further execution.

Reference:
https://github.com/google/sanitizers/wiki/AddressSanitizer

closes: #15974

Co-authored-by: Christian Brabandt <cb@256bit.org>
Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/.cirrus.yml b/.cirrus.yml
index ec897b8..e81ed84 100644
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -22,9 +22,10 @@
     - chown -R cirrus:cirrus .
     - sudo -u cirrus make test
   on_failure:
-    screendump_artifacts:
+    test_artifacts:
       name: "Cirrus-CI-freebsd-failed-tests"
       path: |
+        runtime/indent/testdir/*.fail
         runtime/syntax/testdir/failed/*
         src/testdir/failed/*
       type: application/octet-stream
diff --git a/.github/actions/screendump/action.yml b/.github/actions/test_artifacts/action.yml
similarity index 86%
rename from .github/actions/screendump/action.yml
rename to .github/actions/test_artifacts/action.yml
index 5cbc820..44738c5 100644
--- a/.github/actions/screendump/action.yml
+++ b/.github/actions/test_artifacts/action.yml
@@ -1,5 +1,5 @@
-name: 'screendump'
-description: "Upload failed screendump tests"
+name: 'test_artifacts'
+description: "Upload failed test artifacts"
 runs:
   using: "composite"
   steps:
@@ -12,6 +12,7 @@
         # A file, directory or wildcard pattern that describes what
         # to upload.
         path: |
+         ${{ github.workspace }}/runtime/indent/testdir/*.fail
          ${{ github.workspace }}/runtime/syntax/testdir/failed/*
          ${{ github.workspace }}/src/testdir/failed/*
         # The desired behavior if no files are found using the
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index df10418..19edd13 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -272,7 +272,7 @@
           do_test make ${SHADOWOPT} ${TEST}
 
       - if: ${{ !cancelled() }}
-        uses: ./.github/actions/screendump
+        uses: ./.github/actions/test_artifacts
 
       - name: Vim tags
         if: contains(matrix.extra, 'vimtags')
@@ -394,7 +394,7 @@
           make ${TEST}
 
       - if: ${{ !cancelled() }}
-        uses: ./.github/actions/screendump
+        uses: ./.github/actions/test_artifacts
 
   windows:
     runs-on: windows-2022
@@ -704,7 +704,7 @@
           )
 
       - if: ${{ !cancelled() }}
-        uses: ./.github/actions/screendump
+        uses: ./.github/actions/test_artifacts
 
       - name: Generate gcov files
         if: matrix.coverage
diff --git a/Filelist b/Filelist
index 803de2a..9b06173 100644
--- a/Filelist
+++ b/Filelist
@@ -10,8 +10,8 @@
 		.github/ISSUE_TEMPLATE/feature_request.md \
 		.github/workflows/ci.yml \
 		.github/workflows/codeql-analysis.yml \
-		.github/actions/screendump/action.yml \
 		.github/workflows/coverity.yml \
+		.github/actions/test_artifacts/action.yml \
 		.github/dependabot.yml \
 		.gitignore \
 		.hgignore \
diff --git a/src/testdir/runtest.vim b/src/testdir/runtest.vim
index ded3197..9bb500e 100644
--- a/src/testdir/runtest.vim
+++ b/src/testdir/runtest.vim
@@ -247,6 +247,11 @@
     let g:timeout_start = localtime()
   endif
 
+  if ValgrindOrAsan()
+    let g:vim_indent = {"searchpair_timeout": 1024}
+    let g:python_indent = {"searchpair_timeout": 1024}
+  endif
+
   " Avoid stopping at the "hit enter" prompt
   set nomore
 
diff --git a/src/testdir/shared.vim b/src/testdir/shared.vim
index 1edf65a..a9b422c 100644
--- a/src/testdir/shared.vim
+++ b/src/testdir/shared.vim
@@ -318,6 +318,14 @@
   return GetVimCommand() =~ '\<valgrind\>'
 endfunc
 
+func RunningAsan()
+  return exists("$ASAN_OPTIONS")
+endfunc
+
+func ValgrindOrAsan()
+  return RunningWithValgrind() || RunningAsan()
+endfun
+
 " Get the command to run Vim, with --clean instead of "-u NONE".
 func GetVimCommandClean()
   let cmd = GetVimCommand()
diff --git a/src/version.c b/src/version.c
index 493de72..4aa4ab7 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    827,
+/**/
     826,
 /**/
     825,