diff options
Diffstat (limited to '.github/workflows/unit_tests.yaml')
-rw-r--r-- | .github/workflows/unit_tests.yaml | 164 |
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 |