@@ -8,38 +8,39 @@ dist: xenial
88sudo : true
99language : python
1010
11- cache :
12- directories :
13- - $HOME/.cache/pip
11+ cache : pip
1412env :
1513 global :
16- - DEPENDS="six numpy scipy matplotlib h5py pillow pydicom "
17- - OPTIONAL_DEPENDS=" "
14+ - SETUP_REQUIRES="pip setuptools>=30.3.0 wheel "
15+ - DEPENDS="numpy scipy matplotlib h5py pillow pydicom indexed_gzip "
1816 - INSTALL_TYPE="setup"
1917 - CHECK_TYPE="test"
2018 - EXTRA_WHEELS="https://5cf40426d9f06eb7461d-6fe47d9331aba7cd62fc36c7196769e4.ssl.cf2.rackcdn.com"
2119 - PRE_WHEELS="https://7933911d6844c6c53a7d-47bd50c35cd79bd838daf386af554a83.ssl.cf2.rackcdn.com"
2220 - EXTRA_PIP_FLAGS="--find-links=$EXTRA_WHEELS"
2321 - PRE_PIP_FLAGS="--pre $EXTRA_PIP_FLAGS --find-links $PRE_WHEELS"
22+
2423python :
2524 - 3.6
2625 - 3.7
26+
2727matrix :
2828 include :
29- # Absolute minimum dependencies
29+ # Basic dependencies only
3030 - python : 3.5
3131 env :
32- - DEPENDS="-r min-requirements.txt setuptools==30.3.0"
32+ - DEPENDS="-r requirements.txt"
33+ # Clean install
34+ - python : 3.5
35+ env :
36+ - DEPENDS=""
37+ - CHECK_TYPE=skiptests
3338 # Absolute minimum dependencies
3439 - python : 3.5
3540 env :
41+ - SETUP_REQUIRES="setuptools==30.3.0"
3642 - DEPENDS="-r min-requirements.txt"
37- - CHECK_TYPE="import"
3843 # Absolute minimum dependencies plus oldest MPL
39- # Check these against:
40- # nibabel/info.py
41- # doc/source/installation.rst
42- # requirements.txt
4344 - python : 3.5
4445 env :
4546 - DEPENDS="-r min-requirements.txt matplotlib==1.3.1"
@@ -51,8 +52,8 @@ matrix:
5152 - python : 3.5
5253 env :
5354 - DEPENDS="numpy git+https://github.com/pydicom/pydicom.git@master"
54- # test 3.5 against pre-release builds of everything
55- - python : 3.5
55+ # test 3.7 against pre-release builds of everything
56+ - python : 3.7
5657 env :
5758 - EXTRA_PIP_FLAGS="$PRE_PIP_FLAGS"
5859 - python : 3.5
@@ -61,9 +62,6 @@ matrix:
6162 - python : 3.5
6263 env :
6364 - INSTALL_TYPE=wheel
64- - python : 3.5
65- env :
66- - INSTALL_TYPE=requirements
6765 - python : 3.5
6866 env :
6967 - INSTALL_TYPE=archive
@@ -73,62 +71,55 @@ matrix:
7371 # Documentation doctests
7472 - python : 3.5
7573 env :
76- - CHECK_TYPE="doc_doctests"
77- # Run tests with indexed_gzip present
78- - python : 3.5
79- env :
80- - OPTIONAL_DEPENDS="indexed_gzip"
74+ - CHECK_TYPE="doc"
75+
76+ # Set up virtual environment, build package, build from depends
8177before_install :
82- - travis_retry python -m pip install --upgrade pip
83- - travis_retry pip install --upgrade virtualenv
78+ - travis_retry python -m pip install --upgrade pip virtualenv
8479 - virtualenv --python=python venv
8580 - source venv/bin/activate
8681 - python --version # just to check
87- - travis_retry pip install -U pip setuptools>=27.0 wheel
88- - travis_retry pip install coverage
89- - if [ "${CHECK_TYPE}" == "test" ]; then
90- travis_retry pip install nose mock;
91- fi
92- - if [ "${CHECK_TYPE}" == "style" ]; then
93- travis_retry pip install flake8;
82+ - travis_retry pip install -U $SETUP_REQUIRES
83+ - |
84+ if [ "$INSTALL_TYPE" == "sdist" ]; then
85+ python setup.py egg_info # check egg_info while we're here
86+ python setup.py sdist
87+ export ARCHIVE=$( ls dist/*.tar.gz )
88+ elif [ "$INSTALL_TYPE" == "wheel" ]; then
89+ python setup.py bdist_wheel
90+ export ARCHIVE=$( ls dist/*.whl )
91+ elif [ "$INSTALL_TYPE" == "archive" ]; then
92+ export ARCHIVE="package.tar.gz"
93+ git archive -o $ARCHIVE HEAD
9494 fi
95- - travis_retry pip install $EXTRA_PIP_FLAGS $DEPENDS $OPTIONAL_DEPENDS
95+ - if [ -n "$DEPENDS" ]; then pip install $EXTRA_PIP_FLAGS $DEPENDS; fi
96+
9697# command to install dependencies
9798install :
9899 - |
99100 if [ "$INSTALL_TYPE" == "setup" ]; then
100101 python setup.py install
101- elif [ "$INSTALL_TYPE" == "sdist" ]; then
102- python setup_egg.py egg_info # check egg_info while we're here
103- python setup_egg.py sdist
104- pip install $EXTRA_PIP_FLAGS dist/*.tar.gz
105- elif [ "$INSTALL_TYPE" == "wheel" ]; then
106- python setup_egg.py bdist_wheel
107- pip install $EXTRA_PIP_FLAGS dist/*.whl
108- elif [ "$INSTALL_TYPE" == "requirements" ]; then
109- pip install $EXTRA_PIP_FLAGS -r requirements.txt
110- python setup.py install
111- elif [ "$INSTALL_TYPE" == "archive" ]; then
112- git archive -o package.tar.gz HEAD
113- pip install $EXTRA_PIP_FLAGS package.tar.gz
102+ else
103+ pip install $EXTRA_PIP_FLAGS $ARCHIVE
114104 fi
105+ # Basic import check
106+ - python -c 'import nibabel; print(nibabel.__version__)'
107+ - if [ "$CHECK_TYPE" == "skiptests" ]; then exit 0; fi
108+
109+ before_script :
115110 # Point to nibabel data directory
116111 - export NIBABEL_DATA_DIR="$PWD/nibabel-data"
112+ # Because nibabel is already installed, will just look up the extra
113+ - pip install $EXTRA_PIP_FLAGS "nibabel[$CHECK_TYPE]"
114+
117115# command to run tests, e.g. python setup.py test
118116script :
119117 - |
120118 if [ "${CHECK_TYPE}" == "style" ]; then
121119 # Run styles only on core nibabel code.
122120 flake8 nibabel
123- elif [ "${CHECK_TYPE}" == "import" ]; then
124- # Import nibabel without attempting to test
125- # Allows us to check missing dependencies masked by testing libraries
126- printf 'import nibabel\nprint(nibabel.__version__)\n' > import_only.py
127- cat import_only.py
128- coverage run import_only.py
129- elif [ "${CHECK_TYPE}" == "doc_doctests" ]; then
121+ elif [ "${CHECK_TYPE}" == "doc" ]; then
130122 cd doc
131- pip install -r ../doc-requirements.txt
132123 make html;
133124 make doctest;
134125 elif [ "${CHECK_TYPE}" == "test" ]; then
@@ -140,12 +131,10 @@ script:
140131 else
141132 false
142133 fi
143- after_success :
144- - |
145- if [ "${CHECK_TYPE}" == "test" ]; then
146- travis_retry pip install codecov
147- codecov
148- fi
134+
135+ after_script :
136+ - travis_retry pip install codecov
137+ - codecov
149138
150139notifications :
151140 webhooks : http://nipy.bic.berkeley.edu:54856/travis
0 commit comments