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,