| # Change to build directory. |
| $rootdir = Get-Location |
| cd $EIGEN_CI_BUILDDIR |
| |
| # Determine number of processors for parallel tests. |
| $NPROC=${Env:NUMBER_OF_PROCESSORS} |
| |
| # Set target based on regex or label. |
| $target = "" |
| if (${EIGEN_CI_TEST_REGEX}) { |
| $target = "-R","${EIGEN_CI_TEST_REGEX}" |
| } elseif (${EIGEN_CI_TEST_LABEL}) { |
| $target = "-L","${EIGEN_CI_TEST_LABEL}" |
| } |
| |
| # Repeat tests up to three times to ignore flakes. Do not re-run with -T test, |
| # otherwise we lose test results for those that passed. |
| # Note: starting with CMake 3.17, we can use --repeat until-pass:3, but we have |
| # no way of easily installing this on ppc64le. |
| ctest -j$NPROC --output-on-failure --no-compress-output --build-no-clean -T test $target || ` |
| ctest -j$NPROC --output-on-failure --no-compress-output --rerun-failed || ` |
| ctest -j$NPROC --output-on-failure --no-compress-output --rerun-failed |
| |
| $success = $LASTEXITCODE |
| |
| # Return to root directory. |
| cd ${rootdir} |
| |
| # Explicitly propagate exit code to indicate pass/failure of test command. |
| if($success -ne 0) { Exit $success } |