sudo: required
dist: trusty

notifications:
  email: false
  irc: "chat.freenode.net#mitogen-builds"

language: python

branches:
  except:
  - docs-master

cache:
- pip
- directories:
  - /home/travis/virtualenv

install:
- grep -Erl git-lfs\|couchdb /etc/apt | sudo xargs rm -v
- .ci/${MODE}_install.py

script:
- .ci/spawn_reverse_shell.py
- .ci/${MODE}_tests.py


# To avoid matrix explosion, just test against oldest->newest and
# newest->oldest in various configuartions.

matrix:
  allow_failures:
    # Python 2.4 tests are still unreliable
    - language: c
      env: MODE=mitogen_py24 DISTRO=centos5

  include:
    # Debops tests.
    # 2.8.0; 3.6 -> 2.7
    - python: "3.6"
      env: MODE=debops_common VER=2.8.0
    # 2.4.6.0; 2.7 -> 2.7
    - python: "2.7"
      env: MODE=debops_common VER=2.4.6.0

    # Sanity check against vanilla Ansible. One job suffices.
    - python: "2.7"
      env: MODE=ansible VER=2.8.0 DISTROS=debian STRATEGY=linear

    # ansible_mitogen tests.

    # 2.8.0 -> {debian, centos6, centos7}
    - python: "3.6"
      env: MODE=ansible VER=2.8.0
    # 2.8.0 -> {debian, centos6, centos7}
    - python: "2.7"
      env: MODE=ansible VER=2.8.0

    # 2.4.6.0 -> {debian, centos6, centos7}
    - python: "3.6"
      env: MODE=ansible VER=2.4.6.0
    # 2.4.6.0 -> {debian, centos6, centos7}
    - python: "2.6"
      env: MODE=ansible VER=2.4.6.0

    # 2.3 -> {centos5}
    - python: "2.6"
      env: MODE=ansible VER=2.3.3.0 DISTROS=centos5

    # Mitogen tests.
    # 2.4 -> 2.4
    - language: c
      env: MODE=mitogen_py24 DISTRO=centos5
    # 2.7 -> 2.7 -- moved to Azure
    # 2.7 -> 2.6
    #- python: "2.7"
      #env: MODE=mitogen DISTRO=centos6
    # 2.6 -> 2.7
    - python: "2.6"
      env: MODE=mitogen DISTRO=centos7
    # 2.6 -> 3.5
    - python: "2.6"
      env: MODE=mitogen DISTRO=debian-py3
    # 3.6 -> 2.6 -- moved to Azure
