Merge pull request #481 from AlexanderRichert-NOAA/add_sfcio142 #1548
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'] | |
concretizer: ['clingo'] | |
on_develop: | |
- ${{ github.ref == 'refs/heads/develop' }} | |
include: | |
- python-version: '3.10' | |
os: ubuntu-latest | |
concretizer: original | |
on_develop: ${{ github.ref == 'refs/heads/develop' }} | |
- python-version: '3.6' | |
os: ubuntu-20.04 | |
concretizer: clingo | |
on_develop: ${{ github.ref == 'refs/heads/develop' }} | |
exclude: | |
- python-version: '3.7' | |
os: ubuntu-latest | |
concretizer: 'clingo' | |
on_develop: false | |
- python-version: '3.8' | |
os: ubuntu-latest | |
concretizer: 'clingo' | |
on_develop: false | |
- python-version: '3.9' | |
os: ubuntu-latest | |
concretizer: 'clingo' | |
on_develop: false | |
- python-version: '3.11' | |
os: ubuntu-latest | |
concretizer: 'clingo' | |
on_develop: false | |
- python-version: '3.11' | |
os: ubuntu-latest | |
concretizer: 'clingo' | |
on_develop: false | |
steps: | |
- uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b | |
with: | |
fetch-depth: 0 | |
- uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d | |
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/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_SOLVER: ${{ matrix.concretizer }} | |
SPACK_TEST_PARALLEL: 2 | |
COVERAGE: true | |
UNIT_TEST_COVERAGE: ${{ matrix.python-version == '3.10' }} | |
run: | | |
share/spack/qa/run-unit-tests | |
- uses: codecov/codecov-action@5ecb98a3c6b747ed38dc09f787459979aebb39be | |
with: | |
flags: unittests,linux,${{ matrix.concretizer }} | |
token: ${{ secrets.CODECOV_TOKEN }} | |
verbose: true | |
# Test shell integration | |
shell: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b | |
with: | |
fetch-depth: 0 | |
- uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d | |
with: | |
python-version: '3.10' | |
- 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/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: codecov/codecov-action@5ecb98a3c6b747ed38dc09f787459979aebb39be | |
with: | |
flags: shelltests,linux | |
token: ${{ secrets.CODECOV_TOKEN }} | |
verbose: 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@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b | |
- name: Setup repo and non-root user | |
run: | | |
git --version | |
git config --global --add safe.directory /__w/spack/spack | |
git fetch --unshallow | |
. .github/workflows/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@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b | |
with: | |
fetch-depth: 0 | |
- uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d | |
with: | |
python-version: '3.10' | |
- name: Install System packages | |
run: | | |
sudo apt-get -y update | |
sudo apt-get -y install coreutils cvs gfortran graphviz gnupg2 mercurial ninja-build kcov | |
- name: Install Python packages | |
run: | | |
pip install --upgrade pip setuptools pytest coverage[toml] pytest-cov clingo pytest-xdist | |
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/setup_git.sh | |
- 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 | |
SPACK_TEST_SOLVER: clingo | |
run: | | |
share/spack/qa/run-unit-tests | |
- uses: codecov/codecov-action@5ecb98a3c6b747ed38dc09f787459979aebb39be | |
with: | |
flags: unittests,linux,clingo | |
token: ${{ secrets.CODECOV_TOKEN }} | |
verbose: 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@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b | |
with: | |
fetch-depth: 0 | |
- uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d | |
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 gnupg2 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_SOLVER: clingo | |
SPACK_TEST_PARALLEL: 4 | |
run: | | |
git --version | |
. .github/workflows/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: codecov/codecov-action@5ecb98a3c6b747ed38dc09f787459979aebb39be | |
with: | |
flags: unittests,macos | |
token: ${{ secrets.CODECOV_TOKEN }} | |
verbose: true |