dist: xenial
language: python

# Used: travis encrypt "irc.libera.chat#scons" --add notifications.irc
notifications:
  irc:
    secure: TTb+41Bj1qIUc6vj+kDqBME8H3lqXdAe1RWAjjz5hL7bzFah6qCBHNJn4DwzqYs6+Pwuwp+6wFy8hgmQttJnXve4h6GtjtvlWprDqxaC7RkFqMWFDBzDalgbB54Bi4+TTZmSJ1K/duI3LrDaN873nyn+2GBnj+3TiNtgURp1fsJMpPxXJzAsoC8UthEsbx0Zkoal/WF+IfsT2q1yQRmAwB9r/drbahx/FfL16r1QjDbI9y1fKvN5J3PirLUvxtHfuH1r8zq1vlLew2fvldgVRtFv7+Lsk2waG/eiRpMf94V5JWP1rNreV/i4AUbZaTLb3bkrhtvTjSKhvx69Ydm+ygXdRgWOD/KRgqpLNAfA+t/a2J1R++89svQI4dPBpQjlfua1elcDCFddeIslgnjDUPO23Y0o7tHAy8sWkwhTcZH1Wm42uJP6Z6tHTH6+dMLvvZpkq4RUKUcrXvoUvCsVlWMGjcsBX+AEQSFGDJnLtLehO9x0QbgVga/IRKjgpDWgQDZgro3AkGg/zzVj5uFRUoU+rbmEXq9feh5i3HfExAvA3UoEtnQ6uadDyWqtQcLRFmPSWDU82CO+sanGdFL0jBjigE8ubPObzxEAz3Fg1xk56OYBkAdEd+2KEzeO1nqJmrhsnc3c/3+b1cBvaL5ozW4XB4XcWsOi268SoiBrcBo=

addons:
  apt:
    update: true

os:
  - linux

install:
  # needed for Docbook tests, must be in virtualenv context
  - pip install -r requirements-dev.txt
  # do the rest of the image setup
  - ./.travis/install.sh

# Note: Travis does not provide a way to specify the order of
# jobs within a Stage, which are "run in parallel", but with
# limitations: from observation four or five are kicked
# off, then additional jobs as initial ones complete.
# We want the slowest jobs in the first batch since the
# faster ones are less than half the time of the slowest,
# we should be able to finish the Test task in the time of the
# slowest job rather than (a fast job + the slowest job).
# Putting the pypy jobs first may help with this, though it's
# apparently not guaranteed.

jobs:

  # pypy is not passing atm, but still report build success for now
  # allow coverage to fail, so we can still do testing for all platforms
  allow_failures:
    - python: 3.10-dev

  include:
    - &test_job
      script: python runtest.py -a -t -j 2 || if [[ $? == 2 ]]; then true; else false; fi
      before_script: skip
      after_success: skip
      python: 3.5

    - <<: *test_job
      python: 3.9
      dist: focal

    - <<: *test_job
      python: 3.10-dev
      dist: focal
      env: BUILD_LXML_FROM_GIT=1

    - &coverage_jobs
      dist: bionic
      python: 3.7
      name: coverage
      before_script:
        - ./.travis/coverage_setup.sh

      script:
        - coverage run -p --rcfile="$PWD/.coveragerc" runtest.py -a -j 2 || if [[ $? == 2 ]]; then true; else false; fi

      after_script:
        - coverage combine
        - coverage report
        - coverage xml -i -o coverage_xml.xml
        - codecov -X gcov --file coverage_xml.xml
