mirror of
https://github.com/pacnpal/django-anymail.git
synced 2025-12-20 03:41:05 -05:00
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
92 lines
2.5 KiB
INI
92 lines
2.5 KiB
INI
[tox]
|
|
envlist =
|
|
# Factors: django-python-extras
|
|
# Test these environments first, to catch most errors early...
|
|
lint
|
|
django21-py36-all
|
|
django111-py27-all
|
|
docs
|
|
# ... then test all the other supported combinations:
|
|
django21-py{35,37,py3}-all
|
|
django20-py{35,36,py3}-all
|
|
django111-py{34,35,36,py}-all
|
|
# ... then prereleases (if available):
|
|
django22-py{35,36,37,py3}-all
|
|
djangoMaster-py{36,37}-all
|
|
# ... then partial installation (limit extras):
|
|
django21-py37-{none,amazon_ses,sparkpost}
|
|
|
|
[testenv]
|
|
deps =
|
|
django111: django~=1.11.0
|
|
django20: django~=2.0.0
|
|
django21: django~=2.1.0
|
|
django22: django>=2.2a1
|
|
djangoMaster: https://github.com/django/django/tarball/master
|
|
# testing dependencies (duplicates setup.py tests_require, less optional extras):
|
|
mock
|
|
extras =
|
|
all,amazon_ses: amazon_ses
|
|
all,sparkpost: sparkpost
|
|
setenv =
|
|
# tell runtests.py to limit some test tags based on extras factor
|
|
none: ANYMAIL_SKIP_TESTS=amazon_ses,sparkpost
|
|
amazon_ses: ANYMAIL_ONLY_TEST=amazon_ses
|
|
sparkpost: ANYMAIL_ONLY_TEST=sparkpost
|
|
ignore_outcome =
|
|
# CI that wants to handle errors itself can set TOX_FORCE_IGNORE_OUTCOME=false
|
|
djangoMaster: {env:TOX_FORCE_IGNORE_OUTCOME:true}
|
|
args_are_paths = false
|
|
commands_pre =
|
|
python -VV
|
|
commands =
|
|
python runtests.py {posargs}
|
|
passenv =
|
|
ANYMAIL_ONLY_TEST
|
|
ANYMAIL_SKIP_TESTS
|
|
RUN_LIVE_TESTS
|
|
CONTINUOUS_INTEGRATION
|
|
AMAZON_SES_TEST_*
|
|
MAILGUN_TEST_*
|
|
MAILJET_TEST_*
|
|
MANDRILL_TEST_*
|
|
POSTMARK_TEST_*
|
|
SENDINBLUE_TEST_*
|
|
SENDGRID_TEST_*
|
|
SPARKPOST_TEST_*
|
|
|
|
[testenv:lint]
|
|
basepython = python3
|
|
skip_install = true
|
|
passenv =
|
|
CONTINUOUS_INTEGRATION
|
|
# (but not any of the live test API keys)
|
|
deps =
|
|
flake8
|
|
commands =
|
|
python --version
|
|
flake8 --version
|
|
flake8
|
|
|
|
[testenv:docs]
|
|
basepython = python3
|
|
skip_install = true
|
|
passenv =
|
|
CONTINUOUS_INTEGRATION
|
|
# (but not any of the live test API keys)
|
|
setenv =
|
|
DOCS_BUILD_DIR={envdir}/_html
|
|
whitelist_externals = /bin/bash
|
|
deps =
|
|
sphinx
|
|
sphinx-rtd-theme
|
|
commands =
|
|
# Verify README.rst as used in setup.py long_description:
|
|
python setup.py check --restructuredtext --strict
|
|
# Build and verify docs:
|
|
sphinx-build -W -b dirhtml docs {env:DOCS_BUILD_DIR}
|
|
# Build README.rst into html:
|
|
/bin/bash -c 'python setup.py --long-description \
|
|
| rst2html5.py --config=docs/_readme/docutils.cfg \
|
|
> {env:DOCS_BUILD_DIR}/readme.html'
|