Merge pull request #482 from climbfuji/feature/update_from_spack_dev_… #1561
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: unit tests | |
on: | |
push: | |
branches: | |
- develop | |
- releases/** | |
- spack-stack-dev | |
- release/** | |
pull_request: | |
branches: | |
- develop | |
- releases/** | |
- spack-stack-dev | |
- release/** | |
workflow_dispatch: | |
workflow_call: | |
concurrency: | |
group: unit_tests-${{github.ref}}-${{github.event.pull_request.number || github.run_number}} | |
cancel-in-progress: true | |
jobs: | |
# Run unit tests with different configurations on linux | |
ubuntu: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest] | |
python-version: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12'] | |
on_develop: | |
- ${{ github.ref == 'refs/heads/develop' }} | |
include: | |
- python-version: '3.6' | |
os: ubuntu-20.04 | |
on_develop: ${{ github.ref == 'refs/heads/develop' }} | |
exclude: | |
- python-version: '3.7' | |
os: ubuntu-latest | |
on_develop: false | |
- python-version: '3.8' | |
os: ubuntu-latest | |
on_develop: false | |
- python-version: '3.9' | |
os: ubuntu-latest | |
on_develop: false | |
- python-version: '3.10' | |
os: ubuntu-latest | |
on_develop: false | |
- python-version: '3.11' | |
os: ubuntu-latest | |
on_develop: false | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 | |
with: | |
fetch-depth: 0 | |
- uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install System packages | |
run: | | |
sudo apt-get -y update | |
# Needed for unit tests | |
sudo apt-get -y install \ | |
coreutils cvs gfortran graphviz gnupg2 mercurial ninja-build \ | |
cmake bison libbison-dev kcov | |
- name: remove-extension | |
run: | | |
source share/spack/setup-env.sh | |
spack config --scope=defaults rm "config:extensions" | |
- name: Install Python packages | |
run: | | |
pip install --upgrade pip setuptools pytest pytest-xdist pytest-cov | |
pip install --upgrade flake8 "isort>=4.3.5" "mypy>=0.900" "click" "black" | |
- name: Setup git configuration | |
run: | | |
# Need this for the git tests to succeed. | |
git --version | |
. .github/workflows/bin/setup_git.sh | |
- name: Bootstrap clingo | |
if: ${{ matrix.concretizer == 'clingo' }} | |
env: | |
SPACK_PYTHON: python | |
run: | | |
. share/spack/setup-env.sh | |
spack bootstrap disable spack-install | |
spack bootstrap now | |
spack -v solve zlib | |
- name: Run unit tests | |
env: | |
SPACK_PYTHON: python | |
SPACK_TEST_PARALLEL: 2 | |
COVERAGE: true | |
COVERAGE_FILE: coverage/.coverage-${{ matrix.os }}-python${{ matrix.python-version }} | |
UNIT_TEST_COVERAGE: ${{ matrix.python-version == '3.11' }} | |
run: | | |
share/spack/qa/run-unit-tests | |
- uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 | |
with: | |
name: coverage-${{ matrix.os }}-python${{ matrix.python-version }} | |
path: coverage | |
include-hidden-files: true | |
# Test shell integration | |
shell: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 | |
with: | |
fetch-depth: 0 | |
- uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b | |
with: | |
python-version: '3.11' | |
- name: Install System packages | |
run: | | |
sudo apt-get -y update | |
# Needed for shell tests | |
sudo apt-get install -y coreutils kcov csh zsh tcsh fish dash bash | |
- name: Install Python packages | |
run: | | |
pip install --upgrade pip setuptools pytest coverage[toml] pytest-xdist | |
- name: Setup git configuration | |
run: | | |
# Need this for the git tests to succeed. | |
git --version | |
. .github/workflows/bin/setup_git.sh | |
- name: remove-extension | |
run: | | |
source share/spack/setup-env.sh | |
spack config --scope=defaults rm "config:extensions" | |
- name: Run shell tests | |
env: | |
COVERAGE: true | |
run: | | |
share/spack/qa/run-shell-tests | |
- uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 | |
with: | |
name: coverage-shell | |
path: coverage | |
include-hidden-files: true | |
# Test RHEL8 UBI with platform Python. This job is run | |
# only on PRs modifying core Spack | |
rhel8-platform-python: | |
runs-on: ubuntu-latest | |
container: registry.access.redhat.com/ubi8/ubi | |
steps: | |
- name: Install dependencies | |
run: | | |
dnf install -y \ | |
bzip2 curl file gcc-c++ gcc gcc-gfortran git gnupg2 gzip \ | |
make patch tcl unzip which xz | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 | |
- name: Setup repo and non-root user | |
run: | | |
git --version | |
git config --global --add safe.directory /__w/spack/spack | |
git fetch --unshallow | |
. .github/workflows/bin/setup_git.sh | |
useradd spack-test | |
chown -R spack-test . | |
- name: remove-extension | |
shell: runuser -u spack-test -- bash {0} | |
run: | | |
source share/spack/setup-env.sh | |
spack config --scope=defaults rm "config:extensions" | |
- name: Run unit tests | |
shell: runuser -u spack-test -- bash {0} | |
run: | | |
source share/spack/setup-env.sh | |
spack -d bootstrap now --dev | |
spack unit-test -k 'not cvs and not svn and not hg' -x --verbose | |
# Test for the clingo based solver (using clingo-cffi) | |
clingo-cffi: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 | |
with: | |
fetch-depth: 0 | |
- uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b | |
with: | |
python-version: '3.13' | |
- name: Install System packages | |
run: | | |
sudo apt-get -y update | |
sudo apt-get -y install coreutils gfortran graphviz gnupg2 | |
- name: Install Python packages | |
run: | | |
pip install --upgrade pip setuptools pytest coverage[toml] pytest-cov clingo | |
pip install --upgrade flake8 "isort>=4.3.5" "mypy>=0.900" "click" "black" | |
- name: remove-extension | |
run: | | |
source share/spack/setup-env.sh | |
spack config --scope=defaults rm "config:extensions" | |
- name: Run unit tests (full suite with coverage) | |
env: | |
COVERAGE: true | |
COVERAGE_FILE: coverage/.coverage-clingo-cffi | |
run: | | |
. share/spack/setup-env.sh | |
spack bootstrap disable spack-install | |
spack bootstrap disable github-actions-v0.5 | |
spack bootstrap disable github-actions-v0.6 | |
spack bootstrap status | |
spack solve zlib | |
spack unit-test --verbose --cov --cov-config=pyproject.toml --cov-report=xml:coverage.xml lib/spack/spack/test/concretize.py | |
- uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 | |
with: | |
name: coverage-clingo-cffi | |
path: coverage | |
include-hidden-files: true | |
# Run unit tests on MacOS | |
macos: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [macos-13, macos-14] | |
python-version: ["3.11"] | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 | |
with: | |
fetch-depth: 0 | |
- uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install Python packages | |
run: | | |
pip install --upgrade pip setuptools | |
pip install --upgrade pytest coverage[toml] pytest-xdist pytest-cov | |
- name: Setup Homebrew packages | |
run: | | |
brew install dash fish gcc gnupg kcov | |
- name: remove-extension | |
run: | | |
source share/spack/setup-env.sh | |
spack config --scope=defaults rm "config:extensions" | |
- name: Run unit tests | |
env: | |
SPACK_TEST_PARALLEL: 4 | |
COVERAGE_FILE: coverage/.coverage-${{ matrix.os }}-python${{ matrix.python-version }} | |
run: | | |
git --version | |
. .github/workflows/bin/setup_git.sh | |
. share/spack/setup-env.sh | |
$(which spack) bootstrap disable spack-install | |
$(which spack) solve zlib | |
common_args=(--dist loadfile --tx '4*popen//python=./bin/spack-tmpconfig python -u ./bin/spack python' -x) | |
$(which spack) unit-test --verbose --cov --cov-config=pyproject.toml --cov-report=xml:coverage.xml "${common_args[@]}" | |
- uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 | |
with: | |
name: coverage-${{ matrix.os }}-python${{ matrix.python-version }} | |
path: coverage | |
include-hidden-files: true | |
# Run unit tests on Windows | |
windows: | |
# DH* | |
# Can't run this on other repos than spack/spack | |
if: github.repository == 'spack/spack' | |
# *DH | |
defaults: | |
run: | |
shell: | |
powershell Invoke-Expression -Command "./share/spack/qa/windows_test_setup.ps1"; {0} | |
runs-on: windows-latest | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 | |
with: | |
fetch-depth: 0 | |
- uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b | |
with: | |
python-version: 3.9 | |
- name: Install Python packages | |
run: | | |
python -m pip install --upgrade pip pywin32 setuptools pytest-cov clingo | |
- name: Create local develop | |
run: | | |
./.github/workflows/bin/setup_git.ps1 | |
- name: remove-extension | |
run: | | |
source share/spack/setup-env.sh | |
spack config --scope=defaults rm "config:extensions" | |
- name: Unit Test | |
env: | |
COVERAGE_FILE: coverage/.coverage-windows | |
run: | | |
spack unit-test -x --verbose --cov --cov-config=pyproject.toml | |
./share/spack/qa/validate_last_exit.ps1 | |
- uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 | |
with: | |
name: coverage-windows | |
path: coverage | |
include-hidden-files: true |