sudo: false
language: python
cache: pip
dist: trusty
before_cache:
  - rm -f $HOME/.cache/pip/log/debug.log
git:
  depth: 1000

env:
  global:
    - TAHOE_LAFS_HYPOTHESIS_PROFILE=ci

install:
# ~/.local/bin is on $PATH by default, but on OS-X, --user puts it elsewhere
  - if [ "${TRAVIS_OS_NAME}" = "osx" ]; then export PATH=$HOME/Library/Python/2.7/bin:$PATH; fi
  - if [ "${TRAVIS_OS_NAME}" = "osx" ]; then wget https://bootstrap.pypa.io/get-pip.py && sudo python ./get-pip.py; fi
  - pip list
  - if [ "${TRAVIS_OS_NAME}" = "osx" ]; then pip install --user --upgrade codecov tox setuptools; fi
  - if [ "${TRAVIS_OS_NAME}" = "linux" ]; then pip install --upgrade codecov tox setuptools; fi
  - echo $PATH; which python; which pip; which tox
  - python misc/build_helpers/show-tool-versions.py

script:
  - |
    set -eo pipefail
    if [ "${T}" = "py35" ]; then
      python3 -m compileall -f -x tahoe-depgraph.py .
    else
      tox -e ${T}
    fi
    # To verify that the resultant PyInstaller-generated binary executes
    # cleanly (i.e., that it terminates with an exit code of 0 and isn't
    # failing due to import/packaging-related errors, etc.).
    if [ "${T}" = "pyinstaller" ]; then dist/Tahoe-LAFS/tahoe --version; fi

after_success:
  - if [ "${T}" = "coverage" ]; then codecov; fi

notifications:
  email: false
  irc:
    channels: "chat.freenode.net#tahoe-lafs"
    on_success: always # for testing
    on_failure: always
    template:
      - "%{repository}#%{build_number} [%{branch}: %{commit} by %{author}] %{message}"
      - "Changes: %{compare_url} | Details: %{build_url}"

matrix:
  include:
  - os: linux
    python: '2.7'
    env: T=coverage LANG=en_US.UTF-8
  - os: linux
    python: '2.7'
    env: T=codechecks LANG=en_US.UTF-8
  - os: linux
    python: '2.7'
    env: T=pyinstaller LANG=en_US.UTF-8
  - os: linux
    python: '2.7'
    env: T=py27 LANG=C
  - os: osx
    python: '2.7'
    env: T=py27 LANG=en_US.UTF-8
    language: generic  # "python" is not available on OS-X
  - os: osx
    python: '2.7'
    env: T=pyinstaller LANG=en_US.UTF-8
    language: generic  # "python" is not available on OS-X
  # this is a "lint" job that checks for python3 compatibility
  - os: linux
    python: '3.5'
    env: T=py35

  fast_finish: true