dist: xenial
sudo: required
language: python
cache: pip

notifications:
  irc: "chat.freenode.net#pil"

# Run slow PyPy* first, to give them a headstart and reduce waiting time.
# Run latest 3.x and 2.x next, to get quick compatibility results.
# Then run the remainder, with fastest Docker jobs last.

matrix:
  fast_finish: true
  include:
    - python: "pypy"
      dist: trusty
    - python: "pypy3"
      dist: trusty
    - python: '3.7'
    - python: '2.7'
    - python: '2.7'
      dist: trusty
    - python:  "2.7_with_system_site_packages" # For PyQt4
    - python:  "2.7_with_system_site_packages" # For PyQt4
      dist: trusty
    - python: '3.6'
    - python: '3.6'
      dist: trusty
    - python: '3.5'
    - python: '3.5'
      dist: trusty
      env: PYTHONOPTIMIZE=1
    - python: '3.4'
      dist: trusty
      env: PYTHONOPTIMIZE=2
    - env: DOCKER="alpine" DOCKER_TAG="pytest"
    - env: DOCKER="arch" DOCKER_TAG="pytest" # contains PyQt5
    - env: DOCKER="ubuntu-trusty-x86" DOCKER_TAG="pytest"
    - env: DOCKER="ubuntu-xenial-amd64" DOCKER_TAG="pytest"
    - env: DOCKER="debian-stretch-x86" DOCKER_TAG="pytest"
    - env: DOCKER="centos-6-amd64" DOCKER_TAG="pytest"
    - env: DOCKER="centos-7-amd64" DOCKER_TAG="pytest"
    - env: DOCKER="amazon-1-amd64" DOCKER_TAG="pytest"
    - env: DOCKER="amazon-2-amd64" DOCKER_TAG="pytest"
    - env: DOCKER="fedora-26-amd64" DOCKER_TAG="pytest"
    - env: DOCKER="fedora-27-amd64" DOCKER_TAG="pytest"

services:
  - docker

install:
  - if [ "$DOCKER" == "" ]; then .travis/install.sh; fi

before_install:
  - if [ "$DOCKER" ]; then travis_retry docker pull pythonpillow/$DOCKER:$DOCKER_TAG; fi

before_script:
# Qt needs a display for some of the tests, and it's only run on the system site packages install
  - "export DISPLAY=:99.0"
  - "sh -e /etc/init.d/xvfb start"

script:
  - |
       if [ "$DOCKER" == "" ]; then
          .travis/script.sh
       else
          # the Pillow user in the docker container is UID 1000
          sudo chown -R 1000 $TRAVIS_BUILD_DIR
          docker run -v $TRAVIS_BUILD_DIR:/Pillow pythonpillow/$DOCKER:$DOCKER_TAG
       fi

after_success:
  - .travis/after_success.sh