5558940ce6
Argparse started raising ArgumentError exceptions when the same parser is added twice. Therefore, we perform the addition only if the parser is not there already Port match syntax to our unparser
223 lines
7.9 KiB
YAML
223 lines
7.9 KiB
YAML
name: unit tests
|
|
|
|
on:
|
|
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: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
python-version: ['2.7', '3.6', '3.7', '3.8', '3.9', '3.10', '3.11']
|
|
concretizer: ['clingo']
|
|
on_develop:
|
|
- ${{ github.ref == 'refs/heads/develop' }}
|
|
include:
|
|
- python-version: 2.7
|
|
concretizer: original
|
|
on_develop: ${{ github.ref == 'refs/heads/develop' }}
|
|
- python-version: '3.11'
|
|
concretizer: original
|
|
on_develop: ${{ github.ref == 'refs/heads/develop' }}
|
|
exclude:
|
|
- python-version: '3.7'
|
|
concretizer: 'clingo'
|
|
on_develop: false
|
|
- python-version: '3.8'
|
|
concretizer: 'clingo'
|
|
on_develop: false
|
|
- python-version: '3.9'
|
|
concretizer: 'clingo'
|
|
on_develop: false
|
|
- python-version: '3.10'
|
|
concretizer: 'clingo'
|
|
on_develop: false
|
|
|
|
steps:
|
|
- uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # @v2
|
|
with:
|
|
fetch-depth: 0
|
|
- uses: actions/setup-python@13ae5bb136fac2878aff31522b9efb785519f984 # @v2
|
|
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 \
|
|
patchelf cmake bison libbison-dev kcov
|
|
- name: Install Python packages
|
|
run: |
|
|
pip install --upgrade pip six setuptools pytest codecov[toml] pytest-xdist
|
|
# Install pytest-cov only on recent Python, to avoid stalling on Python 2.7 due
|
|
# to bugs on an unmaintained version of the package when used with xdist.
|
|
if [[ ${{ matrix.python-version }} != "2.7" ]]; then
|
|
pip install --upgrade pytest-cov
|
|
fi
|
|
# ensure style checks are not skipped in unit tests for python >= 3.6
|
|
# note that true/false (i.e., 1/0) are opposite in conditions in python and bash
|
|
if python -c 'import sys; sys.exit(not sys.version_info >= (3, 6))'; then
|
|
pip install --upgrade flake8 "isort>=4.3.5" "mypy>=0.900" "click==8.0.4" "black<=21.12b0"
|
|
fi
|
|
- name: Pin pathlib for Python 2.7
|
|
if: ${{ matrix.python-version == 2.7 }}
|
|
run: |
|
|
pip install -U pathlib2==2.3.6 toml
|
|
- 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 -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.11') }}
|
|
run: |
|
|
share/spack/qa/run-unit-tests
|
|
- uses: codecov/codecov-action@d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70
|
|
with:
|
|
flags: unittests,linux,${{ matrix.concretizer }}
|
|
# Test shell integration
|
|
shell:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # @v2
|
|
with:
|
|
fetch-depth: 0
|
|
- uses: actions/setup-python@13ae5bb136fac2878aff31522b9efb785519f984 # @v2
|
|
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 six setuptools pytest codecov 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: Run shell tests
|
|
env:
|
|
COVERAGE: true
|
|
run: |
|
|
share/spack/qa/run-shell-tests
|
|
- uses: codecov/codecov-action@d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70
|
|
with:
|
|
flags: shelltests,linux
|
|
|
|
# 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@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # @v2
|
|
- name: Setup repo and non-root user
|
|
run: |
|
|
git --version
|
|
git fetch --unshallow
|
|
. .github/workflows/setup_git.sh
|
|
useradd spack-test
|
|
chown -R spack-test .
|
|
- name: Run unit tests
|
|
shell: runuser -u spack-test -- bash {0}
|
|
run: |
|
|
source share/spack/setup-env.sh
|
|
spack -d solve zlib
|
|
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@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # @v2
|
|
with:
|
|
fetch-depth: 0
|
|
- uses: actions/setup-python@13ae5bb136fac2878aff31522b9efb785519f984 # @v2
|
|
with:
|
|
python-version: '3.11'
|
|
- 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 \
|
|
patchelf kcov
|
|
- name: Install Python packages
|
|
run: |
|
|
pip install --upgrade pip six setuptools pytest codecov coverage[toml] pytest-cov clingo pytest-xdist
|
|
- name: Setup git configuration
|
|
run: |
|
|
# Need this for the git tests to succeed.
|
|
git --version
|
|
. .github/workflows/setup_git.sh
|
|
- 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@d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70 # @v2.1.0
|
|
with:
|
|
flags: unittests,linux,clingo
|
|
# Run unit tests on MacOS
|
|
macos:
|
|
runs-on: macos-latest
|
|
strategy:
|
|
matrix:
|
|
python-version: ["3.10"]
|
|
steps:
|
|
- uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # @v2
|
|
with:
|
|
fetch-depth: 0
|
|
- uses: actions/setup-python@13ae5bb136fac2878aff31522b9efb785519f984 # @v2
|
|
with:
|
|
python-version: ${{ matrix.python-version }}
|
|
- name: Install Python packages
|
|
run: |
|
|
pip install --upgrade pip six setuptools
|
|
pip install --upgrade pytest codecov coverage[toml] pytest-xdist pytest-cov
|
|
- name: Setup Homebrew packages
|
|
run: |
|
|
brew install dash fish gcc gnupg2 kcov
|
|
- 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 --cov --cov-config=pyproject.toml --cov-report=xml:coverage.xml "${common_args[@]}"
|
|
- uses: codecov/codecov-action@d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70
|
|
with:
|
|
flags: unittests,macos
|