diff --git a/.travis.yml b/.travis.yml index 3eb89dc4f..f08a72af6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,7 +2,14 @@ language: python sudo: false +cache: + directories: + - $HOME/.pip-cache + env: + global: + - PIP_CACHE=$HOME/.pip-cache + matrix: - TOX_ENV=py27-flake8 - TOX_ENV=py27-docs - TOX_ENV=py34-django17 @@ -27,7 +34,8 @@ env: - TOX_ENV=py27-django18beta install: - - pip install tox + - pip install --download $PIP_CACHE tox + - pip install --no-index --find-links=$PIP_CACHE tox script: - tox -e $TOX_ENV diff --git a/custom_pip_install.sh b/custom_pip_install.sh new file mode 100755 index 000000000..b42026c48 --- /dev/null +++ b/custom_pip_install.sh @@ -0,0 +1,13 @@ +#!/bin/bash +if [[ "$@" == "djangorestframework" ]]; then + # Caching djangorestframework package would invalidate Travis cache on every build + pip install "$@" +else + # Try to install from cache, download and install if that fails + pip install --no-index --find-links=$PIP_CACHE "$@" + EXIT_STATUS=$? + if [ $EXIT_STATUS -ne 0 ]; then + pip install --download $PIP_CACHE "$@" + pip install --no-index --find-links=$PIP_CACHE "$@" + fi +fi diff --git a/tox.ini b/tox.ini index c986250c5..df6a63dcb 100644 --- a/tox.ini +++ b/tox.ini @@ -6,6 +6,9 @@ envlist = {py27,py32,py33,py34}-django{17,18beta} [testenv] +install_command = + {toxinidir}/custom_pip_install.sh {packages} + commands = ./runtests.py --fast setenv = PYTHONDONTWRITEBYTECODE=1