|  | # 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 } |