Unverified Commit a064920e by Edward Thomson Committed by GitHub

Merge pull request #5140 from libgit2/ethomson/flaky_ci

Re-run flaky tests
parents a080037c c7b4ce55
...@@ -29,8 +29,32 @@ function run_test { ...@@ -29,8 +29,32 @@ function run_test {
$TestCommand = (ctest -N -V -R "^$TestName$") -join "`n" -replace "(?ms).*\n^[0-9]*: Test command: ","" -replace "\n.*","" $TestCommand = (ctest -N -V -R "^$TestName$") -join "`n" -replace "(?ms).*\n^[0-9]*: Test command: ","" -replace "\n.*",""
$TestCommand += " -r${BuildDir}\results_${TestName}.xml" $TestCommand += " -r${BuildDir}\results_${TestName}.xml"
Invoke-Expression $TestCommand if ($Env:GITTEST_FLAKY_RETRY -gt 0) {
if ($LastExitCode -ne 0) { $global:Success = $false } $AttemptsRemain = $Env:GITTEST_FLAKY_RETRY
} else {
$AttemptsRemain = 1
}
$Failed = 0
while ($AttemptsRemain -ne 0) {
if ($Failed -eq 1) {
Write-Host ""
Write-Host "Re-running flaky $TestName tests..."
Write-Host ""
}
Invoke-Expression $TestCommand
if ($LastExitCode -eq 0) {
$Failed = 0
break
} else {
$Failed = 1
}
$AttemptsRemain = $AttemptsRemain - 1
}
if ($Failed -eq 1) { $global:Success = $false }
} }
Write-Host "##############################################################################" Write-Host "##############################################################################"
...@@ -79,7 +103,9 @@ if (-not $Env:SKIP_ONLINE_TESTS) { ...@@ -79,7 +103,9 @@ if (-not $Env:SKIP_ONLINE_TESTS) {
Write-Host "## Running (online) tests" Write-Host "## Running (online) tests"
Write-Host "##############################################################################" Write-Host "##############################################################################"
$Env:GITTEST_FLAKY_RETRY=5
run_test online run_test online
$Env:GITTEST_FLAKY_RETRY=0
} }
if (-not $Env:SKIP_PROXY_TESTS) { if (-not $Env:SKIP_PROXY_TESTS) {
......
...@@ -32,11 +32,6 @@ cleanup() { ...@@ -32,11 +32,6 @@ cleanup() {
echo "Done." echo "Done."
} }
failure() {
echo "Test exited with code: $1"
SUCCESS=0
}
# Ask ctest what it would run if we were to invoke it directly. This lets # Ask ctest what it would run if we were to invoke it directly. This lets
# us manage the test configuration in a single place (tests/CMakeLists.txt) # us manage the test configuration in a single place (tests/CMakeLists.txt)
# instead of running clar here as well. But it allows us to wrap our test # instead of running clar here as well. But it allows us to wrap our test
...@@ -60,7 +55,35 @@ run_test() { ...@@ -60,7 +55,35 @@ run_test() {
RUNNER="$TEST_CMD" RUNNER="$TEST_CMD"
fi fi
eval $RUNNER || failure if [[ "$GITTEST_FLAKY_RETRY" > 0 ]]; then
ATTEMPTS_REMAIN=$GITTEST_FLAKY_RETRY
else
ATTEMPTS_REMAIN=1
fi
FAILED=0
while [[ "$ATTEMPTS_REMAIN" > 0 ]]; do
if [ "$FAILED" -eq 1 ]; then
echo ""
echo "Re-running flaky ${1} tests..."
echo ""
fi
RETURN_CODE=0
eval $RUNNER || RETURN_CODE=$? && true
if [ "$RETURN_CODE" -eq 0 ]; then
break
fi
echo "Test exited with code: $RETURN_CODE"
ATTEMPTS_REMAIN="$(($ATTEMPTS_REMAIN-1))"
FAILED=1
done
if [ "$FAILED" -ne 0 ]; then
SUCCESS=0
fi
} }
# Configure the test environment; run them early so that we're certain # Configure the test environment; run them early so that we're certain
...@@ -166,7 +189,9 @@ if [ -z "$SKIP_ONLINE_TESTS" ]; then ...@@ -166,7 +189,9 @@ if [ -z "$SKIP_ONLINE_TESTS" ]; then
echo "## Running (online) tests" echo "## Running (online) tests"
echo "##############################################################################" echo "##############################################################################"
export GITTEST_FLAKY_RETRY=5
run_test online run_test online
unset GITTEST_FLAKY_RETRY
fi fi
if [ -z "$SKIP_GITDAEMON_TESTS" ]; then if [ -z "$SKIP_GITDAEMON_TESTS" ]; then
...@@ -238,7 +263,7 @@ fi ...@@ -238,7 +263,7 @@ fi
cleanup cleanup
if [ "$SUCCESS" -ne "1" ]; then if [ "$SUCCESS" -ne 1 ]; then
echo "Some tests failed." echo "Some tests failed."
exit 1 exit 1
fi fi
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment