Move Python 2.6 unit tests to Github Actions (#17279)
* Run Python2.6 unit tests on Github Actions * Skip url tests on Python 2.6 to reduce waiting times * Skip foreground background tests on Python 2.6 to reduce waiting times * Removed references to Travis in the documentation * Deleted install_patchelf.sh (can be installed from repo on CentOS 6)
This commit is contained in:
parent
4d25481473
commit
1707448fde
7 changed files with 55 additions and 105 deletions
17
.github/workflows/linux_unit_tests.yaml
vendored
17
.github/workflows/linux_unit_tests.yaml
vendored
|
@ -3,13 +3,12 @@ name: linux tests
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- master
|
|
||||||
- develop
|
- develop
|
||||||
- releases/**
|
- releases/**
|
||||||
pull_request:
|
pull_request:
|
||||||
branches:
|
branches:
|
||||||
- master
|
|
||||||
- develop
|
- develop
|
||||||
|
- releases/**
|
||||||
jobs:
|
jobs:
|
||||||
unittests:
|
unittests:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
@ -99,3 +98,17 @@ jobs:
|
||||||
- uses: codecov/codecov-action@v1
|
- uses: codecov/codecov-action@v1
|
||||||
with:
|
with:
|
||||||
flags: shelltests,linux
|
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
|
||||||
|
|
60
.travis.yml
60
.travis.yml
|
@ -1,60 +0,0 @@
|
||||||
# Only build releases and develop on push; do not build every branch.
|
|
||||||
branches:
|
|
||||||
only:
|
|
||||||
- develop
|
|
||||||
- /^releases\/.*$/
|
|
||||||
|
|
||||||
language: python
|
|
||||||
python: '2.6'
|
|
||||||
dist: trusty
|
|
||||||
os: linux
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
packages:
|
|
||||||
- gfortran
|
|
||||||
- graphviz
|
|
||||||
- gnupg2
|
|
||||||
- kcov
|
|
||||||
- mercurial
|
|
||||||
- ninja-build
|
|
||||||
- realpath
|
|
||||||
- zsh
|
|
||||||
- fish
|
|
||||||
|
|
||||||
before_install:
|
|
||||||
- if [[ "$TRAVIS_DIST" == "trusty" ]]; then
|
|
||||||
share/spack/qa/install_patchelf.sh;
|
|
||||||
else
|
|
||||||
sudo apt-get update;
|
|
||||||
sudo apt-get -y install patchelf;
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Install various dependencies
|
|
||||||
install:
|
|
||||||
- pip install --upgrade pip
|
|
||||||
- pip install --upgrade six
|
|
||||||
- pip install --upgrade setuptools
|
|
||||||
- pip install --upgrade flake8
|
|
||||||
- pip install --upgrade pep8-naming
|
|
||||||
|
|
||||||
before_script:
|
|
||||||
# Need this for the git tests to succeed.
|
|
||||||
- git config --global user.email "spack@example.com"
|
|
||||||
- git config --global user.name "Test User"
|
|
||||||
|
|
||||||
# Need this to be able to compute the list of changed files
|
|
||||||
- git fetch origin ${TRAVIS_BRANCH}:${TRAVIS_BRANCH}
|
|
||||||
|
|
||||||
script:
|
|
||||||
- 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:
|
|
||||||
email:
|
|
||||||
recipients:
|
|
||||||
- tgamblin@llnl.gov
|
|
||||||
- massimiliano.culpo@gmail.com
|
|
||||||
on_success: change
|
|
||||||
on_failure: always
|
|
|
@ -4,7 +4,6 @@
|
||||||
[![Linux Tests](https://github.com/spack/spack/workflows/linux%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)
|
[![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)
|
[![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)
|
[![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)
|
[![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)
|
[![Slack](https://spackpm.herokuapp.com/badge.svg)](https://spackpm.herokuapp.com)
|
||||||
|
@ -74,8 +73,8 @@ When you send your request, make ``develop`` the destination branch on the
|
||||||
|
|
||||||
Your PR must pass Spack's unit tests and documentation tests, and must be
|
Your PR must pass Spack's unit tests and documentation tests, and must be
|
||||||
[PEP 8](https://www.python.org/dev/peps/pep-0008/) compliant. We enforce
|
[PEP 8](https://www.python.org/dev/peps/pep-0008/) compliant. We enforce
|
||||||
these guidelines with [Travis CI](https://travis-ci.org/spack/spack). To
|
these guidelines with our CI process. To run these tests locally, and for
|
||||||
run these tests locally, and for helpful tips on git, see our
|
helpful tips on git, see our
|
||||||
[Contribution Guide](http://spack.readthedocs.io/en/latest/contribution_guide.html).
|
[Contribution Guide](http://spack.readthedocs.io/en/latest/contribution_guide.html).
|
||||||
|
|
||||||
Spack's `develop` branch has the latest contributions. Pull requests
|
Spack's `develop` branch has the latest contributions. Pull requests
|
||||||
|
|
|
@ -48,7 +48,7 @@ information.
|
||||||
Continuous Integration
|
Continuous Integration
|
||||||
----------------------
|
----------------------
|
||||||
|
|
||||||
Spack uses `Travis CI <https://travis-ci.org/spack/spack>`_ for Continuous Integration
|
Spack uses `Github Actions <https://docs.github.com/en/actions>`_ for Continuous Integration
|
||||||
testing. This means that every time you submit a pull request, a series of tests will
|
testing. This means that every time you submit a pull request, a series of tests will
|
||||||
be run to make sure you didn't accidentally introduce any bugs into Spack. **Your PR
|
be run to make sure you didn't accidentally introduce any bugs into Spack. **Your PR
|
||||||
will not be accepted until it passes all of these tests.** While you can certainly wait
|
will not be accepted until it passes all of these tests.** While you can certainly wait
|
||||||
|
@ -57,22 +57,21 @@ locally to speed up the review process.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
Oftentimes, Travis will fail for reasons other than a problem with your PR.
|
Oftentimes, CI will fail for reasons other than a problem with your PR.
|
||||||
For example, apt-get, pip, or homebrew will fail to download one of the
|
For example, apt-get, pip, or homebrew will fail to download one of the
|
||||||
dependencies for the test suite, or a transient bug will cause the unit tests
|
dependencies for the test suite, or a transient bug will cause the unit tests
|
||||||
to timeout. If Travis fails, click the "Details" link and click on the test(s)
|
to timeout. If any job fails, click the "Details" link and click on the test(s)
|
||||||
that is failing. If it doesn't look like it is failing for reasons related to
|
that is failing. If it doesn't look like it is failing for reasons related to
|
||||||
your PR, you have two options. If you have write permissions for the Spack
|
your PR, you have two options. If you have write permissions for the Spack
|
||||||
repository, you should see a "Restart job" button on the right-hand side. If
|
repository, you should see a "Restart workflow" button on the right-hand side. If
|
||||||
not, you can close and reopen your PR to rerun all of the tests. If the same
|
not, you can close and reopen your PR to rerun all of the tests. If the same
|
||||||
test keeps failing, there may be a problem with your PR. If you notice that
|
test keeps failing, there may be a problem with your PR. If you notice that
|
||||||
every recent PR is failing with the same error message, it may be that Travis
|
every recent PR is failing with the same error message, it may be that an issue
|
||||||
is down or one of Spack's dependencies put out a new release that is causing
|
occurred with the CI infrastructure or one of Spack's dependencies put out a
|
||||||
problems. If this is the case, please file an issue.
|
new release that is causing problems. If this is the case, please file an issue.
|
||||||
|
|
||||||
|
|
||||||
If you take a look in ``$SPACK_ROOT/.travis.yml``, you'll notice that we test
|
We currently test against Python 2.6, 2.7, and 3.5-3.7 on both macOS and Linux and
|
||||||
against Python 2.6, 2.7, and 3.4-3.7 on both macOS and Linux. We currently
|
|
||||||
perform 3 types of tests:
|
perform 3 types of tests:
|
||||||
|
|
||||||
.. _cmd-spack-test:
|
.. _cmd-spack-test:
|
||||||
|
@ -106,7 +105,7 @@ time. For example, this would run all the tests in
|
||||||
|
|
||||||
.. code-block:: console
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack test architecture.py
|
$ spack test lib/spack/spack/test/architecture.py
|
||||||
|
|
||||||
And this would run the ``test_platform`` test from that file:
|
And this would run the ``test_platform`` test from that file:
|
||||||
|
|
||||||
|
@ -116,7 +115,7 @@ And this would run the ``test_platform`` test from that file:
|
||||||
|
|
||||||
This allows you to develop iteratively: make a change, test that change,
|
This allows you to develop iteratively: make a change, test that change,
|
||||||
make another change, test that change, etc. We use `pytest
|
make another change, test that change, etc. We use `pytest
|
||||||
<http://pytest.org/>`_ as our tests fromework, and these types of
|
<http://pytest.org/>`_ as our tests framework, and these types of
|
||||||
arguments are just passed to the ``pytest`` command underneath. See `the
|
arguments are just passed to the ``pytest`` command underneath. See `the
|
||||||
pytest docs
|
pytest docs
|
||||||
<http://doc.pytest.org/en/latest/usage.html#specifying-tests-selecting-tests>`_
|
<http://doc.pytest.org/en/latest/usage.html#specifying-tests-selecting-tests>`_
|
||||||
|
@ -144,7 +143,7 @@ You can combine these with ``pytest`` arguments to restrict which tests
|
||||||
you want to know about. For example, to see just the tests in
|
you want to know about. For example, to see just the tests in
|
||||||
``architecture.py``:
|
``architecture.py``:
|
||||||
|
|
||||||
.. command-output:: spack test --list-long architecture.py
|
.. command-output:: spack test --list-long lib/spack/spack/test/architecture.py
|
||||||
|
|
||||||
You can also combine any of these options with a ``pytest`` keyword
|
You can also combine any of these options with a ``pytest`` keyword
|
||||||
search. For example, to see the names of all tests that have "spec"
|
search. For example, to see the names of all tests that have "spec"
|
||||||
|
@ -160,7 +159,7 @@ argument to ``pytest``:
|
||||||
|
|
||||||
.. code-block:: console
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack test -s architecture.py::test_platform
|
$ spack test -s spack test --list-long lib/spack/spack/test/architecture.py::test_platform
|
||||||
|
|
||||||
Unit tests are crucial to making sure bugs aren't introduced into
|
Unit tests are crucial to making sure bugs aren't introduced into
|
||||||
Spack. If you are modifying core Spack libraries or adding new
|
Spack. If you are modifying core Spack libraries or adding new
|
||||||
|
@ -173,7 +172,7 @@ how to write tests!
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
You may notice the ``share/spack/qa/run-unit-tests`` script in the
|
You may notice the ``share/spack/qa/run-unit-tests`` script in the
|
||||||
repository. This script is designed for Travis CI. It runs the unit
|
repository. This script is designed for CI. It runs the unit
|
||||||
tests and reports coverage statistics back to Codecov. If you want to
|
tests and reports coverage statistics back to Codecov. If you want to
|
||||||
run the unit tests yourself, we suggest you use ``spack test``.
|
run the unit tests yourself, we suggest you use ``spack test``.
|
||||||
|
|
||||||
|
@ -246,7 +245,7 @@ to update them.
|
||||||
|
|
||||||
Try fixing flake8 errors in reverse order. This eliminates the need for
|
Try fixing flake8 errors in reverse order. This eliminates the need for
|
||||||
multiple runs of ``spack flake8`` just to re-compute line numbers and
|
multiple runs of ``spack flake8`` just to re-compute line numbers and
|
||||||
makes it much easier to fix errors directly off of the Travis output.
|
makes it much easier to fix errors directly off of the CI output.
|
||||||
|
|
||||||
.. warning::
|
.. warning::
|
||||||
|
|
||||||
|
@ -338,7 +337,7 @@ your PR is accepted.
|
||||||
There is also a ``run-doc-tests`` script in ``share/spack/qa``. The only
|
There is also a ``run-doc-tests`` script in ``share/spack/qa``. The only
|
||||||
difference between running this script and running ``make`` by hand is that
|
difference between running this script and running ``make`` by hand is that
|
||||||
the script will exit immediately if it encounters an error or warning. This
|
the script will exit immediately if it encounters an error or warning. This
|
||||||
is necessary for Travis CI. If you made a lot of documentation changes, it is
|
is necessary for CI. If you made a lot of documentation changes, it is
|
||||||
much quicker to run ``make`` by hand so that you can see all of the warnings
|
much quicker to run ``make`` by hand so that you can see all of the warnings
|
||||||
at once.
|
at once.
|
||||||
|
|
||||||
|
@ -402,7 +401,7 @@ and allow you to see coverage line-by-line when viewing the Spack repository.
|
||||||
If you are new to Spack, a great way to get started is to write unit tests to
|
If you are new to Spack, a great way to get started is to write unit tests to
|
||||||
increase coverage!
|
increase coverage!
|
||||||
|
|
||||||
Unlike with Travis, Codecov tests are not required to pass in order for your
|
Unlike with CI on Github Actions Codecov tests are not required to pass in order for your
|
||||||
PR to be merged. If you modify core Spack libraries, we would greatly
|
PR to be merged. If you modify core Spack libraries, we would greatly
|
||||||
appreciate unit tests that cover these changed lines. Otherwise, we have no
|
appreciate unit tests that cover these changed lines. Otherwise, we have no
|
||||||
way of knowing whether or not your changes introduce a bug. If you make
|
way of knowing whether or not your changes introduce a bug. If you make
|
||||||
|
|
|
@ -2,8 +2,9 @@
|
||||||
# Spack Project Developers. See the top-level COPYRIGHT file for details.
|
# Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|
||||||
import re
|
import re
|
||||||
|
import sys
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
import spack.repo
|
import spack.repo
|
||||||
|
@ -12,6 +13,7 @@
|
||||||
from spack.cmd.url import name_parsed_correctly, version_parsed_correctly
|
from spack.cmd.url import name_parsed_correctly, version_parsed_correctly
|
||||||
from spack.cmd.url import url_summary
|
from spack.cmd.url import url_summary
|
||||||
|
|
||||||
|
|
||||||
url = SpackCommand('url')
|
url = SpackCommand('url')
|
||||||
|
|
||||||
|
|
||||||
|
@ -70,6 +72,11 @@ def test_url_with_no_version_fails():
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.network
|
@pytest.mark.network
|
||||||
|
@pytest.mark.skipif(
|
||||||
|
sys.version_info < (2, 7),
|
||||||
|
reason="Python 2.6 tests are run in a container, where "
|
||||||
|
"networking is super slow"
|
||||||
|
)
|
||||||
def test_url_list():
|
def test_url_list():
|
||||||
out = url('list')
|
out = url('list')
|
||||||
total_urls = len(out.split('\n'))
|
total_urls = len(out.split('\n'))
|
||||||
|
@ -100,6 +107,11 @@ def test_url_list():
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.network
|
@pytest.mark.network
|
||||||
|
@pytest.mark.skipif(
|
||||||
|
sys.version_info < (2, 7),
|
||||||
|
reason="Python 2.6 tests are run in a container, where "
|
||||||
|
"networking is super slow"
|
||||||
|
)
|
||||||
def test_url_summary():
|
def test_url_summary():
|
||||||
"""Test the URL summary command."""
|
"""Test the URL summary command."""
|
||||||
# test url_summary, the internal function that does the work
|
# test url_summary, the internal function that does the work
|
||||||
|
@ -126,6 +138,11 @@ def test_url_summary():
|
||||||
assert out_correct_versions == correct_versions
|
assert out_correct_versions == correct_versions
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.skipif(
|
||||||
|
sys.version_info < (2, 7),
|
||||||
|
reason="Python 2.6 tests are run in a container, where "
|
||||||
|
"networking is super slow"
|
||||||
|
)
|
||||||
def test_url_stats(capfd):
|
def test_url_stats(capfd):
|
||||||
with capfd.disabled():
|
with capfd.disabled():
|
||||||
output = url('stats')
|
output = url('stats')
|
||||||
|
|
|
@ -389,6 +389,10 @@ def mock_shell_v_v_no_termios(proc, ctl, **kwargs):
|
||||||
(mock_shell_v_v, nullcontext),
|
(mock_shell_v_v, nullcontext),
|
||||||
(mock_shell_v_v_no_termios, no_termios),
|
(mock_shell_v_v_no_termios, no_termios),
|
||||||
])
|
])
|
||||||
|
@pytest.mark.skipif(
|
||||||
|
sys.version_info < (2, 7),
|
||||||
|
reason="Python 2.6 tests are run in a container, where this fails often"
|
||||||
|
)
|
||||||
def test_foreground_background_output(
|
def test_foreground_background_output(
|
||||||
test_fn, capfd, termios_on_or_off, tmpdir):
|
test_fn, capfd, termios_on_or_off, tmpdir):
|
||||||
"""Tests hitting 'v' toggles output, and that force_echo works."""
|
"""Tests hitting 'v' toggles output, and that force_echo works."""
|
||||||
|
|
|
@ -1,22 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other
|
|
||||||
# Spack Project Developers. See the top-level COPYRIGHT file for details.
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
|
||||||
|
|
||||||
#
|
|
||||||
# Description:
|
|
||||||
# Install patchelf for use in buildcache unit tests
|
|
||||||
#
|
|
||||||
# Usage:
|
|
||||||
# install-patchelf.sh
|
|
||||||
#
|
|
||||||
set -ex
|
|
||||||
if [ "$TRAVIS_OS_NAME" = "linux" ]; then
|
|
||||||
olddir=$PWD
|
|
||||||
cd /tmp
|
|
||||||
wget https://github.com/NixOS/patchelf/archive/0.10.tar.gz
|
|
||||||
tar -xvf 0.10.tar.gz
|
|
||||||
cd patchelf-0.10 && ./bootstrap.sh && ./configure --prefix=/usr && make && sudo make install && cd $olddir
|
|
||||||
fi
|
|
Loading…
Reference in a new issue