language: python
cache: pip
dist: xenial

addons:
  postgresql: "9.6"

matrix:
  include:
   - env: TOXENV=py35-dj20-sqlite-noelasticsearch
     python: 3.5
   - env: TOXENV=py35-dj21-mysql-noelasticsearch
     python: 3.5
   - env: TOXENV=py36-dj20-postgres-noelasticsearch
     python: 3.6
   - env: TOXENV=py36-dj21-postgres-noelasticsearch
     python: 3.6
   - env: TOXENV=py37-dj21-postgres-noelasticsearch
     python: 3.7
   - env: TOXENV=py37-dj22-sqlite-noelasticsearch
     python: 3.7
   - env: TOXENV=py37-dj22-mysql-noelasticsearch
     python: 3.7
   - env: TOXENV=py37-dj22-postgres-noelasticsearch
     python: 3.7
   - env: TOXENV=py37-dj22stable-postgres-noelasticsearch
     python: 3.7
   - env: TOXENV=py37-djmaster-postgres-noelasticsearch
     python: 3.7
   - env: TOXENV=py38-dj22-postgres-noelasticsearch
     python: 3.8
   - env: TOXENV=py36-dj20-sqlite-elasticsearch2 INSTALL_ELASTICSEARCH2=yes
     python: 3.6
   - env: TOXENV=py36-dj21-sqlite-elasticsearch2 INSTALL_ELASTICSEARCH2=yes
     python: 3.6
   - env: TOXENV=py36-dj21-postgres-elasticsearch5 INSTALL_ELASTICSEARCH5=yes
     python: 3.6
   - env: TOXENV=py36-dj20-postgres-elasticsearch6 INSTALL_ELASTICSEARCH6=yes
     python: 3.6
   - env: TOXENV=py36-dj21-postgres-elasticsearch6 INSTALL_ELASTICSEARCH6=yes
     python: 3.6
   - env: TOXENV=py37-dj22-postgres-elasticsearch6 INSTALL_ELASTICSEARCH6=yes
     python: 3.7
   - env: TOXENV=py37-dj22-postgres-elasticsearch7 INSTALL_ELASTICSEARCH7=yes
     python: 3.7
   - env: TOXENV=py38-dj22-postgres-elasticsearch7 INSTALL_ELASTICSEARCH7=yes
     python: 3.8
  allow_failures:
    # Ignore failures on Elasticsearch tests because ES on Travis is intermittently flaky
    - env: TOXENV=py36-dj20-sqlite-elasticsearch2 INSTALL_ELASTICSEARCH2=yes
    - env: TOXENV=py36-dj21-sqlite-elasticsearch2 INSTALL_ELASTICSEARCH2=yes
    - env: TOXENV=py36-dj21-postgres-elasticsearch5 INSTALL_ELASTICSEARCH5=yes
    - env: TOXENV=py36-dj20-postgres-elasticsearch6 INSTALL_ELASTICSEARCH6=yes
    - env: TOXENV=py36-dj21-postgres-elasticsearch6 INSTALL_ELASTICSEARCH6=yes
    - env: TOXENV=py37-dj22-postgres-elasticsearch6 INSTALL_ELASTICSEARCH6=yes
    - env: TOXENV=py37-dj22-postgres-elasticsearch7 INSTALL_ELASTICSEARCH7=yes
    - env: TOXENV=py38-dj22-postgres-elasticsearch7 INSTALL_ELASTICSEARCH7=yes
    # allow failures against Django 2.2.x stable branch
    - env: TOXENV=py37-dj22stable-postgres-noelasticsearch
    # allow failures against Django master
    - env: TOXENV=py37-djmaster-postgres-noelasticsearch

# Services
services:
  - elasticsearch
  - mysql

# Package installation
install:
  - pip install tox codecov
  - 'if [[ -n "$INSTALL_ELASTICSEARCH2" ]]; then ./scripts/travis/install_elasticsearch2.sh; fi'
  - 'if [[ -n "$INSTALL_ELASTICSEARCH5" ]]; then ./scripts/travis/install_elasticsearch5.sh; fi'
  - 'if [[ -n "$INSTALL_ELASTICSEARCH6" ]]; then ./scripts/travis/install_elasticsearch6.sh; fi'
  - 'if [[ -n "$INSTALL_ELASTICSEARCH7" ]]; then ./scripts/travis/install_elasticsearch7.sh; fi'

# Pre-test configuration
before_script:
  - psql -c 'create database wagtaildemo;' -U postgres
  - mysql -e "SET GLOBAL wait_timeout = 36000;"
  - mysql -e "SET GLOBAL max_allowed_packet = 134209536;"

# Run the tests
script:
  tox

after_success:
  - codecov -F backend

# Who to notify about build results
notifications:
  slack:
    secure: Y/UERaVnR+RL2dOqLR0Nc60JdGkejQ1Ae5zvPRYdDiMIGSv/1KC3T5Dp8NxamqIlozbQNmRaZD+i4AdX60g1M3xlB9DMINzY584YK0X2T2S28+xIgE0MQJijbpfbk2veV8PMeA6EHNpG4zoT+4sbcSyljt9TPcYTTTiTB8rAtc0=

# bump Travis: 1
