dist: xenial
language: python
cache: pip

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

# Run fast lint first to get fast feedback.
# Run slow PyPy* next, 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: "3.6"
      name: "Lint"
      env: LINT="true"
    - python: "pypy"
      name: "PyPy2 Xenial"
    - python: "pypy3"
      name: "PyPy3 Xenial"
    - python: '3.7'
      name: "3.7 Xenial"
    - python: '2.7'
      name: "2.7 Xenial"
    - python:  "2.7_with_system_site_packages" # For PyQt4
      name: "2.7_with_system_site_packages Xenial"
      services: xvfb
    - python: '3.6'
      name: "3.6 Xenial PYTHONOPTIMIZE=1"
      env: PYTHONOPTIMIZE=1
    - python: '3.5'
      name: "3.5 Xenial PYTHONOPTIMIZE=2"
      env: PYTHONOPTIMIZE=2
    - python: "3.8-dev"
      name: "3.8-dev Xenial"
    - env: DOCKER="alpine" DOCKER_TAG="master"
    - env: DOCKER="arch" DOCKER_TAG="master" # contains PyQt5
    - env: DOCKER="ubuntu-16.04-xenial-amd64" DOCKER_TAG="master"
    - env: DOCKER="ubuntu-18.04-bionic-amd64" DOCKER_TAG="master"
    - env: DOCKER="debian-stretch-x86" DOCKER_TAG="master"
    - env: DOCKER="centos-6-amd64" DOCKER_TAG="master"
    - env: DOCKER="centos-7-amd64" DOCKER_TAG="master"
    - env: DOCKER="amazon-1-amd64" DOCKER_TAG="master"
    - env: DOCKER="amazon-2-amd64" DOCKER_TAG="master"
    - env: DOCKER="fedora-29-amd64" DOCKER_TAG="master"
    - env: DOCKER="fedora-30-amd64" DOCKER_TAG="master"

services:
  - docker

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

install:
  - |
    if [ "$LINT" == "true" ]; then
      pip install tox
    elif [ "$DOCKER" == "" ]; then
      .travis/install.sh;
    fi

script:
- |
  if [ "$LINT" == "true" ]; then
    tox -e lint
  elif [ "$DOCKER" == "" ]; then
    .travis/script.sh
  elif [ "$DOCKER" ]; then
    # 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:
- |
  if [ "$LINT" == "" ]; then
    .travis/after_success.sh
  fi