summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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
-rw-r--r--README.md3
-rw-r--r--lib/spack/spack/test/ci.py1
-rw-r--r--lib/spack/spack/test/cmd/ci.py3
-rw-r--r--lib/spack/spack/test/cmd/env.py6
-rw-r--r--lib/spack/spack/test/cmd/url.py4
-rw-r--r--lib/spack/spack/test/cmd/versions.py15
-rw-r--r--lib/spack/spack/test/util/util_gpg.py1
-rw-r--r--pytest.ini3
-rwxr-xr-xshare/spack/qa/run-shell-tests6
-rwxr-xr-xshare/spack/qa/run-unit-tests5
14 files changed, 367 insertions, 300 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
diff --git a/README.md b/README.md
index d4bf01005c..12f0dbe6c0 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,6 @@
# <img src="https://cdn.rawgit.com/spack/spack/develop/share/spack/logo/spack-logo.svg" width="64" valign="middle" alt="Spack"/> Spack
-[![MacOS Tests](https://github.com/spack/spack/workflows/macos%20tests/badge.svg)](https://github.com/spack/spack/actions)
-[![Linux Tests](https://github.com/spack/spack/workflows/linux%20tests/badge.svg)](https://github.com/spack/spack/actions)
+[![Unit Tests](https://github.com/spack/spack/workflows/linux%20tests/badge.svg)](https://github.com/spack/spack/actions)
[![Linux Builds](https://github.com/spack/spack/workflows/linux%20builds/badge.svg)](https://github.com/spack/spack/actions)
[![macOS Builds (nightly)](https://github.com/spack/spack/workflows/macOS%20builds%20nightly/badge.svg?branch=develop)](https://github.com/spack/spack/actions?query=workflow%3A%22macOS+builds+nightly%22)
[![codecov](https://codecov.io/gh/spack/spack/branch/develop/graph/badge.svg)](https://codecov.io/gh/spack/spack)
diff --git a/lib/spack/spack/test/ci.py b/lib/spack/spack/test/ci.py
index 33488a2d8a..dae5066bf8 100644
--- a/lib/spack/spack/test/ci.py
+++ b/lib/spack/spack/test/ci.py
@@ -114,6 +114,7 @@ def test_get_concrete_specs(config, mock_packages):
assert('archive-files' in spec_map)
+@pytest.mark.maybeslow
def test_register_cdash_build():
build_name = 'Some pkg'
base_url = 'http://cdash.fake.org'
diff --git a/lib/spack/spack/test/cmd/ci.py b/lib/spack/spack/test/cmd/ci.py
index 24992d78c2..927c1e9ce8 100644
--- a/lib/spack/spack/test/cmd/ci.py
+++ b/lib/spack/spack/test/cmd/ci.py
@@ -38,6 +38,9 @@ buildcache_cmd = spack.main.SpackCommand('buildcache')
git = exe.which('git', required=True)
+pytestmark = pytest.mark.maybeslow
+
+
@pytest.fixture()
def env_deactivate():
yield
diff --git a/lib/spack/spack/test/cmd/env.py b/lib/spack/spack/test/cmd/env.py
index 592d8f451c..5665b41fac 100644
--- a/lib/spack/spack/test/cmd/env.py
+++ b/lib/spack/spack/test/cmd/env.py
@@ -25,8 +25,10 @@ from spack.util.path import substitute_path_variables
# everything here uses the mock_env_path
-pytestmark = pytest.mark.usefixtures(
- 'mutable_mock_env_path', 'config', 'mutable_mock_repo')
+pytestmark = [
+ pytest.mark.usefixtures('mutable_mock_env_path', 'config', 'mutable_mock_repo'),
+ pytest.mark.maybeslow
+]
env = SpackCommand('env')
install = SpackCommand('install')
diff --git a/lib/spack/spack/test/cmd/url.py b/lib/spack/spack/test/cmd/url.py
index f2466dcdf2..c130840984 100644
--- a/lib/spack/spack/test/cmd/url.py
+++ b/lib/spack/spack/test/cmd/url.py
@@ -71,7 +71,7 @@ def test_url_with_no_version_fails():
url('parse', 'http://www.netlib.org/voronoi/triangle.zip')
-@pytest.mark.network
+@pytest.mark.maybeslow
@pytest.mark.skipif(
sys.version_info < (2, 7),
reason="Python 2.6 tests are run in a container, where "
@@ -106,7 +106,7 @@ def test_url_list():
assert 0 < correct_version_urls < total_urls
-@pytest.mark.network
+@pytest.mark.maybeslow
@pytest.mark.skipif(
sys.version_info < (2, 7),
reason="Python 2.6 tests are run in a container, where "
diff --git a/lib/spack/spack/test/cmd/versions.py b/lib/spack/spack/test/cmd/versions.py
index e4bf711a8a..0d6f53833c 100644
--- a/lib/spack/spack/test/cmd/versions.py
+++ b/lib/spack/spack/test/cmd/versions.py
@@ -14,7 +14,6 @@ def test_safe_only_versions():
"""Only test the safe versions of a package.
(Using the deprecated command line argument)
"""
-
versions('--safe-only', 'zlib')
@@ -24,21 +23,21 @@ def test_safe_versions():
versions('--safe', 'zlib')
-@pytest.mark.network
+@pytest.mark.maybeslow
def test_remote_versions():
"""Test a package for which remote versions should be available."""
versions('zlib')
-@pytest.mark.network
+@pytest.mark.maybeslow
def test_remote_versions_only():
"""Test a package for which remote versions should be available."""
versions('--remote', 'zlib')
-@pytest.mark.network
+@pytest.mark.maybeslow
@pytest.mark.usefixtures('mock_packages')
def test_new_versions_only():
"""Test a package for which new versions should be available."""
@@ -46,28 +45,28 @@ def test_new_versions_only():
versions('--new', 'brillig')
-@pytest.mark.network
+@pytest.mark.maybeslow
def test_no_versions():
"""Test a package for which no remote versions are available."""
versions('converge')
-@pytest.mark.network
+@pytest.mark.maybeslow
def test_no_unchecksummed_versions():
"""Test a package for which no unchecksummed versions are available."""
versions('bzip2')
-@pytest.mark.network
+@pytest.mark.maybeslow
def test_versions_no_url():
"""Test a package with versions but without a ``url`` attribute."""
versions('graphviz')
-@pytest.mark.network
+@pytest.mark.maybeslow
def test_no_versions_no_url():
"""Test a package without versions or a ``url`` attribute."""
diff --git a/lib/spack/spack/test/util/util_gpg.py b/lib/spack/spack/test/util/util_gpg.py
index b8adbc537d..987dcf7f0e 100644
--- a/lib/spack/spack/test/util/util_gpg.py
+++ b/lib/spack/spack/test/util/util_gpg.py
@@ -65,6 +65,7 @@ fpr:::::::::ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ:"""
@pytest.mark.skipif(not spack.util.gpg.GpgConstants.user_run_dir,
reason='This test requires /var/run/user/$(id -u)')
+@pytest.mark.requires_executables('gpg2')
def test_really_long_gnupg_home_dir(tmpdir):
N = 960
diff --git a/pytest.ini b/pytest.ini
index baf163ef0b..71f563954a 100644
--- a/pytest.ini
+++ b/pytest.ini
@@ -1,10 +1,9 @@
# content of pytest.ini
[pytest]
-addopts = --durations=20 -ra
+addopts = --durations=30 -ra
testpaths = lib/spack/spack/test
python_files = *.py
markers =
db: tests that require creating a DB
- network: tests that require access to the network
maybeslow: tests that may be slow (e.g. access a lot the filesystem, etc.)
regression: tests that fix a reported bug
diff --git a/share/spack/qa/run-shell-tests b/share/spack/qa/run-shell-tests
index 8890b67d42..83838ff5ef 100755
--- a/share/spack/qa/run-shell-tests
+++ b/share/spack/qa/run-shell-tests
@@ -18,7 +18,11 @@
ORIGINAL_PATH="$PATH"
. "$(dirname $0)/setup.sh"
-check_dependencies $coverage kcov git hg svn
+if [ "$COVERAGE" = true ]; then
+ check_dependencies $coverage kcov git hg svn
+else
+ echo "COVERAGE not set to 'true' [skipping coverage]"
+fi
# Clean the environment by removing Spack from the path and getting rid of
# the spack shell function
diff --git a/share/spack/qa/run-unit-tests b/share/spack/qa/run-unit-tests
index 81d9abe247..6cef3cf679 100755
--- a/share/spack/qa/run-unit-tests
+++ b/share/spack/qa/run-unit-tests
@@ -42,4 +42,9 @@ spack -p --lines 20 spec mpileaks%gcc ^elfutils@0.170
#-----------------------------------------------------------
# Run unit tests with code coverage
#-----------------------------------------------------------
+if [[ "$ONLY_PACKAGES" == "true" ]]; then
+ echo "ONLY PACKAGE RECIPES CHANGED [skipping slow unit tests]"
+ export PYTEST_ADDOPTS='-m "not maybeslow"'
+fi
+
$coverage_run $(which spack) unit-test -x --verbose