diff options
author | Tom Scogland <tom.scogland@gmail.com> | 2022-09-07 11:12:57 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-07 20:12:57 +0200 |
commit | 762ba27036e717aeceeb1b43f3090f0e9a049869 (patch) | |
tree | c2b244d849aa12d1256462bc5936963362004fe4 /share | |
parent | 8e5ccddc139b32a4a23f63c9dd631dabf3263cad (diff) | |
download | spack-762ba27036e717aeceeb1b43f3090f0e9a049869.tar.gz spack-762ba27036e717aeceeb1b43f3090f0e9a049869.tar.bz2 spack-762ba27036e717aeceeb1b43f3090f0e9a049869.tar.xz spack-762ba27036e717aeceeb1b43f3090f0e9a049869.zip |
Make GHA tests parallel by using xdist (#32361)
* Add two no-op jobs named "all-prechecks" and "all"
These are a suggestion from @tgamblin, they are stable named markers we
can use from gitlab and possibly for required checks to make CI more
resilient to refactors changing the names of specific checks.
* Enable parallel testing using xdist for unit testing in CI
* Normalize tmp paths to deal with macos
* add -u flag compatibility to spack python
As of now, it is accepted and ignored. The usage with xdist, where it
is invoked specifically by `python -u spack python` which is then passed
`-u` by xdist is the entire reason for doing this. It should never be
used without explicitly passing -u to the executing python interpreter.
* use spack python in xdist to support python 2
When running on python2, spack has many import cycles unless started
through main. To allow that, this uses `spack python` as the
interpreter, leveraging the `-u` support so xdist doesn't error out when
it unconditionally requests unbuffered binary IO.
* Use shutil.move to account for tmpdir being in a separate filesystem sometimes
Diffstat (limited to 'share')
-rwxr-xr-x | share/spack/qa/run-unit-tests | 5 | ||||
-rwxr-xr-x | share/spack/spack-completion.bash | 2 |
2 files changed, 6 insertions, 1 deletions
diff --git a/share/spack/qa/run-unit-tests b/share/spack/qa/run-unit-tests index 6222cbccd9..62cca273bf 100755 --- a/share/spack/qa/run-unit-tests +++ b/share/spack/qa/run-unit-tests @@ -54,6 +54,11 @@ elif [[ "$SPACK_TEST_SOLVER" == "original" ]]; then export PYTEST_ADDOPTS='-m "not maybeslow"' fi +# Check if xdist is available +if python -m pytest --trace-config 2>&1 | grep xdist; then + export PYTEST_ADDOPTS="$PYTEST_ADDOPTS --dist loadfile --tx '${SPACK_TEST_PARALLEL:=3}*popen//python=./bin/spack-tmpconfig python -u ./bin/spack python'" +fi + $coverage_run $(which spack) unit-test -x --verbose bash "$QA_DIR/test-env-cfg.sh" diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash index bde48d8e97..c91b888f09 100755 --- a/share/spack/spack-completion.bash +++ b/share/spack/spack-completion.bash @@ -1568,7 +1568,7 @@ _spack_pydoc() { _spack_python() { if $list_options then - SPACK_COMPREPLY="-h --help -V --version -c -i -m --path" + SPACK_COMPREPLY="-h --help -V --version -c -u -i -m --path" else SPACK_COMPREPLY="" fi |