From 239b709f97028d3595f615e914fc4662ae48925f Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Tue, 23 Jun 2020 15:24:02 +0200 Subject: Added unit tests to Github Actions (#16610) * Added unit tests to Github Actions * Set user e-mail and name for git tests to succeed * Simplify setup.sh logic * Replicate Travis script on Github Actions * Update flags since '.' is not allowed * Added badge, simplified workflow * Remove pinning of coverage * Remove unit tests run on Github Actions from Travis --- .github/workflows/linux_unit_tests.yaml | 61 +++++++++++++++++++++++++++++++++ .travis.yml | 21 ------------ README.md | 5 +-- share/spack/qa/setup.sh | 15 ++------ 4 files changed, 67 insertions(+), 35 deletions(-) create mode 100644 .github/workflows/linux_unit_tests.yaml diff --git a/.github/workflows/linux_unit_tests.yaml b/.github/workflows/linux_unit_tests.yaml new file mode 100644 index 0000000000..0fe20200ad --- /dev/null +++ b/.github/workflows/linux_unit_tests.yaml @@ -0,0 +1,61 @@ +name: linux tests + +on: + push: + branches: + - master + - develop + pull_request: + branches: + - master + - develop +jobs: + unittests: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: [2.7, 3.5, 3.6, 3.7, 3.8] + + steps: + - uses: actions/checkout@v2 + - name: Setup Python ${{ matrix.python-version }} + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + - name: Install System packages + run: | + sudo apt-get -y update + sudo apt-get install -y coreutils gfortran graphviz gnupg2 mercurial ninja-build patchelf + # 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: 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: Run unit tests + env: + COVERAGE: true + run: | + share/spack/qa/run-unit-tests + coverage combine + coverage xml + - name: Upload to codecov.io + uses: codecov/codecov-action@v1 + with: + flags: unittests,linux diff --git a/.travis.yml b/.travis.yml index 8107ad876d..b59d1666d8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -41,27 +41,6 @@ jobs: - realpath - zsh env: [ TEST_SUITE=unit, COVERAGE=true ] - - python: '2.7' - os: linux - language: python - env: [ TEST_SUITE=unit, COVERAGE=true, KCOV_VERSION=34 ] - - python: '3.5' - os: linux - dist: xenial - language: python - env: TEST_SUITE=unit - - python: '3.6' - os: linux - language: python - env: TEST_SUITE=unit - - python: '3.7' - os: linux - language: python - env: TEST_SUITE=unit - - python: '3.8' - os: linux - language: python - env: [ TEST_SUITE=unit, COVERAGE=true, KCOV_VERSION=34 ] - python: '3.8' os: linux language: python diff --git a/README.md b/README.md index a2d704e6c2..d278378ce7 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,10 @@ # Spack Spack -[![](https://github.com/spack/spack/workflows/macos%20tests/badge.svg)](https://github.com/spack/spack/actions) -[![Build Status](https://travis-ci.com/spack/spack.svg?branch=develop)](https://travis-ci.com/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) [![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) +[![Build Status](https://travis-ci.com/spack/spack.svg?branch=develop)](https://travis-ci.com/spack/spack) [![codecov](https://codecov.io/gh/spack/spack/branch/develop/graph/badge.svg)](https://codecov.io/gh/spack/spack) [![Read the Docs](https://readthedocs.org/projects/spack/badge/?version=latest)](https://spack.readthedocs.io) [![Slack](https://spackpm.herokuapp.com/badge.svg)](https://spackpm.herokuapp.com) diff --git a/share/spack/qa/setup.sh b/share/spack/qa/setup.sh index 61fb2a7706..6536479015 100755 --- a/share/spack/qa/setup.sh +++ b/share/spack/qa/setup.sh @@ -20,24 +20,15 @@ export SPACK_ROOT=$(realpath "$QA_DIR/../../..") coverage="" coverage_run="" -# bash coverage depends on some other factors -- there are issues with -# kcov for Python 2.6, unit tests, and build tests. -if [[ $TEST_SUITE == unit && # kcov segfaults for the MPICH build test - $TRAVIS_OS_NAME == linux && - $TRAVIS_PYTHON_VERSION != 2.6 ]]; -then - BASH_COVERAGE="true" -else - BASH_COVERAGE="false" -fi - # Set up some variables for running coverage tests. if [[ "$COVERAGE" == "true" ]]; then # these set up coverage for Python coverage=coverage coverage_run="coverage run" - if [ "$BASH_COVERAGE" = true ]; then + # 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) -- cgit v1.2.3-60-g2f50