dist: xenial
language: python

jobs:
  fast_finish: true
  include:
  - &latest_py2
    python: 2.7
    env: TOXENV=py27
  - <<: *latest_py2
    env: LANG=C TOXENV=py27
  - python: pypy3
    env: DISABLE_COVERAGE=1  # Don't run coverage on pypy (too slow).
  - python: 3.5
  - python: 3.6
  - python: 3.7
  - &latest_py3
    python: 3.8
  - <<: *latest_py3
    env: LANG=C
  - python: 3.8-dev
  - <<: *latest_py3
    env: TOXENV=docs DISABLE_COVERAGE=1
  - <<: *latest_py3
    stage: deploy
    if: tag IS present
    script: tox -e release
    after_success: skip

cache: pip

install:

# ensure we have recent pip/setuptools/wheel
- pip install --disable-pip-version-check --upgrade pip setuptools wheel
# need tox to get started
- pip install --upgrade tox tox-venv

# Output the env, to verify behavior
- pip freeze --all
- env

- "! grep pyc setuptools.egg-info/SOURCES.txt"

script:
  - export NETWORK_REQUIRED=1
  - |
    ( # Run testsuite.
      if [ -z "$DISABLE_COVERAGE" ]
      then
        tox -- --cov
      else
        tox
      fi
    )

after_success:
  - |
    ( # Upload coverage data.
      if [ -z "$DISABLE_COVERAGE" ]
      then
        export TRAVIS_JOB_NAME="${TRAVIS_PYTHON_VERSION} (LANG=$LANG)" CODECOV_ENV=TRAVIS_JOB_NAME
        tox -e coverage,codecov
      fi
    )
