language: python

dist: xenial

addons:
  apt:
    packages:
      - libdbus-1-dev

matrix:
  include:
    - python: "3.6"
      env: TOXENV=py36
    - python: "3.7"
      env: TOXENV=py37
    - python: "3.8"
      env: TOXENV=py38
    - python: "3.9"
      env: TOXENV=py39
    - python: "3.9-dev"
      env: TOXENV=py39-dev
    # PyPy Environments
    - python: "pypy2.7-6.0"
      env: TOXENV=pypy
    - python: "pypy3.5-7.0"
      env: TOXENV=pypy3
    # An extra environment where additional packages are not installed
    - python: "3.9"
      env:
        - TOXENV=bare

install:
  - pip install babel
  # upgrade tox, pip, and virtualenv so Python 3.6 will build crytography:
  # https://travis-ci.community/t/pip-install-cryptography-fails-on-py36/11233
  - pip install -U tox pip virtualenv
  - pip install codecov
  - pip install -r dev-requirements.txt
  - pip install -r requirements.txt
  # bare installs do not include extra package dependencies
  - if [[ $TOXENV != 'bare' ]]; then pip install -r all-plugin-requirements.txt; fi
  # pypy and bare installs do not include dbus-python
  - if [[ $TOXENV != 'bare' ]] && [[ $TRAVIS_PYTHON_VERSION != 'pypy'* ]]; then travis_retry pip install dbus-python; fi

# run tests
script:
  - tox

after_success:
  - tox -e coverage-report
  - codecov

notifications:
  email: false
