summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMassimiliano Culpo <massimiliano.culpo@gmail.com>2020-07-01 18:58:53 +0200
committerTodd Gamblin <tgamblin@llnl.gov>2020-08-13 00:30:51 -0700
commitfc94dde3fc471bc765494387e9d86d1137dbf99a (patch)
tree8f7369622e0150adcf3d88734f75854b08b2ff86
parentc064088cf3ab23f74791f49c587a301144b5c3a3 (diff)
downloadspack-fc94dde3fc471bc765494387e9d86d1137dbf99a.tar.gz
spack-fc94dde3fc471bc765494387e9d86d1137dbf99a.tar.bz2
spack-fc94dde3fc471bc765494387e9d86d1137dbf99a.tar.xz
spack-fc94dde3fc471bc765494387e9d86d1137dbf99a.zip
Moved flake8, shell and documentation tests to Github Action (#17328)
* Move flake8 tests on Github Actions * Move shell test to Github Actions * Moved documentation build to Github Action * Don't run coverage on Python 2.6 Since we get connection errors consistently on Travis when trying to upload coverage results for Python 2.6, avoid computing coverage entirely to speed-up tests.
-rw-r--r--.github/workflows/linux_unit_tests.yaml80
-rw-r--r--.travis.yml119
-rw-r--r--lib/spack/spack/test/llnl/util/lock.py2
-rwxr-xr-xshare/spack/qa/run-shell-tests2
-rwxr-xr-xshare/spack/qa/run-unit-tests6
-rwxr-xr-xshare/spack/qa/setup.sh16
6 files changed, 100 insertions, 125 deletions
diff --git a/.github/workflows/linux_unit_tests.yaml b/.github/workflows/linux_unit_tests.yaml
index 3130bfa36e..78fd0e8ce0 100644
--- a/.github/workflows/linux_unit_tests.yaml
+++ b/.github/workflows/linux_unit_tests.yaml
@@ -60,3 +60,83 @@ jobs:
uses: codecov/codecov-action@v1
with:
flags: unittests,linux
+ flake8:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions/setup-python@v2
+ with:
+ python-version: 3.8
+ - name: Install Python packages
+ run: |
+ pip install --upgrade pip six setuptools flake8
+ - name: Setup git configuration
+ run: |
+ # Need this for the git tests to succeed.
+ git --version
+ git config --global user.email "spack@example.com"
+ git config --global user.name "Test User"
+ git fetch -u origin develop:develop
+ - name: Run flake8 tests
+ run: |
+ share/spack/qa/run-flake8-tests
+ shell:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions/setup-python@v2
+ with:
+ python-version: 3.8
+ - name: Install System packages
+ run: |
+ sudo apt-get -y update
+ sudo apt-get install -y coreutils gfortran gnupg2 mercurial ninja-build patchelf zsh fish
+ # Needed for kcov
+ sudo apt-get -y install cmake binutils-dev libcurl4-openssl-dev 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
+ git config --global user.email "spack@example.com"
+ git config --global user.name "Test User"
+ git fetch -u origin develop:develop
+ - 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
+ - name: Upload to codecov.io
+ uses: codecov/codecov-action@v1
+ with:
+ flags: shelltests,linux
+ documentation:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions/setup-python@v2
+ with:
+ python-version: 3.8
+ - 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/.travis.yml b/.travis.yml
index 5d8b793758..df4262bf1e 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,6 +1,3 @@
-#=============================================================================
-# Project settings
-#=============================================================================
# Only build master and develop on push; do not build every branch.
branches:
only:
@@ -8,107 +5,30 @@ branches:
- develop
- /^releases\/.*$/
-#=============================================================================
-# Build matrix
-#=============================================================================
-
-dist: bionic
-
-jobs:
- fast_finish: true
- include:
- - stage: 'style checks'
- python: '3.8'
- os: linux
- language: python
- env: TEST_SUITE=flake8
- - stage: 'unit tests + documentation'
- python: '2.6'
- dist: trusty
- os: linux
- language: python
- addons:
- apt:
- # Everything but patchelf, that is not available for trusty
- packages:
- - ccache
- - gfortran
- - graphviz
- - gnupg2
- - kcov
- - mercurial
- - ninja-build
- - realpath
- - zsh
- - fish
- env: [ TEST_SUITE=unit, COVERAGE=true ]
- - python: '3.8'
- os: linux
- language: python
- env: [ TEST_SUITE=shell, COVERAGE=true, KCOV_VERSION=38 ]
- - python: '3.8'
- os: linux
- language: python
- env: TEST_SUITE=doc
-
-stages:
- - 'style checks'
- - 'unit tests + documentation'
-
-
-#=============================================================================
-# Environment
-#=============================================================================
-
-# Docs need graphviz to build
+language: python
+python: '2.6'
+dist: trusty
+os: linux
addons:
- # for Linux builds, we use APT
apt:
packages:
- - ccache
- - coreutils
- gfortran
- graphviz
- gnupg2
+ - kcov
- mercurial
- ninja-build
- - patchelf
+ - realpath
- zsh
- fish
- update: true
-
-# ~/.ccache needs to be cached directly as Travis is not taking care of it
-# (possibly because we use 'language: python' and not 'language: c')
-cache:
- pip: true
- ccache: true
- directories:
- - ~/.ccache
-
-before_install:
- - ccache -M 2G && ccache -z
- # Install kcov manually, since it's not packaged for bionic beaver
- - if [[ "$KCOV_VERSION" ]]; then
- sudo apt-get -y install cmake binutils-dev libcurl4-openssl-dev zlib1g-dev libdw-dev libiberty-dev;
- 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;
- fi
# Install various dependencies
install:
- pip install --upgrade pip
- pip install --upgrade six
- pip install --upgrade setuptools
- - pip install --upgrade codecov coverage==4.5.4
- pip install --upgrade flake8
- pip install --upgrade pep8-naming
- - if [[ "$TEST_SUITE" == "doc" ]]; then
- pip install --upgrade -r lib/spack/docs/requirements.txt;
- fi
before_script:
# Need this for the git tests to succeed.
@@ -118,31 +38,12 @@ before_script:
# Need this to be able to compute the list of changed files
- git fetch origin ${TRAVIS_BRANCH}:${TRAVIS_BRANCH}
-#=============================================================================
-# Building
-#=============================================================================
script:
- - share/spack/qa/run-$TEST_SUITE-tests
-
-after_success:
- - ccache -s
- - case "$TEST_SUITE" in
- unit)
- if [[ "$COVERAGE" == "true" ]]; then
- codecov --env PYTHON_VERSION
- --required
- --flags "${TEST_SUITE}${TRAVIS_OS_NAME}";
- fi
- ;;
- shell)
- codecov --env PYTHON_VERSION
- --required
- --flags "${TEST_SUITE}${TRAVIS_OS_NAME}";
- esac
+ - python bin/spack -h
+ - python bin/spack help -a
+ - python bin/spack -p --lines 20 spec mpileaks%gcc ^elfutils@0.170
+ - python bin/spack test -x --verbose
-#=============================================================================
-# Notifications
-#=============================================================================
notifications:
email:
recipients:
diff --git a/lib/spack/spack/test/llnl/util/lock.py b/lib/spack/spack/test/llnl/util/lock.py
index a959ea0c73..b2b7cf85ac 100644
--- a/lib/spack/spack/test/llnl/util/lock.py
+++ b/lib/spack/spack/test/llnl/util/lock.py
@@ -1143,8 +1143,6 @@ def test_nested_reads(lock_path):
assert vals['read'] == 1
-@pytest.mark.skipif('macos' in os.environ.get('GITHUB_WORKFLOW', ''),
- reason="Skip failing test for GA on MacOS")
def test_lock_debug_output(lock_path):
host = socket.getfqdn()
diff --git a/share/spack/qa/run-shell-tests b/share/spack/qa/run-shell-tests
index 126e639186..c5c3425a8e 100755
--- a/share/spack/qa/run-shell-tests
+++ b/share/spack/qa/run-shell-tests
@@ -18,7 +18,7 @@
ORIGINAL_PATH="$PATH"
. "$(dirname $0)/setup.sh"
-check_dependencies $coverage git hg svn
+check_dependencies $coverage kcov git hg svn
# 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 7c4abb1413..c529f8297e 100755
--- a/share/spack/qa/run-unit-tests
+++ b/share/spack/qa/run-unit-tests
@@ -37,11 +37,7 @@ bin/spack -h
bin/spack help -a
# Profile and print top 20 lines for a simple call to spack spec
-if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
- spack -p --lines 20 spec openmpi
-else
- spack -p --lines 20 spec mpileaks%gcc ^elfutils@0.170
-fi
+spack -p --lines 20 spec mpileaks%gcc ^elfutils@0.170
#-----------------------------------------------------------
# Run unit tests with code coverage
diff --git a/share/spack/qa/setup.sh b/share/spack/qa/setup.sh
index 6536479015..34b426dcd7 100755
--- a/share/spack/qa/setup.sh
+++ b/share/spack/qa/setup.sh
@@ -26,14 +26,11 @@ if [[ "$COVERAGE" == "true" ]]; then
coverage=coverage
coverage_run="coverage run"
- # bash coverage depends on some other factors -- there are issues with
- # kcov for Python 2.6, unit tests, and build tests.
- if [[ $TRAVIS_PYTHON_VERSION != 2.6 ]]; then
- mkdir -p coverage
- cc_script="$SPACK_ROOT/lib/spack/env/cc"
- bashcov=$(realpath ${QA_DIR}/bashcov)
- sed -i~ "s@#\!/bin/bash@#\!${bashcov}@" "$cc_script"
- fi
+ # bash coverage depends on some other factors
+ mkdir -p coverage
+ cc_script="$SPACK_ROOT/lib/spack/env/cc"
+ bashcov=$(realpath ${QA_DIR}/bashcov)
+ sed -i~ "s@#\!/bin/bash@#\!${bashcov}@" "$cc_script"
fi
#
@@ -74,6 +71,9 @@ check_dependencies() {
spack_package=mercurial
pip_package=mercurial
;;
+ kcov)
+ spack_package=kcov
+ ;;
svn)
spack_package=subversion
;;