Files
django-anymail/.travis.yml
Mike Edmunds 978996d7b8 Test without optional packages
Tox:
* Add Tox factor for extras (all, none, individual ESP).
  For now, only break out ESPs that have specific extra
  dependencies (amazon_ses, sparkpost).
* Install most package dependencies (including extras)
  through the package itself.
* Use new runtests.py environment vars to limit test tags
  when Tox isn't installing all extras.

Travis:
* Rework matrix to request specific TOXENVs directly;
  drop tox-travis.

Test runner (runtests.py):
* Centralize RUN_LIVE_TESTS logic in runtests.py
* Add ANYMAIL_ONLY_TEST and ANYMAIL_SKIP_TESTS env vars
  (comma-separated lists of tags)

Test implementations:
* Tag all ESP-specific tests with ESP
* Tag live tests with "live"
* Don't import ESP-specific packages at test module level. 
  (Test discovery imports test modules before tag-based filtering.)

Closes #104
2019-02-09 15:04:08 -08:00

68 lines
2.4 KiB
YAML

sudo: false
language: python
dist: xenial
branches:
# Only run builds on release branches.
# (Builds will *also* still run on pull requests;
# this avoids duplicate builds on the PR *branches*, too.)
only:
- master
- /^v\d+\.\d+(\.\d+)?(-\S*)?$/
env:
global:
# Let Travis report failures that tox.ini would normally ignore:
- TOX_FORCE_IGNORE_OUTCOME=false
matrix:
include:
- python: 3.6
env: TOXENV="lint,docs"
# Anymail supports the same Python versions as Django, plus PyPy.
# https://docs.djangoproject.com/en/dev/faq/install/#what-python-version-can-i-use-with-django
# Live API integration tests are only run on a few, representative Python/Django version
# combinations, to avoid rapidly consuming the testing accounts' entire send allotments.
# Django 1.11: Python 2.7, 3.4, 3.5, or 3.6
- { env: TOXENV=django111-py27-all RUN_LIVE_TESTS=true, python: 2.7 }
- { env: TOXENV=django111-py34-all, python: 3.4 }
- { env: TOXENV=django111-py35-all, python: 3.5 }
- { env: TOXENV=django111-py36-all, python: 3.6 }
- { env: TOXENV=django111-pypy-all, python: pypy2.7-6.0 }
# Django 2.0: Python 3.5+
- { env: TOXENV=django20-py35-all, python: 3.5 }
- { env: TOXENV=django20-py36-all, python: 3.6 }
- { env: TOXENV=django20-pypy3-all, python: pypy3.5-6.0 }
# Django 2.1: Python 3.5, 3.6, or 3.7
- { env: TOXENV=django21-py35-all, python: 3.5 }
- { env: TOXENV=django21-py36-all RUN_LIVE_TESTS=true, python: 3.6 }
- { env: TOXENV=django21-py37-all, python: 3.7 }
- { env: TOXENV=django21-pypy3-all, python: pypy3.5-6.0 }
# Django 2.2: Python 3.5, 3.6, or 3.7
- { env: TOXENV=django22-py35-all, python: 3.5 }
- { env: TOXENV=django22-py36-all, python: 3.6 }
- { env: TOXENV=django22-py37-all, python: 3.7 }
- { env: TOXENV=django22-pypy3-all, python: pypy3.5-6.0 }
# Django development master (direct from GitHub source):
- { env: TOXENV=djangoMaster-py36-all, python: 3.6 }
# Install without optional extras (don't need to cover entire matrix)
- { env: TOXENV=django21-py37-none, python: 3.7 }
- { env: TOXENV=django21-py37-amazon_ses, python: 3.7 }
- { env: TOXENV=django21-py37-sparkpost, python: 3.7 }
allow_failures:
- env: TOXENV=djangoMaster-py36-all
python: 3.6
cache: pip
install:
# pin tox to avoid https://github.com/tox-dev/tox/issues/1160
- pip install tox~=3.6.1
script:
- tox