Commit 429c7f1141f812d266cfd7d33a142871c21f8874

Edward Thomson 2018-09-17T20:12:59

ci: don't stop on failure Don't stop on test failures; run all the tests, even when a test fails.

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