summaryrefslogtreecommitdiff
path: root/.github/workflows/unit_tests.yaml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/unit_tests.yaml')
-rw-r--r--.github/workflows/unit_tests.yaml164
1 files changed, 27 insertions, 137 deletions
diff --git a/.github/workflows/unit_tests.yaml b/.github/workflows/unit_tests.yaml
index b20d969a43..3856f1039f 100644
--- a/.github/workflows/unit_tests.yaml
+++ b/.github/workflows/unit_tests.yaml
@@ -1,103 +1,25 @@
-name: linux tests
+name: unit tests
on:
- push:
- branches:
- - develop
- - releases/**
- pull_request:
- branches:
- - develop
- - releases/**
+ workflow_call:
+ inputs:
+ core:
+ required: true
+ type: string
+ packages:
+ required: true
+ type: string
+ with_coverage:
+ required: true
+ type: string
concurrency:
- group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_number }}
+ group: unit_tests-${{ github.workflow }}-${{ github.event.pull_request.number || github.run_number }}
cancel-in-progress: true
jobs:
- # Validate that the code can be run on all the Python versions
- # supported by Spack
- validate:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # @v2
- - uses: actions/setup-python@b55428b1882923874294fa556849718a1d7f2ca5 # @v2
- with:
- python-version: '3.10'
- - name: Install Python Packages
- run: |
- pip install --upgrade pip
- pip install --upgrade vermin
- - name: vermin (Spack's Core)
- run: vermin --backport argparse --violations --backport typing -t=2.7- -t=3.6- -vvv lib/spack/spack/ lib/spack/llnl/ bin/
- - name: vermin (Repositories)
- run: vermin --backport argparse --violations --backport typing -t=2.7- -t=3.6- -vvv var/spack/repos
- # Run style checks on the files that have been changed
- style:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # @v2
- with:
- fetch-depth: 0
- - uses: actions/setup-python@b55428b1882923874294fa556849718a1d7f2ca5 # @v2
- with:
- python-version: '3.10'
- - name: Install Python packages
- run: |
- pip install --upgrade pip six setuptools types-six
- - name: Setup git configuration
- run: |
- # Need this for the git tests to succeed.
- git --version
- . .github/workflows/setup_git.sh
- - name: Run style tests
- run: |
- share/spack/qa/run-style-tests
- # Check which files have been updated by the PR
- changes:
- runs-on: ubuntu-latest
- # Set job outputs to values from filter step
- outputs:
- core: ${{ steps.filter.outputs.core }}
- packages: ${{ steps.filter.outputs.packages }}
- with_coverage: ${{ steps.coverage.outputs.with_coverage }}
- steps:
- - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # @v2
- if: ${{ github.event_name == 'push' }}
- with:
- fetch-depth: 0
- # For pull requests it's not necessary to checkout the code
- - uses: dorny/paths-filter@b2feaf19c27470162a626bd6fa8438ae5b263721
- id: filter
- with:
- # See https://github.com/dorny/paths-filter/issues/56 for the syntax used below
- filters: |
- core:
- - './!(var/**)/**'
- packages:
- - 'var/**'
- # Some links for easier reference:
- #
- # "github" context: https://docs.github.com/en/actions/reference/context-and-expression-syntax-for-github-actions#github-context
- # job outputs: https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idoutputs
- # setting environment variables from earlier steps: https://docs.github.com/en/actions/reference/workflow-commands-for-github-actions#setting-an-environment-variable
- #
- - id: coverage
- # Run the subsequent jobs with coverage if core has been modified,
- # regardless of whether this is a pull request or a push to a branch
- run: |
- echo Core changes: ${{ steps.filter.outputs.core }}
- echo Event name: ${{ github.event_name }}
- if [ "${{ steps.filter.outputs.core }}" == "true" ]
- then
- echo "::set-output name=with_coverage::true"
- else
- echo "::set-output name=with_coverage::false"
- fi
-
# Run unit tests with different configurations on linux
- unittests:
- needs: [ validate, style, changes ]
+ ubuntu:
runs-on: ubuntu-latest
strategy:
matrix:
@@ -148,7 +70,7 @@ jobs:
spack bootstrap untrust spack-install
spack -v solve zlib
- name: Run unit tests (full suite with coverage)
- if: ${{ needs.changes.outputs.with_coverage == 'true' }}
+ if: ${{ inputs.with_coverage == 'true' }}
env:
SPACK_PYTHON: python
COVERAGE: true
@@ -158,7 +80,7 @@ jobs:
coverage combine
coverage xml
- name: Run unit tests (reduced suite without coverage)
- if: ${{ needs.changes.outputs.with_coverage == 'false' }}
+ if: ${{ inputs.with_coverage == 'false' }}
env:
SPACK_PYTHON: python
ONLY_PACKAGES: true
@@ -166,12 +88,11 @@ jobs:
run: |
share/spack/qa/run-unit-tests
- uses: codecov/codecov-action@81cd2dc8148241f03f5839d295e000b8f761e378 # @v2.1.0
- if: ${{ needs.changes.outputs.with_coverage == 'true' }}
+ if: ${{ inputs.with_coverage == 'true' }}
with:
flags: unittests,linux,${{ matrix.concretizer }}
# Test shell integration
shell:
- needs: [ validate, style, changes ]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # @v2
@@ -194,26 +115,25 @@ jobs:
git --version
. .github/workflows/setup_git.sh
- name: Run shell tests (without coverage)
- if: ${{ needs.changes.outputs.with_coverage == 'false' }}
+ if: ${{ inputs.with_coverage == 'false' }}
run: |
share/spack/qa/run-shell-tests
- name: Run shell tests (with coverage)
- if: ${{ needs.changes.outputs.with_coverage == 'true' }}
+ if: ${{ inputs.with_coverage == 'true' }}
env:
COVERAGE: true
run: |
share/spack/qa/run-shell-tests
- uses: codecov/codecov-action@81cd2dc8148241f03f5839d295e000b8f761e378 # @v2.1.0
- if: ${{ needs.changes.outputs.with_coverage == 'true' }}
+ if: ${{ inputs.with_coverage == 'true' }}
with:
flags: shelltests,linux
# Test RHEL8 UBI with platform Python. This job is run
# only on PRs modifying core Spack
rhel8-platform-python:
- needs: [ validate, style, changes ]
runs-on: ubuntu-latest
- if: ${{ needs.changes.outputs.with_coverage == 'true' }}
+ if: ${{ inputs.with_coverage == 'true' }}
container: registry.access.redhat.com/ubi8/ubi
steps:
- name: Install dependencies
@@ -237,7 +157,6 @@ jobs:
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:
- needs: [ validate, style, changes ]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # @v2
@@ -262,7 +181,7 @@ jobs:
git --version
. .github/workflows/setup_git.sh
- name: Run unit tests (full suite with coverage)
- if: ${{ needs.changes.outputs.with_coverage == 'true' }}
+ if: ${{ inputs.with_coverage == 'true' }}
env:
COVERAGE: true
SPACK_TEST_SOLVER: clingo
@@ -271,19 +190,18 @@ jobs:
coverage combine
coverage xml
- name: Run unit tests (reduced suite without coverage)
- if: ${{ needs.changes.outputs.with_coverage == 'false' }}
+ if: ${{ inputs.with_coverage == 'false' }}
env:
ONLY_PACKAGES: true
SPACK_TEST_SOLVER: clingo
run: |
share/spack/qa/run-unit-tests
- uses: codecov/codecov-action@81cd2dc8148241f03f5839d295e000b8f761e378 # @v2.1.0
- if: ${{ needs.changes.outputs.with_coverage == 'true' }}
+ if: ${{ inputs.with_coverage == 'true' }}
with:
flags: unittests,linux,clingo
# Run unit tests on MacOS
- build:
- needs: [ validate, style, changes ]
+ macos:
runs-on: macos-latest
strategy:
matrix:
@@ -311,7 +229,7 @@ jobs:
. share/spack/setup-env.sh
$(which spack) bootstrap untrust spack-install
$(which spack) solve zlib
- if [ "${{ needs.changes.outputs.with_coverage }}" == "true" ]
+ if [ "${{ inputs.with_coverage }}" == "true" ]
then
coverage run $(which spack) unit-test -x
coverage combine
@@ -324,36 +242,8 @@ jobs:
$(which spack) unit-test -x -m "not maybeslow" -k "test_all_virtual_packages_have_default_providers"
fi
- uses: codecov/codecov-action@81cd2dc8148241f03f5839d295e000b8f761e378 # @v2.1.0
- if: ${{ needs.changes.outputs.with_coverage == 'true' }}
+ if: ${{ inputs.with_coverage == 'true' }}
with:
files: ./coverage.xml
flags: unittests,macos
- # Run audits on all the packages in the built-in repository
- package-audits:
- needs: [ validate, style, changes ]
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # @v2
- - uses: actions/setup-python@b55428b1882923874294fa556849718a1d7f2ca5 # @v2
- with:
- python-version: '3.10'
- - name: Install Python packages
- run: |
- pip install --upgrade pip six setuptools pytest codecov coverage[toml]==6.2
- - name: Package audits (with coverage)
- if: ${{ needs.changes.outputs.with_coverage == 'true' }}
- run: |
- . share/spack/setup-env.sh
- coverage run $(which spack) audit packages
- coverage combine
- coverage xml
- - name: Package audits (without coverage)
- if: ${{ needs.changes.outputs.with_coverage == 'false' }}
- run: |
- . share/spack/setup-env.sh
- $(which spack) audit packages
- - uses: codecov/codecov-action@81cd2dc8148241f03f5839d295e000b8f761e378 # @v2.1.0
- if: ${{ needs.changes.outputs.with_coverage == 'true' }}
- with:
- flags: unittests,linux,audits