ci: don't stop on failure Don't stop on test failures; run all the tests, even when a test fails.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
diff --git a/ci/test.ps1 b/ci/test.ps1
index 5f75c0b..7a55bff 100644
--- a/ci/test.ps1
+++ b/ci/test.ps1
@@ -7,6 +7,7 @@ $PSDefaultParameterValues['*:ErrorAction'] = 'Stop'
$SourceDir = Split-Path (Split-Path (Get-Variable MyInvocation).Value.MyCommand.Path)
$BuildDir = Get-Location
+$Success = $true
if ($Env:SKIP_TESTS) { exit }
@@ -24,7 +25,7 @@ function run_test {
Write-Host $TestCommand
Invoke-Expression $TestCommand
- if ($LastExitCode -ne 0) { [Environment]::Exit($LastExitCode) }
+ if ($LastExitCode -ne 0) { $Success = $false }
}
Write-Host "##############################################################################"
@@ -67,3 +68,5 @@ if (-not $Env:SKIP_PROXY_TESTS) {
taskkill /F /IM javaw.exe
}
+
+if (-not $Success) { exit 1 }
diff --git a/ci/test.sh b/ci/test.sh
index 0f8fc87..e50e6fa 100755
--- a/ci/test.sh
+++ b/ci/test.sh
@@ -11,6 +11,8 @@ BUILD_DIR=$(pwd)
TMPDIR=${TMPDIR:-/tmp}
USER=${USER:-$(whoami)}
+SUCCESS=1
+
VALGRIND="valgrind --leak-check=full --show-reachable=yes --error-exitcode=125 --num-callers=50 --suppressions=\"$SOURCE_DIR/libgit2_clar.supp\""
LEAKS="MallocStackLogging=1 MallocScribble=1 leaks -quiet -atExit -- nohup"
@@ -30,11 +32,9 @@ cleanup() {
echo "Done."
}
-die() {
+failure() {
echo "Test exited with code: $1"
-
- cleanup
- exit $1
+ SUCCESS=0
}
# Ask ctest what it would run if we were to invoke it directly. This lets
@@ -54,7 +54,7 @@ run_test() {
RUNNER="$TEST_CMD"
fi
- eval $RUNNER || die $?
+ eval $RUNNER || failure
}
# Configure the test environment; run them early so that we're certain
@@ -194,10 +194,16 @@ if [ -z "$SKIP_FUZZERS" ]; then
echo "##############################################################################"
for fuzzer in fuzzers/*_fuzzer; do
- "${fuzzer}" "${SOURCE_DIR}/fuzzers/corpora/$(basename "${fuzzer%_fuzzer}")" || die $?
+ "${fuzzer}" "${SOURCE_DIR}/fuzzers/corpora/$(basename "${fuzzer%_fuzzer}")" || failure
done
fi
-echo "Success."
cleanup
+
+if [ "$SUCCESS" -ne "1" ]; then
+ echo "Some tests failed."
+ exit 1
+fi
+
+echo "Success."
exit 0