-
Notifications
You must be signed in to change notification settings - Fork 37
/
.travis.yml
139 lines (115 loc) · 4.85 KB
/
.travis.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
branches:
only:
- main
- /^releases\/.*/
language: python
python:
- 2.7
- 3.5
- 3.6
compiler:
- g++
matrix:
# cf. https://blog.travis-ci.com/2019-08-07-extensive-python-testing-on-travis-ci
include:
# Add 3.7 build by hand. This is the officially supported method for now.
- python: 3.7
dist: xenial
name: "Python: 3.7"
# Note: All the rest are technically allowed to fail. This is mostly so the
# Travis runs can finish faster, since they often only do 4 at a time.
# But we should periodically check them and try to make sure they all work.
# Add a linux build with clang
- python: 3.6
env:
- COMPILER=clang
- CC=clang
- CXX=clang++
- LD_LIBRARY_PATH=/usr/local/clang/lib:$LD_LIBRARY_PATH
name: Linux clang (Python 3.6)
# Add a few macos builds
# Here, the python version is set by the xcode version.
- os: osx
osx_image: xcode9.3 # Has python 2.7.14_2
language: shell # language: python is an error on macos
env:
- TRAVIS_PYTHON_VERSION=2.7
# Note: Use --user to supersede existing versions rather than sudo pip -U ...
# since existing versions of some packages (e.g. numpy) live in /System/
# directory where delete operations are forbidden.
- __USER=--user
- PATH=/Users/travis/Library/Python/2.7/bin:$PATH
name: OSX (Python 2.7)
- os: osx
osx_image: xcode9.4 # Has python 3.6.5
language: shell
env:
- TRAVIS_PYTHON_VERSION=3.6
name: OSX (Python 3.6)
- os: osx
osx_image: xcode11 # Has python 3.7.4
language: shell
env:
- TRAVIS_PYTHON_VERSION=3.7
name: OSX (Python 3.7)
# Check 3.8-dev, but less concerned if this fails.
- python: 3.8-dev
dist: xenial
name: "Python: 3.8-dev"
# For grins, add pypy.
- python: pypy3
name: PyPy
env:
- TRAVIS_PYPY=1
allow_failures:
- name: Linux clang (Python 3.6)
- os: osx
- python: 3.8-dev
- python: pypy3
fast_finish: true
before_install:
- if [[ $TRAVIS_OS_NAME == "linux" ]]; then sudo -H apt-get -qq update; sudo -H apt-get install -y libffi-dev openmpi-bin libopenmpi-dev; fi
- if [[ $TRAVIS_OS_NAME == "osx" ]]; then brew update; brew install libffi openmpi || true; fi
# On OSX, need to use pip3, not pip and python3, not python
- if [[ $TRAVIS_OS_NAME == "osx" && $TRAVIS_PYTHON_VERSION > 3.0 ]]; then export PIP=pip3; export PYTHON=python3; else export PIP=pip; export PYTHON=python; fi
- $PIP --version
- $PYTHON --version
install:
# Update pip executable. (Needs sudo on some systems.)
- sudo -H $PIP install -U pip
# Install dependencies
- $PIP install -U $__USER numpy # Do this first to clarify potential conflicts
- $PIP install -U $__USER -r requirements.txt
# Extra packages only needed for testing:
# fitsio is technically optional, but better to do those tests on all systems.
- $PIP install -U $__USER codecov fitsio mpi4py
# Pin some versions for py2.7
- if [[ $TRAVIS_PYTHON_VERSION < 3.0 ]]; then $PIP install -U $__USER pytest==3.2 pytest-cov==2.4; fi
- if [[ $TRAVIS_PYTHON_VERSION > 3.0 ]]; then $PIP install -U $__USER pytest pytest-cov mockmpi; fi
# Only add optional ones for py3.7
# They are slow to install, especially 3.8 and pypy, where some are installed from scratch.
- if [[ $TRAVIS_PYTHON_VERSION == 3.7 ]]; then $PIP install -U $__USER matplotlib nbval ipykernel scipy pandas guppy3 h5py; fi
# halotools doesn't work anymore in 3.x (because of astropy change), so do this in 2.7.
# And also test h5py here.
- if [[ $TRAVIS_PYTHON_VERSION == 2.7 ]]; then $PIP install -U $__USER h5py halotools; fi
- $PIP list
script:
- $PYTHON setup.py install $__USER
- cd tests
- pytest --cov=treecorr test*.py
# Don't do coverage for mpi tests. Those are included in the main tests with mock_mpi.
# These just check that the code works when run in a real mpi session.
- if [[ $TRAVIS_PYTHON_VERSION > 3.0 ]]; then mpiexec -n 2 $PYTHON -u mpi_test.py >& mpi2.out; fi
- if [[ $TRAVIS_PYTHON_VERSION > 3.0 ]]; then mpiexec -n 1 $PYTHON -u mpi_test.py >& mpi1.out; fi
- if [[ $TRAVIS_PYTHON_VERSION == 3.7 ]]; then pytest --nbval Tutorial.ipynb --sanitize-with sanitize.cfg --current-env; fi
after_success:
- codecov
cache:
ccache: true
pip: true
directories:
- $HOME/Library/Caches/Homebrew
before_cache:
- rm -rfv $HOME/.cache/pip/log
- rm -rfv $HOME/.cache/pip/http
- if [[ $TRAVIS_OS_NAME == "osx" ]]; then brew cleanup; fi