diff options
-rw-r--r-- | .github/workflows/linux_unit_tests.yaml | 174 | ||||
-rw-r--r-- | .github/workflows/macos_unit_tests.yaml | 44 | ||||
-rw-r--r-- | .github/workflows/style_and_docs.yaml | 65 | ||||
-rw-r--r-- | .github/workflows/unit_tests.yaml | 337 | ||||
-rw-r--r-- | README.md | 3 | ||||
-rw-r--r-- | lib/spack/spack/test/ci.py | 1 | ||||
-rw-r--r-- | lib/spack/spack/test/cmd/ci.py | 3 | ||||
-rw-r--r-- | lib/spack/spack/test/cmd/env.py | 6 | ||||
-rw-r--r-- | lib/spack/spack/test/cmd/url.py | 4 | ||||
-rw-r--r-- | lib/spack/spack/test/cmd/versions.py | 15 | ||||
-rw-r--r-- | lib/spack/spack/test/util/util_gpg.py | 1 | ||||
-rw-r--r-- | pytest.ini | 3 | ||||
-rwxr-xr-x | share/spack/qa/run-shell-tests | 6 | ||||
-rwxr-xr-x | share/spack/qa/run-unit-tests | 5 |
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 @@ -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 |