.travis.yml - Travis CI configurationΒΆ

See https://docs.travis-ci.com/user/multi-os/.

os: linux

See https://docs.travis-ci.com/user/languages/python.

language: python
python:
  - 3.3
  - 3.4
  - 3.5
 

See https://docs.travis-ci.com/user/customizing-the-build/#Build-Matrix. This manually includes additional OS X tests to the matrix of Linux tests defined above.

matrix:
  include:
  - os: osx

Since OS X doesn’t natively support Python, use some workarounds (see before_install for details).

    language: generic

See https://docs.travis-ci.com/user/environment-variables/#Defining-Variables-in-.travis.yml. Note that pyenv requres a full version specifier; selecting only 3.3 produces an error: python-build: definition not found: 3.3.

    env: PYTHON=3.3.6
  - os: osx
    language: generic
    env: PYTHON=3.4.4
  - os: osx
    language: generic
    env: PYTHON=3.5.1
 

before_install: Perform the manual steps on OS X to install python3 and activate venv, since Python support is not available, per the list of unsupported languages on OS X. The following approach is based on a workaround. This was modified based on instructions to install multiple Python versions on OS X. See also the pyenv docs.

before_install: |
  if [ "$TRAVIS_OS_NAME" == "osx" ]; then
    brew update
    # Per the `pyenv homebrew recommendations <https://github.com/yyuu/pyenv/wiki#suggested-build-environment>`_.
    brew install openssl readline
    # See https://docs.travis-ci.com/user/osx-ci-environment/#A-note-on-upgrading-packages.
    # I didn't do this above because it works and I'm lazy.
    brew outdated pyenv || brew upgrade pyenv
    # virtualenv doesn't work without pyenv knowledge. venv in Python 3.3
    # doesn't provide Pip by default. So, use `pyenv-virtualenv <https://github.com/yyuu/pyenv-virtualenv/blob/master/README.md>`_.
    brew install pyenv-virtualenv
    pyenv install $PYTHON
    # I would expect something like ``pyenv init; pyenv local $PYTHON`` or
    # ``pyenv shell $PYTHON`` would work, but ``pyenv init`` doesn't seem to
    # modify the Bash environment. ??? So, I hand-set the variables instead.
    export PYENV_VERSION=$PYTHON
    export PATH="/Users/travis/.pyenv/shims:${PATH}"
    pyenv-virtualenv venv
    source venv/bin/activate
    # A manual check that the correct version of Python is running.
    python --version
  fi

install:

Make sure we’re using the latest version of pip. Use the approach which Appveyor requires to keep the CI files as close as possible.

  - python -m pip install -U pip
 

The default version of setuptools is old:

1
2
3
4
5
6
$ pip install -e .[test]
Obtaining file:///home/travis/build/bjones1/CodeChat
    The required version of setuptools (>=20.3.1) is not available,
    and can't be installed while this script is running. Please
    install a more recent version first, using
    'easy_install -U setuptools'.

Use the Appveyor approach (see above).

  - python -m easy_install -U setuptools
 

See here.

  - pip install -e .[test]
 

Run the tests.

script:

On OS X, py.test with no parameters runs all CodeChat tests, then discovers others that fail. Try to avoid this. Also, invoking py.test refers to the system Python. So, run it as a module to use the selected Python 3 version.

  - python -m pytest ./test