# 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
