2016-12-30 21:59:21 +00:00
|
|
|
#=============================================================================
|
|
|
|
# Project settings
|
|
|
|
#=============================================================================
|
2016-10-28 20:26:20 +00:00
|
|
|
# Only build master and develop on push; do not build every branch.
|
|
|
|
branches:
|
|
|
|
only:
|
|
|
|
- master
|
|
|
|
- develop
|
2017-01-16 02:45:38 +00:00
|
|
|
- /^releases\/.*$/
|
2016-10-28 20:26:20 +00:00
|
|
|
|
2016-12-30 21:59:21 +00:00
|
|
|
#=============================================================================
|
|
|
|
# Build matrix
|
|
|
|
#=============================================================================
|
2018-07-24 06:07:36 +00:00
|
|
|
|
2018-12-14 16:43:58 +00:00
|
|
|
dist: xenial
|
2018-07-24 06:07:36 +00:00
|
|
|
|
2017-08-19 21:52:27 +00:00
|
|
|
jobs:
|
2017-02-11 02:21:52 +00:00
|
|
|
fast_finish: true
|
2016-12-30 21:59:21 +00:00
|
|
|
include:
|
2018-07-23 08:38:09 +00:00
|
|
|
- stage: 'style checks'
|
2019-10-03 14:13:55 +00:00
|
|
|
python: '3.7'
|
2017-01-26 10:19:35 +00:00
|
|
|
os: linux
|
|
|
|
language: python
|
2017-08-19 21:52:27 +00:00
|
|
|
env: TEST_SUITE=flake8
|
2019-10-21 18:20:05 +00:00
|
|
|
# Shell integration with module files
|
|
|
|
- python: '3.7'
|
|
|
|
os: linux
|
|
|
|
language: python
|
|
|
|
env: [ TEST_SUITE=bootstrap ]
|
2018-07-23 08:38:09 +00:00
|
|
|
- stage: 'unit tests + documentation'
|
2017-08-19 21:52:27 +00:00
|
|
|
python: '2.6'
|
2018-12-14 16:43:58 +00:00
|
|
|
dist: trusty
|
2017-01-26 10:19:35 +00:00
|
|
|
os: linux
|
|
|
|
language: python
|
2019-05-10 18:24:14 +00:00
|
|
|
env: [ TEST_SUITE=unit, COVERAGE=true ]
|
2017-04-27 18:47:56 +00:00
|
|
|
- python: '2.7'
|
|
|
|
os: linux
|
|
|
|
language: python
|
2019-05-10 06:52:39 +00:00
|
|
|
env: [ TEST_SUITE=unit, COVERAGE=true ]
|
2017-03-27 01:02:56 +00:00
|
|
|
- python: '3.5'
|
|
|
|
os: linux
|
|
|
|
language: python
|
|
|
|
env: TEST_SUITE=unit
|
|
|
|
- python: '3.6'
|
|
|
|
os: linux
|
|
|
|
language: python
|
2018-08-04 01:39:43 +00:00
|
|
|
env: TEST_SUITE=unit
|
2018-07-24 06:07:36 +00:00
|
|
|
- python: '3.7'
|
|
|
|
os: linux
|
|
|
|
language: python
|
2019-05-10 06:52:39 +00:00
|
|
|
env: [ TEST_SUITE=unit, COVERAGE=true ]
|
2019-04-11 21:38:52 +00:00
|
|
|
- python: '3.7'
|
2018-07-23 08:38:09 +00:00
|
|
|
os: linux
|
|
|
|
language: python
|
|
|
|
env: TEST_SUITE=doc
|
2018-09-03 04:37:49 +00:00
|
|
|
- os: osx
|
2017-08-19 21:52:27 +00:00
|
|
|
language: generic
|
2019-05-10 06:52:39 +00:00
|
|
|
env: [ TEST_SUITE=unit, PYTHON_VERSION=2.7, COVERAGE=true ]
|
2017-08-19 21:52:27 +00:00
|
|
|
# mpich (AutotoolsPackage)
|
|
|
|
- stage: 'build tests'
|
|
|
|
python: '2.7'
|
2017-04-27 18:47:56 +00:00
|
|
|
os: linux
|
|
|
|
language: python
|
2018-08-04 01:39:43 +00:00
|
|
|
env: [ TEST_SUITE=build, 'SPEC=mpich' ]
|
2017-08-19 21:52:27 +00:00
|
|
|
# astyle (MakefilePackage)
|
2019-10-03 14:13:55 +00:00
|
|
|
- python: '3.7'
|
2017-01-26 10:19:35 +00:00
|
|
|
os: linux
|
|
|
|
language: python
|
2018-08-04 01:39:43 +00:00
|
|
|
env: [ TEST_SUITE=build, 'SPEC=astyle' ]
|
2017-08-19 21:52:27 +00:00
|
|
|
# tut (WafPackage)
|
2019-10-03 14:13:55 +00:00
|
|
|
- python: '3.7'
|
2017-01-26 10:19:35 +00:00
|
|
|
os: linux
|
|
|
|
language: python
|
2018-08-04 01:39:43 +00:00
|
|
|
env: [ TEST_SUITE=build, 'SPEC=tut' ]
|
2017-08-19 21:52:27 +00:00
|
|
|
# py-setuptools (PythonPackage)
|
2019-10-03 14:13:55 +00:00
|
|
|
- python: '3.7'
|
2017-08-19 21:52:27 +00:00
|
|
|
os: linux
|
|
|
|
language: python
|
2018-08-04 01:39:43 +00:00
|
|
|
env: [ TEST_SUITE=build, 'SPEC=py-setuptools' ]
|
2017-08-19 21:52:27 +00:00
|
|
|
# perl-dbi (PerlPackage)
|
|
|
|
# - python: '2.7'
|
|
|
|
# os: linux
|
|
|
|
# language: python
|
2018-08-04 01:39:43 +00:00
|
|
|
# env: [ TEST_SUITE=build, 'SPEC=perl-dbi' ]
|
2017-08-19 21:52:27 +00:00
|
|
|
# openjpeg (CMakePackage + external cmake)
|
2019-10-03 14:13:55 +00:00
|
|
|
- python: '3.7'
|
2017-08-19 21:52:27 +00:00
|
|
|
os: linux
|
|
|
|
language: python
|
2018-08-04 01:39:43 +00:00
|
|
|
env: [ TEST_SUITE=build, 'SPEC=openjpeg' ]
|
2017-08-19 21:52:27 +00:00
|
|
|
# r-rcpp (RPackage + external R)
|
2019-10-03 14:13:55 +00:00
|
|
|
- python: '3.7'
|
2017-08-19 21:52:27 +00:00
|
|
|
os: linux
|
|
|
|
language: python
|
2018-08-04 01:39:43 +00:00
|
|
|
env: [ TEST_SUITE=build, 'SPEC=r-rcpp' ]
|
2017-08-19 21:52:27 +00:00
|
|
|
# mpich (AutotoolsPackage)
|
2019-10-03 14:13:55 +00:00
|
|
|
- python: '3.7'
|
2017-08-19 21:52:27 +00:00
|
|
|
os: linux
|
|
|
|
language: python
|
2018-08-04 01:39:43 +00:00
|
|
|
env: [ TEST_SUITE=build, 'SPEC=mpich' ]
|
2018-12-24 01:42:09 +00:00
|
|
|
- python: '3.6'
|
|
|
|
stage: 'docker build'
|
2018-10-26 17:15:05 +00:00
|
|
|
os: linux
|
2018-12-24 01:42:09 +00:00
|
|
|
language: python
|
2018-10-26 17:15:05 +00:00
|
|
|
env: TEST_SUITE=docker
|
2018-07-24 06:07:36 +00:00
|
|
|
allow_failures:
|
2018-10-27 04:50:28 +00:00
|
|
|
- env: TEST_SUITE=docker
|
2015-11-30 05:40:23 +00:00
|
|
|
|
2018-01-18 19:06:26 +00:00
|
|
|
stages:
|
2018-07-23 08:38:09 +00:00
|
|
|
- 'style checks'
|
|
|
|
- 'unit tests + documentation'
|
2018-01-18 19:06:26 +00:00
|
|
|
- 'build tests'
|
2018-10-26 17:15:05 +00:00
|
|
|
- name: 'docker build'
|
|
|
|
if: type = push AND branch IN (develop, master)
|
2018-01-18 19:06:26 +00:00
|
|
|
|
|
|
|
|
2016-12-30 21:59:21 +00:00
|
|
|
#=============================================================================
|
|
|
|
# Environment
|
|
|
|
#=============================================================================
|
2015-11-30 06:09:11 +00:00
|
|
|
|
2016-08-31 03:07:21 +00:00
|
|
|
# Docs need graphviz to build
|
|
|
|
addons:
|
2018-12-29 05:12:02 +00:00
|
|
|
# for Linux builds, we use APT
|
2016-08-31 03:07:21 +00:00
|
|
|
apt:
|
|
|
|
packages:
|
2018-12-15 09:52:31 +00:00
|
|
|
- ccache
|
2018-12-29 20:26:16 +00:00
|
|
|
- cmake
|
2016-12-30 21:53:30 +00:00
|
|
|
- gfortran
|
2016-08-31 03:07:21 +00:00
|
|
|
- graphviz
|
2017-05-26 17:31:04 +00:00
|
|
|
- gnupg2
|
2018-12-29 20:26:16 +00:00
|
|
|
- kcov
|
|
|
|
- mercurial
|
2018-08-20 21:42:28 +00:00
|
|
|
- ninja-build
|
2018-12-29 20:26:16 +00:00
|
|
|
- perl
|
|
|
|
- perl-base
|
|
|
|
- realpath
|
2017-08-19 21:52:27 +00:00
|
|
|
- r-base
|
|
|
|
- r-base-core
|
|
|
|
- r-base-dev
|
2019-07-03 08:56:13 +00:00
|
|
|
- zsh
|
2018-12-29 05:12:02 +00:00
|
|
|
# for Mac builds, we use Homebrew
|
|
|
|
homebrew:
|
|
|
|
packages:
|
|
|
|
- python@2
|
|
|
|
- gcc
|
|
|
|
- gnupg2
|
|
|
|
- ccache
|
2019-07-03 08:56:13 +00:00
|
|
|
- dash
|
|
|
|
- kcov
|
2019-06-19 00:50:45 +00:00
|
|
|
update: true
|
2017-08-19 21:52:27 +00:00
|
|
|
|
2018-12-15 16:53:51 +00:00
|
|
|
# ~/.ccache needs to be cached directly as Travis is not taking care of it
|
|
|
|
# (possibly because we use 'language: python' and not 'language: c')
|
2018-03-06 05:49:43 +00:00
|
|
|
cache:
|
|
|
|
pip: true
|
2018-12-15 09:52:31 +00:00
|
|
|
ccache: true
|
2018-03-06 05:49:43 +00:00
|
|
|
directories:
|
|
|
|
- ~/.mirror
|
2018-12-15 16:53:51 +00:00
|
|
|
- ~/.ccache
|
2016-08-31 03:07:21 +00:00
|
|
|
|
2016-12-30 21:59:21 +00:00
|
|
|
# Work around Travis's lack of support for Python on OSX
|
|
|
|
before_install:
|
2018-09-03 03:23:22 +00:00
|
|
|
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
|
|
|
|
pip2 install --upgrade pip;
|
|
|
|
pip2 install virtualenv;
|
|
|
|
virtualenv venv;
|
|
|
|
source venv/bin/activate;
|
|
|
|
fi
|
2018-12-15 09:52:31 +00:00
|
|
|
- ccache -M 2G && ccache -z
|
2016-12-30 21:59:21 +00:00
|
|
|
|
2016-08-22 15:22:42 +00:00
|
|
|
# Install various dependencies
|
2016-01-19 17:29:39 +00:00
|
|
|
install:
|
2017-05-09 18:59:59 +00:00
|
|
|
- pip install --upgrade pip
|
2017-06-01 12:42:33 +00:00
|
|
|
- pip install --upgrade six
|
2017-05-09 18:59:59 +00:00
|
|
|
- pip install --upgrade setuptools
|
2017-01-26 10:19:35 +00:00
|
|
|
- pip install --upgrade codecov
|
unit tests: replace nose with pytest (#2502)
* Porting: substitute nose with ytest
This huge commit substitutes nose with pytest as a testing system. Things done here:
* deleted external/nose as it is no longer used
* moved mock resources in their own directory 'test/mock/'
* ported two tests (cmd/find, build_system) to pytest native syntax as an example
* build_environment, log: used monkeypatch instead of try/catch
* moved global mocking of fetch_cache to an auto-used fixture
* moved global mocking from test/__init__.py to conftest.py
* made `spack test` a wrapper around pytest
* run-unit-tests: avoid running python 2.6 tests under coverage to speed them up
* use `pytest --cov` instead of coverage run to cut down testing time
* mock/packages_test: moved mock yaml configuration to files instead of leaving it in the code as string literals
* concretize.py: ported tests to native pytest, reverted multiprocessing in pytest.ini as it was creating the wrong report for coveralls
* conftest.py, fixtures: added docstrings
* concretize_preferences.py: uses fixtures instead of subclassing MockPackagesTest
* directory_layout.py: uses fixtures instead of subclassing MockPackagesTest
* install.py: uses fixtures instead of subclassing MockPackagesTest
* optional_deps.py: uses fixtures instead of subclassing MockPackagesTest
optional_deps.py: uses fixtures instead of subclassing MockPackagesTest
* packages.py: uses fixtures instead of subclassing MockPackagesTest
* provider_index.py: uses fixtures instead of subclassing MockPackagesTest
* spec_yaml.py: uses fixtures instead of subclassing MockPackagesTest
* multimethod.py: uses fixtures instead of subclassing MockPackagesTest
* install.py: now uses mock_archive_url
* git_fetch.py: uses fixtures instead of subclassing MockPackagesTest
* hg_fetch.py: uses fixtures instead of subclassing MockPackagesTest
* svn_fetch.py, mirror.py: uses fixtures instead of subclassing MockPackagesTest
repo.py: deleted
* test_compiler_cmd.py: uses fixtures instead of subclassing MockPackagesTest
* cmd/module.py, cmd/uninstall.py: uses fixtures instead of subclassing MockDatabase
* database.py: uses fixtures instead of subclassing MockDatabase, removed mock/database
* pytest: uncluttering fixture implementations
* database: changing the scope to 'module'
* config.py: uses fixtures instead of subclassing MockPackagesTest
* spec_dag.py, spec_semantics.py: uses fixtures instead of subclassing MockPackagesTest
* stage.py: uses fixtures instead of subclassing MockPackagesTest. Removed mock directory
* pytest: added docstrings to all the fixtures
* pytest: final cleanup
* build_system_guess.py: fixed naming and docstrings as suggested by @scheibelp
* spec_syntax.py: added expected failure on parsing multiple specs closes #1976
* Add pytest and pytest-cov to Spack externals.
* Make `spack flake8` ignore externals.
* run-unit-tests runs spack test and not pytest.
* Remove all the special stuff for `spack test`
- Remove `conftest.py` magic and all the special case stuff in `bin/spack`
- Spack commands can optionally take unknown arguments, if they want to
handle them.
- `spack test` is now a command like the others.
- `spack test` now just delegates its arguments to `pytest`, but it does
it by receiving unknown arguments and NOT taking an explicit
help argument.
* Fix error in fixtures.
* Improve `spack test` command a bit.
- Now supports an approximation of the old simple interface
- Also supports full pytest options if you want them.
* Use external coverage instead of pytest-cov
* Make coverage use parallel-mode.
* change __init__.py docs to include pytest
2016-12-29 15:48:48 +00:00
|
|
|
- pip install --upgrade flake8
|
2018-06-26 19:32:32 +00:00
|
|
|
- pip install --upgrade pep8-naming
|
2018-09-03 04:22:06 +00:00
|
|
|
- if [[ "$TEST_SUITE" == "doc" ]]; then
|
|
|
|
pip install --upgrade -r lib/spack/docs/requirements.txt;
|
|
|
|
fi
|
2015-11-30 05:40:23 +00:00
|
|
|
|
2016-08-22 15:22:42 +00:00
|
|
|
before_script:
|
2015-11-30 05:40:23 +00:00
|
|
|
# Need this for the git tests to succeed.
|
|
|
|
- git config --global user.email "spack@example.com"
|
|
|
|
- git config --global user.name "Test User"
|
2016-05-11 06:45:41 +00:00
|
|
|
|
2016-01-19 17:29:39 +00:00
|
|
|
# Need this to be able to compute the list of changed files
|
2019-04-22 12:55:20 +00:00
|
|
|
- git fetch origin ${TRAVIS_BRANCH}:${TRAVIS_BRANCH}
|
2015-11-30 05:40:23 +00:00
|
|
|
|
2018-09-03 04:22:06 +00:00
|
|
|
# Set up external deps for build tests, b/c they take too long to compile
|
2018-12-15 09:52:31 +00:00
|
|
|
- if [[ "$TEST_SUITE" == "build" ]]; then
|
|
|
|
cp share/spack/qa/configuration/*.yaml etc/spack/;
|
2018-09-03 04:22:06 +00:00
|
|
|
fi
|
2017-08-19 21:52:27 +00:00
|
|
|
|
2016-12-30 21:59:21 +00:00
|
|
|
#=============================================================================
|
|
|
|
# Building
|
|
|
|
#=============================================================================
|
2018-10-26 17:15:05 +00:00
|
|
|
services:
|
|
|
|
- docker
|
|
|
|
|
2018-01-11 02:41:19 +00:00
|
|
|
script:
|
|
|
|
- share/spack/qa/run-$TEST_SUITE-tests
|
2015-11-30 05:40:23 +00:00
|
|
|
|
2018-12-15 09:52:31 +00:00
|
|
|
after_success:
|
|
|
|
- ccache -s
|
2019-07-03 08:56:13 +00:00
|
|
|
- case "$TEST_SUITE" in
|
|
|
|
unit)
|
2019-08-06 17:35:23 +00:00
|
|
|
if [[ "$COVERAGE" == "true" ]]; then
|
|
|
|
codecov --env PYTHON_VERSION
|
|
|
|
--required
|
|
|
|
--flags "${TEST_SUITE}${TRAVIS_OS_NAME}";
|
|
|
|
fi
|
2019-07-03 08:56:13 +00:00
|
|
|
;;
|
|
|
|
esac
|
2018-12-15 09:52:31 +00:00
|
|
|
|
2016-12-30 21:59:21 +00:00
|
|
|
#=============================================================================
|
|
|
|
# Notifications
|
|
|
|
#=============================================================================
|
2015-11-30 05:40:23 +00:00
|
|
|
notifications:
|
|
|
|
email:
|
2016-08-22 15:22:42 +00:00
|
|
|
recipients: tgamblin@llnl.gov
|
2015-11-30 05:40:23 +00:00
|
|
|
on_success: change
|
|
|
|
on_failure: always
|