From cf7c8750b56173caeb7f8497ad53298704fd7e99 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Thu, 9 Oct 2014 19:42:47 -0500 Subject: [PATCH] Push parts of travis into separate shell scripts --- .travis.yml | 75 ++----------------------------------------- doc/travis_notes.txt | 22 ++----------- tools/travis_build.sh | 59 ++++++++++++++++++++++++++++++++++ tools/travis_setup.sh | 12 +++++++ 4 files changed, 76 insertions(+), 92 deletions(-) create mode 100644 tools/travis_build.sh create mode 100644 tools/travis_setup.sh diff --git a/.travis.yml b/.travis.yml index a59390c2..122189e6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -22,19 +22,7 @@ before_install: - sh -e /etc/init.d/xvfb start - sudo apt-get update - - travis_retry pip install wheel flake8 coveralls nose - - travis_retry pip uninstall -y numpy - - # on Python 2.7, use the system versions of numpy, scipy, and matplotlib - # and the minimum version of cython and networkx - - if [[ $TRAVIS_PYTHON_VERSION == 2.7* ]]; then - travis_retry sudo apt-get install python-scipy python-matplotlib; - pip install https://github.com/cython/cython/archive/0.19.2.tar.gz; - pip install https://github.com/networkx/networkx/archive/networkx-1.8.tar.gz; - fi - - - travis_retry pip install -r requirements.txt $WHEELHOUSE; - - python check_bento_build.py + - tools/travis_setup.sh install: - tools/header.py "Dependency versions" @@ -43,64 +31,7 @@ install: - python setup.py build_ext --inplace script: - - tools/header.py "Run all tests with minimum dependencies" - - nosetests --exe -v skimage - - - tools/header.py "Pep8 and Flake tests" - - flake8 --exit-zero --exclude=test_*,six.py skimage doc/examples viewer_examples - - - tools/header.py "Install optional dependencies" - - # Install Qt and then update the Matplotlib settings - - if [[ $TRAVIS_PYTHON_VERSION == 2.7* ]]; then - sudo apt-get install -q python-qt4; - export SCI_QT_API=PyQt4; - - else - sudo apt-get install -q libqt4-dev; - travis_retry pip install PySide $WHEELHOUSE; - python ~/virtualenv/python${TRAVIS_PYTHON_VERSION}/bin/pyside_postinstall.py -install; - export SCI_QT_API=Pyside; - fi - - # Matplotlib settings - must be after we install Pyside - - export MPL_DIR=$HOME/.config/matplotlib - - mkdir -p $MPL_DIR - - touch $MPL_DIR/matplotlibrc - - "echo 'backend : Agg' > $MPL_DIR/matplotlibrc" - - "echo 'backend.qt4 : '$SCI_QT_API >> $MPL_DIR/matplotlibrc" - - # - imread does NOT support py3.2 - - if [[ $TRAVIS_PYTHON_VERSION != 3.2 ]]; then - sudo apt-get install -q libtiff4-dev libwebp-dev libpng12-dev xcftools; - travis_retry pip install imread; - fi - - # TODO: update when SimpleITK become available on py34 or hopefully pip - - if [[ $TRAVIS_PYTHON_VERSION != 3.4 ]]; then - travis_retry easy_install SimpleITK; - fi - - - travis_retry sudo apt-get install libfreeimage3 - - travis_retry pip install astropy - - - if [[ $TRAVIS_PYTHON_VERSION == 2.* ]]; then - travis_retry pip install pyamg; - fi - - - tools/header.py "Run doc examples" - - export PYTHONPATH=$(pwd):$PYTHONPATH - - for f in doc/examples/*.py; do python "$f"; if [ $? -ne 0 ]; then exit 1; fi done - - for f in doc/examples/applications/*.py; do python "$f"; if [ $? -ne 0 ]; then exit 1; fi done - - - tools/header.py "Run tests with all dependencies" - # run tests again with optional dependencies to get more coverage - # measure coverage on py3.3 - - if [[ $TRAVIS_PYTHON_VERSION == 3.3 ]]; then - nosetests --exe -v --with-doctest --with-cov --cover-package skimage; - else - nosetests --exe -v --with-doctest skimage; - fi + - tools/travis_build.sh after_success: - - coveralls; + - coveralls diff --git a/doc/travis_notes.txt b/doc/travis_notes.txt index 09d04889..c5d5c99c 100644 --- a/doc/travis_notes.txt +++ b/doc/travis_notes.txt @@ -3,26 +3,8 @@ http://lint.travis-ci.org/ is recommended elsewhere but does not give helpful error reports. - Make sure all of your "-" lines start on the same column -- Make sure all of your "if" lines are aligned with the "else" and "fi" lines -- Recommend using tab stops (but not tab chars) everywhere for alignment -- "If" blocks must be on one travis statement and have semicolons at the - end of each line: - -``` - - if [[ $TRAVIS_PYTHON_VERSION == 2.7 ]]; then - echo "2.7"; - else - echo "Not 2.7"; - end -``` - -- "If" blocks cannot contain comments -- All travis commands are run with `eval` and quotes are taken as literal - characters unless you wrap the whole line in quotes: -`echo "hello : world"` is interpreted as `echo \"hello : world\"` -`"echo 'hello : world'"` is interpreted as `echo 'hello : world'` -`"echo 'hello : '$(MYVAR)'world'"` is interpreted as - `echo 'hello : $(MYVAR)world'` +- Use shell scripts for `before_install` and `script` or any part that + has conditional statements - Use `travis_retry` before a command to have it try several times before failing (useful for installing from third party sources) - Feel free to cancel a build rather than waiting for it to go to completion diff --git a/tools/travis_build.sh b/tools/travis_build.sh new file mode 100644 index 00000000..79b8f9b5 --- /dev/null +++ b/tools/travis_build.sh @@ -0,0 +1,59 @@ +./header.py "Run all tests with minimum dependencies" +nosetests --exe -v skimage + +./header.py "Pep8 and Flake tests" +flake8 --exit-zero --exclude=test_*,six.py skimage doc/examples viewer_examples + +./header.py "Install optional dependencies" + +# Install Qt and then update the Matplotlib settings +if [[ $TRAVIS_PYTHON_VERSION == 2.7* ]]; then + sudo apt-get install -q python-qt4 + export SCI_QT_API=PyQt4 + +else + sudo apt-get install -q libqt4-dev + travis_retry pip install PySide $WHEELHOUSE + python ~/virtualenv/python${TRAVIS_PYTHON_VERSION}/bin/pyside_postinstall.py -install + export SCI_QT_API=PySide +fi + +# Matplotlib settings - must be after we install Pyside +export MPL_DIR=$HOME/.config/matplotlib +mkdir -p $MPL_DIR +touch $MPL_DIR/matplotlibrc +echo 'backend : Agg' > $MPL_DIR/matplotlibrc +echo 'backend.qt4 : '$SCI_QT_API >> $MPL_DIR/matplotlibrc + +# imread does NOT support py3.2 +if [[ $TRAVIS_PYTHON_VERSION != 3.2 ]]; then + sudo apt-get install -q libtiff4-dev libwebp-dev libpng12-dev xcftools + travis_retry pip install imread +fi + +# TODO: update when SimpleITK become available on py34 or hopefully pip +if [[ $TRAVIS_PYTHON_VERSION != 3.4 ]]; then + travis_retry easy_install SimpleITK +fi + +travis_retry sudo apt-get install libfreeimage3 +travis_retry pip install astropy + +if [[ $TRAVIS_PYTHON_VERSION == 2.* ]]; then + travis_retry pip install pyamg +fi + +./header.py "Run doc examples" +export PYTHONPATH=$(pwd):$PYTHONPATH +for f in doc/examples/*.py; do python "$f"; if [ $? -ne 0 ]; then exit 1; fi done +for f in doc/examples/applications/*.py; do python "$f"; if [ $? -ne 0 ]; then exit 1; fi done + +./header.py "Run tests with all dependencies" +# run tests again with optional dependencies to get more coverage +# measure coverage on py3.3 +if [[ $TRAVIS_PYTHON_VERSION == 3.3 ]]; then + nosetests --exe -v --with-doctest --with-cov --cover-package skimage +else + nosetests --exe -v --with-doctest skimage +fi + diff --git a/tools/travis_setup.sh b/tools/travis_setup.sh new file mode 100644 index 00000000..c6d8c566 --- /dev/null +++ b/tools/travis_setup.sh @@ -0,0 +1,12 @@ +travis_retry pip install wheel flake8 coveralls nose + +# on Python 2.7, use the system versions of numpy, scipy, and matplotlib +# and the minimum version of cython and networkx +if [[ $TRAVIS_PYTHON_VERSION == 2.7* ]]; then + travis_retry sudo apt-get install python-scipy python-matplotlib + pip install https://github.com/cython/cython/archive/0.19.2.tar.gz + pip install https://github.com/networkx/networkx/archive/networkx-1.8.tar.gz +fi + +travis_retry pip install -r requirements.txt $WHEELHOUSE +python check_bento_build.py