blob: 30e23443d918374c7e559c778ca8f31e72eae759 [file] [log] [blame]
# we only CI the master, release branches, tags and PRs
if: tag IS present OR type = pull_request OR ((branch = master OR branch =~ release-*) AND type = push)
language: python
# cache package wheels (1 cache per python version)
cache: pip
# also cache the directories where we set up our custom pythons in some builds
cache:
directories:
- $HOME/python-debug
# I ran into some issues with this but will investigate again later.
# - $HOME/.pyenv/versions
- $HOME/Library/Caches/pip
# newer python versions are available only on xenial (while some older only on trusty) Ubuntu distribution
dist: xenial
env:
TOXENV=py
EXTRA_ARGS="-n 12"
TEST_MYPYC=0
PYTHON_DEBUG_BUILD=0
jobs:
include:
# Specifically request 3.5.1 because we need to be compatible with that.
- name: "run test suite with python 3.5.1"
python: 3.5.1
dist: trusty
- name: "run test suite with python 3.6"
python: 3.6 # 3.6.3 pip 9.0.1
- name: "run test suite with python 3.7"
python: 3.7 # 3.7.0 pip 10.0.1
- name: "run test suite with python 3.8-dev"
python: 3.8-dev
- name: "run mypyc runtime tests with python 3.6 debug build"
language: generic
env:
- TOXENV=py36
- PYTHONVERSION=3.6.8
- PYTHON_DEBUG_BUILD=1
- EXTRA_ARGS="-n 12 mypyc/test/test_run.py mypyc/test/test_external.py"
- name: "run mypyc runtime tests with python 3.6 on OS X"
os: osx
osx_image: xcode8.3
language: generic
env:
- PYTHONVERSION=3.6.3
- EXTRA_ARGS="-n 12 mypyc/test/test_run.py mypyc/test/test_external.py"
- name: "run test suite with python 3.7 (compiled with mypyc)"
python: 3.7
env:
- TOXENV=py
- EXTRA_ARGS="-n 12"
- TEST_MYPYC=1
- name: "type check our own code"
python: 3.7
env:
- TOXENV=type
- EXTRA_ARGS=
- name: "check code style with flake8"
python: 3.7
env:
- TOXENV=lint
- EXTRA_ARGS=
- name: "trigger a build of wheels"
python: 3.7
script: if [[ ($TRAVIS_BRANCH = "master" || $TRAVIS_BRANCH =~ release-*) && $TRAVIS_PULL_REQUEST = "false" ]]; then ./misc/trigger_wheel_build.sh; fi
- name: "check documentation build"
python: 3.7
env:
- TOXENV=docs
# Disabled because of some pip bug? See #6716
# - name: "check dev environment builds"
# python: 3.7
# env:
# - TOXENV=dev
# - EXTRA_ARGS=
install:
- pip install -U pip setuptools
- pip install -U tox==3.9.0
- tox --notest
# This is a big hack and only works because the layout of our directories
# means that tox picks up the mypy from the source directories instead of
# the version it installed into a venv. This is also *why* we need to do this,
# since if we arranged for tox to build with mypyc, pytest wouldn't use it.
- if [[ $TEST_MYPYC == 1 ]]; then pip install -r mypy-requirements.txt; CC=clang MYPYC_OPT_LEVEL=0 python3 setup.py --use-mypyc build_ext --inplace; fi
script:
- tox -- $EXTRA_ARGS
# Getting our hands on a debug build or the right OS X build is
# annoying, unfortunately.
before_install: |
set -e
if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
if [[ $PYTHON_DEBUG_BUILD == 1 ]]; then
PYTHONDIR=~/python-debug/python-$PYTHONVERSION
VENV=$PYTHONDIR/env
misc/build-debug-python.sh $PYTHONVERSION $PYTHONDIR $VENV
source $VENV/bin/activate
fi
elif [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
# Attempt to install, skipping if version already exists.
pyenv install $PYTHONVERSION -s
# Regenerate shims
pyenv rehash
# Manually set pyenv variables per https://pythonhosted.org/CodeChat/.travis.yml.html
export PYENV_VERSION=$PYTHONVERSION
export PATH="/Users/travis/.pyenv/shims:${PATH}"
fi