summaryrefslogtreecommitdiff
path: root/.github
diff options
context:
space:
mode:
authorMassimiliano Culpo <massimiliano.culpo@gmail.com>2021-03-16 16:16:31 +0100
committerGitHub <noreply@github.com>2021-03-16 08:16:31 -0700
commitb304b4bdb0f703569b76696c219670bd2d5dc680 (patch)
tree16e58d2724f3b29185dfa429bbbc35b3dfef9651 /.github
parentd36de79ba02252ae3279832e85d9f056af475b11 (diff)
downloadspack-b304b4bdb0f703569b76696c219670bd2d5dc680.tar.gz
spack-b304b4bdb0f703569b76696c219670bd2d5dc680.tar.bz2
spack-b304b4bdb0f703569b76696c219670bd2d5dc680.tar.xz
spack-b304b4bdb0f703569b76696c219670bd2d5dc680.zip
Speed-up CI by reorganizing tests (#22247)
* unit tests: mark slow tests as "maybeslow" This commit also removes the "network" marker and marks every "network" test as "maybeslow". Tests marked as db are maintained, but they're not slow anymore. * GA: require style tests to pass before running unit-tests * GA: make MacOS unit tests fail fast * GA: move all unit tests into the same workflow, run style tests as a prerequisite All the unit tests have been moved into the same workflow so that a single run of the dorny/paths-filter action can be used to ask for coverage based on the files that have been changed in a PR. The basic idea is that for PRs that introduce only changes to packages coverage is not necessary, this resulting in a faster execution of the tests. Also, for package only PRs slow unit tests are skipped. Finally, MacOS and linux unit tests are now conditional on style tests passing meaning that e.g. we won't waste a MacOS worker if we know that the PR has flake8 issues. * Addressed review comments * Skipping slow tests on MacOS for package only recipes * QA: make tests on changes correct before merging
Diffstat (limited to '.github')
-rw-r--r--.github/workflows/linux_unit_tests.yaml174
-rw-r--r--.github/workflows/macos_unit_tests.yaml44
-rw-r--r--.github/workflows/style_and_docs.yaml65
-rw-r--r--.github/workflows/unit_tests.yaml337
4 files changed, 337 insertions, 283 deletions
diff --git a/.github/workflows/linux_unit_tests.yaml b/.github/workflows/linux_unit_tests.yaml
deleted file mode 100644
index a5fdd7b345..0000000000
--- a/.github/workflows/linux_unit_tests.yaml
+++ /dev/null
@@ -1,174 +0,0 @@
-name: linux tests
-
-on:
- push:
- branches:
- - develop
- - releases/**
- pull_request:
- branches:
- - develop
- - releases/**
-jobs:
- unittests:
- runs-on: ubuntu-latest
- strategy:
- matrix:
- python-version: [2.7, 3.5, 3.6, 3.7, 3.8, 3.9]
- concretizer: ['original', 'clingo']
-
- steps:
- - uses: actions/checkout@v2
- with:
- fetch-depth: 0
- - uses: actions/setup-python@v2
- with:
- python-version: ${{ matrix.python-version }}
- - name: Install System packages
- run: |
- sudo apt-get -y update
- # Needed for unit tests
- sudo apt-get install -y coreutils gfortran graphviz gnupg2 mercurial
- sudo apt-get install -y ninja-build patchelf
- # Needed for kcov
- sudo apt-get -y install cmake binutils-dev libcurl4-openssl-dev
- sudo apt-get -y install zlib1g-dev libdw-dev libiberty-dev
- - name: Install Python packages
- run: |
- pip install --upgrade pip six setuptools codecov coverage
- - name: Setup git configuration
- run: |
- # Need this for the git tests to succeed.
- git --version
- . .github/workflows/setup_git.sh
- - name: Install kcov for bash script coverage
- env:
- KCOV_VERSION: 34
- run: |
- KCOV_ROOT=$(mktemp -d)
- wget --output-document=${KCOV_ROOT}/${KCOV_VERSION}.tar.gz https://github.com/SimonKagstrom/kcov/archive/v${KCOV_VERSION}.tar.gz
- tar -C ${KCOV_ROOT} -xzvf ${KCOV_ROOT}/${KCOV_VERSION}.tar.gz
- mkdir -p ${KCOV_ROOT}/build
- cd ${KCOV_ROOT}/build && cmake -Wno-dev ${KCOV_ROOT}/kcov-${KCOV_VERSION} && cd -
- make -C ${KCOV_ROOT}/build && sudo make -C ${KCOV_ROOT}/build install
- - name: Bootstrap clingo from sources
- if: ${{ matrix.concretizer == 'clingo' }}
- run: |
- . share/spack/setup-env.sh
- spack external find --not-buildable cmake bison
- spack -v solve zlib
- - name: Run unit tests
- env:
- COVERAGE: true
- SPACK_TEST_SOLVER: ${{ matrix.concretizer }}
- run: |
- share/spack/qa/run-unit-tests
- coverage combine
- coverage xml
- - uses: codecov/codecov-action@v1
- with:
- flags: unittests,linux,${{ matrix.concretizer }}
- shell:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
- with:
- fetch-depth: 0
- - uses: actions/setup-python@v2
- with:
- python-version: 3.9
- - name: Install System packages
- run: |
- sudo apt-get -y update
- # Needed for shell tests
- sudo apt-get install -y coreutils csh zsh tcsh fish dash bash
- # Needed for kcov
- sudo apt-get -y install cmake binutils-dev libcurl4-openssl-dev
- sudo apt-get -y install zlib1g-dev libdw-dev libiberty-dev
- - name: Install Python packages
- run: |
- pip install --upgrade pip six setuptools codecov coverage
- - name: Setup git configuration
- run: |
- # Need this for the git tests to succeed.
- git --version
- . .github/workflows/setup_git.sh
- - name: Install kcov for bash script coverage
- env:
- KCOV_VERSION: 38
- run: |
- KCOV_ROOT=$(mktemp -d)
- wget --output-document=${KCOV_ROOT}/${KCOV_VERSION}.tar.gz https://github.com/SimonKagstrom/kcov/archive/v${KCOV_VERSION}.tar.gz
- tar -C ${KCOV_ROOT} -xzvf ${KCOV_ROOT}/${KCOV_VERSION}.tar.gz
- mkdir -p ${KCOV_ROOT}/build
- cd ${KCOV_ROOT}/build && cmake -Wno-dev ${KCOV_ROOT}/kcov-${KCOV_VERSION} && cd -
- make -C ${KCOV_ROOT}/build && sudo make -C ${KCOV_ROOT}/build install
- - name: Run shell tests
- env:
- COVERAGE: true
- run: |
- share/spack/qa/run-shell-tests
- - uses: codecov/codecov-action@v1
- with:
- flags: shelltests,linux
-
- centos6:
- # Test for Python2.6 run on Centos 6
- runs-on: ubuntu-latest
- container: spack/github-actions:centos6
- steps:
- - name: Run unit tests
- env:
- HOME: /home/spack-test
- run: |
- whoami && echo $HOME && cd $HOME
- git clone https://github.com/spack/spack.git && cd spack
- git fetch origin ${{ github.ref }}:test-branch
- git checkout test-branch
- share/spack/qa/run-unit-tests
-
- 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@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
- env:
- SPACK_PYTHON: /usr/libexec/platform-python
- shell: runuser -u spack-test -- bash {0}
- run: |
- source share/spack/setup-env.sh
- spack unit-test -k 'not svn and not hg' -x --verbose
- clingo-cffi:
- # Test for the clingo based solver (using clingo-cffi)
- runs-on: ubuntu-latest
- container: spack/github-actions:clingo-cffi
- steps:
- - name: Run unit tests
- run: |
- whoami && echo PWD=$PWD && echo HOME=$HOME && echo SPACK_TEST_SOLVER=$SPACK_TEST_SOLVER
- python3 -c "import clingo; print(hasattr(clingo.Symbol, '_rep'), clingo.__version__)"
- git clone https://github.com/spack/spack.git && cd spack
- git fetch origin ${{ github.ref }}:test-branch
- git checkout test-branch
- . share/spack/setup-env.sh
- spack compiler find
- spack solve mpileaks%gcc
- coverage run $(which spack) unit-test -v
- coverage combine
- coverage xml
- - uses: codecov/codecov-action@v1
- with:
- flags: unittests,linux,clingo
diff --git a/.github/workflows/macos_unit_tests.yaml b/.github/workflows/macos_unit_tests.yaml
deleted file mode 100644
index e5918968d2..0000000000
--- a/.github/workflows/macos_unit_tests.yaml
+++ /dev/null
@@ -1,44 +0,0 @@
-name: macos tests
-
-on:
- push:
- branches:
- - develop
- - releases/**
- pull_request:
- branches:
- - develop
- - releases/**
-jobs:
- build:
- runs-on: macos-latest
- strategy:
- matrix:
- python-version: [3.8]
- steps:
- - uses: actions/checkout@v2
- with:
- fetch-depth: 0
- - uses: actions/setup-python@v2
- with:
- python-version: ${{ matrix.python-version }}
- - name: Install Python packages
- run: |
- pip install --upgrade pip six setuptools
- pip install --upgrade codecov coverage
- pip install --upgrade flake8 pep8-naming mypy
- - name: Setup Homebrew packages
- run: |
- brew install dash fish gcc gnupg2 kcov
- - name: Run unit tests
- run: |
- git --version
- . .github/workflows/setup_git.sh
- . share/spack/setup-env.sh
- coverage run $(which spack) unit-test
- coverage combine
- coverage xml
- - uses: codecov/codecov-action@v1
- with:
- file: ./coverage.xml
- flags: unittests,macos
diff --git a/.github/workflows/style_and_docs.yaml b/.github/workflows/style_and_docs.yaml
deleted file mode 100644
index 0f84e1e885..0000000000
--- a/.github/workflows/style_and_docs.yaml
+++ /dev/null
@@ -1,65 +0,0 @@
-name: style and docs
-
-on:
- push:
- branches:
- - develop
- - releases/**
- pull_request:
- branches:
- - develop
- - releases/**
-jobs:
- validate:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
- - uses: actions/setup-python@v2
- with:
- python-version: 3.9
- - name: Install Python Packages
- run: |
- pip install --upgrade pip
- pip install --upgrade vermin
- - name: Minimum Version (Spack's Core)
- run: vermin --backport argparse --backport typing -t=2.6- -t=3.5- -v lib/spack/spack/ lib/spack/llnl/ bin/
- - name: Minimum Version (Repositories)
- run: vermin --backport argparse --backport typing -t=2.6- -t=3.5- -v var/spack/repos
- style:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
- with:
- fetch-depth: 0
- - uses: actions/setup-python@v2
- with:
- python-version: 3.9
- - name: Install Python packages
- run: |
- pip install --upgrade pip six setuptools flake8 mypy>=0.800 black
- - 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
- documentation:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
- - uses: actions/setup-python@v2
- with:
- python-version: 3.9
- - name: Install System packages
- run: |
- sudo apt-get -y update
- sudo apt-get install -y coreutils ninja-build graphviz
- - name: Install Python packages
- run: |
- pip install --upgrade pip six setuptools
- pip install --upgrade -r lib/spack/docs/requirements.txt
- - name: Build documentation
- run: |
- share/spack/qa/run-doc-tests
diff --git a/.github/workflows/unit_tests.yaml b/.github/workflows/unit_tests.yaml
new file mode 100644
index 0000000000..7fcd61d9f4
--- /dev/null
+++ b/.github/workflows/unit_tests.yaml
@@ -0,0 +1,337 @@
+name: linux tests
+
+on:
+ push:
+ branches:
+ - develop
+ - releases/**
+ pull_request:
+ branches:
+ - develop
+ - releases/**
+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@v2
+ - uses: actions/setup-python@v2
+ with:
+ python-version: 3.9
+ - name: Install Python Packages
+ run: |
+ pip install --upgrade pip
+ pip install --upgrade vermin
+ - name: vermin (Spack's Core)
+ run: vermin --backport argparse --backport typing -t=2.6- -t=3.5- -v lib/spack/spack/ lib/spack/llnl/ bin/
+ - name: vermin (Repositories)
+ run: vermin --backport argparse --backport typing -t=2.6- -t=3.5- -v var/spack/repos
+ # Run style checks on the files that have been changed
+ style:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ with:
+ fetch-depth: 0
+ - uses: actions/setup-python@v2
+ with:
+ python-version: 3.9
+ - name: Install Python packages
+ run: |
+ pip install --upgrade pip six setuptools flake8 mypy>=0.800 black
+ - 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
+ # Build the documentation
+ documentation:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions/setup-python@v2
+ with:
+ python-version: 3.9
+ - name: Install System packages
+ run: |
+ sudo apt-get -y update
+ sudo apt-get install -y coreutils ninja-build graphviz
+ - name: Install Python packages
+ run: |
+ pip install --upgrade pip six setuptools
+ pip install --upgrade -r lib/spack/docs/requirements.txt
+ - name: Build documentation
+ run: |
+ share/spack/qa/run-doc-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:
+ # For pull requests it's not necessary to checkout the code
+ - uses: dorny/paths-filter@v2
+ 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 this is a PR and core has been modified
+ # or if this workflow is triggered by a push event (this means that once a PR is
+ # merged we'll perform a full run with CI on develop even though the PR was only
+ # modifying packages)
+ run: |
+ echo Core changes: ${{ steps.filter.outputs.core }}
+ echo Event name: ${{ github.event_name }}
+ if [ "${{ steps.filter.outputs.core }}" == "true" ] || [ "${{ github.event_name }}" == 'push' ]
+ 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, documentation, changes ]
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ python-version: [2.7, 3.5, 3.6, 3.7, 3.8, 3.9]
+ concretizer: ['original', 'clingo']
+ steps:
+ - uses: actions/checkout@v2
+ with:
+ fetch-depth: 0
+ - uses: actions/setup-python@v2
+ with:
+ python-version: ${{ matrix.python-version }}
+ - name: Install System packages
+ run: |
+ sudo apt-get -y update
+ # Needed for unit tests
+ sudo apt-get install -y coreutils gfortran graphviz gnupg2 mercurial
+ sudo apt-get install -y ninja-build patchelf
+ # Needed for kcov
+ sudo apt-get -y install cmake binutils-dev libcurl4-openssl-dev
+ sudo apt-get -y install zlib1g-dev libdw-dev libiberty-dev
+ - name: Install Python packages
+ run: |
+ pip install --upgrade pip six setuptools codecov coverage
+ - name: Setup git configuration
+ run: |
+ # Need this for the git tests to succeed.
+ git --version
+ . .github/workflows/setup_git.sh
+ - name: Install kcov for bash script coverage
+ if: ${{ needs.changes.outputs.with_coverage == 'true' }}
+ env:
+ KCOV_VERSION: 34
+ run: |
+ KCOV_ROOT=$(mktemp -d)
+ wget --output-document=${KCOV_ROOT}/${KCOV_VERSION}.tar.gz https://github.com/SimonKagstrom/kcov/archive/v${KCOV_VERSION}.tar.gz
+ tar -C ${KCOV_ROOT} -xzvf ${KCOV_ROOT}/${KCOV_VERSION}.tar.gz
+ mkdir -p ${KCOV_ROOT}/build
+ cd ${KCOV_ROOT}/build && cmake -Wno-dev ${KCOV_ROOT}/kcov-${KCOV_VERSION} && cd -
+ make -C ${KCOV_ROOT}/build && sudo make -C ${KCOV_ROOT}/build install
+ - name: Bootstrap clingo from sources
+ if: ${{ matrix.concretizer == 'clingo' }}
+ run: |
+ . share/spack/setup-env.sh
+ spack external find --not-buildable cmake bison
+ spack -v solve zlib
+ - name: Run unit tests (full suite with coverage)
+ if: ${{ needs.changes.outputs.with_coverage == 'true' }}
+ env:
+ COVERAGE: true
+ SPACK_TEST_SOLVER: ${{ matrix.concretizer }}
+ run: |
+ share/spack/qa/run-unit-tests
+ coverage combine
+ coverage xml
+ - name: Run unit tests (reduced suite without coverage)
+ if: ${{ needs.changes.outputs.with_coverage == 'false' }}
+ env:
+ ONLY_PACKAGES: true
+ SPACK_TEST_SOLVER: ${{ matrix.concretizer }}
+ run: |
+ share/spack/qa/run-unit-tests
+ - uses: codecov/codecov-action@v1
+ if: ${{ needs.changes.outputs.with_coverage == 'true' }}
+ with:
+ flags: unittests,linux,${{ matrix.concretizer }}
+ # Test shell integration
+ shell:
+ needs: [ validate, style, documentation, changes ]
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ with:
+ fetch-depth: 0
+ - uses: actions/setup-python@v2
+ with:
+ python-version: 3.9
+ - name: Install System packages
+ run: |
+ sudo apt-get -y update
+ # Needed for shell tests
+ sudo apt-get install -y coreutils csh zsh tcsh fish dash bash
+ # Needed for kcov
+ sudo apt-get -y install cmake binutils-dev libcurl4-openssl-dev
+ sudo apt-get -y install zlib1g-dev libdw-dev libiberty-dev
+ - name: Install Python packages
+ run: |
+ pip install --upgrade pip six setuptools codecov coverage
+ - name: Setup git configuration
+ run: |
+ # Need this for the git tests to succeed.
+ git --version
+ . .github/workflows/setup_git.sh
+ - name: Install kcov for bash script coverage
+ if: ${{ needs.changes.outputs.with_coverage == 'true' }}
+ env:
+ KCOV_VERSION: 38
+ run: |
+ KCOV_ROOT=$(mktemp -d)
+ wget --output-document=${KCOV_ROOT}/${KCOV_VERSION}.tar.gz https://github.com/SimonKagstrom/kcov/archive/v${KCOV_VERSION}.tar.gz
+ tar -C ${KCOV_ROOT} -xzvf ${KCOV_ROOT}/${KCOV_VERSION}.tar.gz
+ mkdir -p ${KCOV_ROOT}/build
+ cd ${KCOV_ROOT}/build && cmake -Wno-dev ${KCOV_ROOT}/kcov-${KCOV_VERSION} && cd -
+ make -C ${KCOV_ROOT}/build && sudo make -C ${KCOV_ROOT}/build install
+ - name: Run shell tests (without coverage)
+ if: ${{ needs.changes.outputs.with_coverage == 'false' }}
+ run: |
+ share/spack/qa/run-shell-tests
+ - name: Run shell tests (with coverage)
+ if: ${{ needs.changes.outputs.with_coverage == 'true' }}
+ env:
+ COVERAGE: true
+ run: |
+ share/spack/qa/run-shell-tests
+ - uses: codecov/codecov-action@v1
+ if: ${{ needs.changes.outputs.with_coverage == 'true' }}
+ with:
+ flags: shelltests,linux
+ # Test for Python2.6 run on Centos 6
+ centos6:
+ needs: [ validate, style, documentation ]
+ runs-on: ubuntu-latest
+ container: spack/github-actions:centos6
+ steps:
+ - name: Run unit tests
+ env:
+ HOME: /home/spack-test
+ run: |
+ whoami && echo $HOME && cd $HOME
+ git clone https://github.com/spack/spack.git && cd spack
+ git fetch origin ${{ github.ref }}:test-branch
+ git checkout test-branch
+ share/spack/qa/run-unit-tests
+
+ # Test RHEL8 UBI with platform Python
+ rhel8-platform-python:
+ needs: [ validate, style, documentation ]
+ 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@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
+ env:
+ SPACK_PYTHON: /usr/libexec/platform-python
+ shell: runuser -u spack-test -- bash {0}
+ run: |
+ source share/spack/setup-env.sh
+ spack unit-test -k 'not svn and not hg' -x --verbose
+ # Test for the clingo based solver (using clingo-cffi)
+ clingo-cffi:
+ needs: [ validate, style, documentation, changes ]
+ runs-on: ubuntu-latest
+ container: spack/github-actions:clingo-cffi
+ steps:
+ - name: Run unit tests
+ run: |
+ whoami && echo PWD=$PWD && echo HOME=$HOME && echo SPACK_TEST_SOLVER=$SPACK_TEST_SOLVER
+ python3 -c "import clingo; print(hasattr(clingo.Symbol, '_rep'), clingo.__version__)"
+ git clone https://github.com/spack/spack.git && cd spack
+ git fetch origin ${{ github.ref }}:test-branch
+ git checkout test-branch
+ . share/spack/setup-env.sh
+ spack compiler find
+ spack solve mpileaks%gcc
+ coverage run $(which spack) unit-test -v
+ coverage combine
+ coverage xml
+ - uses: codecov/codecov-action@v1
+ if: ${{ needs.changes.outputs.with_coverage == 'true' }}
+ with:
+ flags: unittests,linux,clingo
+ # Run unit tests on MacOS
+ build:
+ needs: [ validate, style, documentation, changes ]
+ runs-on: macos-latest
+ strategy:
+ matrix:
+ python-version: [3.8]
+ steps:
+ - uses: actions/checkout@v2
+ with:
+ fetch-depth: 0
+ - uses: actions/setup-python@v2
+ with:
+ python-version: ${{ matrix.python-version }}
+ - name: Install Python packages
+ run: |
+ pip install --upgrade pip six setuptools
+ pip install --upgrade codecov coverage
+ pip install --upgrade flake8 pep8-naming mypy
+ - name: Setup Homebrew packages
+ run: |
+ brew install dash fish gcc gnupg2 kcov
+ - name: Run unit tests
+ run: |
+ git --version
+ . .github/workflows/setup_git.sh
+ . share/spack/setup-env.sh
+ if [ "${{ needs.changes.outputs.with_coverage }}" == "true" ]
+ then
+ coverage run $(which spack) unit-test -x
+ coverage combine
+ coverage xml
+ else
+ echo "ONLY PACKAGE RECIPES CHANGED [skipping coverage]"
+ $(which spack) unit-test -x -m "not maybeslow"
+ fi
+ - uses: codecov/codecov-action@v1
+ if: ${{ needs.changes.outputs.with_coverage == 'true' }}
+ with:
+ file: ./coverage.xml
+ flags: unittests,macos