/
tox.ini
130 lines (127 loc) · 4.35 KB
/
tox.ini
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
[tox]
envlist =
# 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
# Factors: django-python-extras
# Test lint, docs, earliest/latest Django first, to catch most errors early...
lint
django50-py312-all
django30-py37-all
docs
# ... then test all the other supported combinations:
# Django 5.0: Python 3.10, 3.11, and 3.12
django50-py{310,311}-all
# Django 4.2: Python 3.8, 3.9, 3.10, 3.11
django42-py{38,39,310,311,py38,py39}-all
# Django 4.1: Python 3.8, 3.9, 3.10
django41-py{38,39,310,py38,py39}-all
# Django 4.0: Python 3.8, 3.9, 3.10
django40-py{38,39,310,py38,py39}-all
# Django 3.2: Python 3.6 (eol 2021-12-23), 3.7, 3.8, 3.9
django32-py{37,38,39,py38,py39}-all
# Django 3.1: Python 3.6 (eol 2021-12-23), 3.7, 3.8, 3.9 (added in 3.1.3)
django31-py{37,38,39,py38,py39}-all
# Django 3.0: Python 3.6 (eol 2021-12-23), 3.7, 3.8, 3.9 (added in 3.0.11)
django30-py{38,39,py38,py39}-all
# ... then prereleases (if available) and current development:
# Django 5.1 alpha: Python 3.10, 3.11, and 3.12
django51-py{310,311,312}-all
# Django 5.2 dev: Python 3.10, 3.11, and 3.12
djangoDev-py{310,311,312}-all
# ... then partial installation (limit extras):
django50-py312-{none,amazon_ses,postal,resend}
# tox requires isolated builds to use pyproject.toml build config:
isolated_build = True
[testenv]
args_are_paths = false
# Download latest version of pip/setuptools available on each Python version:
download = true
deps =
-rtests/requirements.txt
django30: django~=3.0.0
django31: django~=3.1.0
django32: django~=3.2.0
django40: django~=4.0.0
django41: django~=4.1.0
django42: django~=4.2.0
django50: django~=5.0.0
django51: django~=5.1.0a0
djangoDev: https://github.com/django/django/tarball/main
extras =
# Install [esp-name] extras only when testing "all" or esp_name factor.
# (Only ESPs with extra dependencies need to be listed here.
# Careful: tox factors (on the left) use underscore; extra names use hyphen.)
all,amazon_ses: amazon-ses
all,postal: postal
all,resend: resend
setenv =
# tell runtests.py to limit some test tags based on extras factor
# (resend should work with or without its extras, so it isn't in `none`)
none: ANYMAIL_SKIP_TESTS=amazon_ses,postal
amazon_ses: ANYMAIL_ONLY_TEST=amazon_ses
brevo: ANYMAIL_ONLY_TEST=brevo
mailersend: ANYMAIL_ONLY_TEST=mailersend
mailgun: ANYMAIL_ONLY_TEST=mailgun
mailjet: ANYMAIL_ONLY_TEST=mailjet
mandrill: ANYMAIL_ONLY_TEST=mandrill
postal: ANYMAIL_ONLY_TEST=postal
postmark: ANYMAIL_ONLY_TEST=postmark
resend: ANYMAIL_ONLY_TEST=resend
sendgrid: ANYMAIL_ONLY_TEST=sendgrid
unisender_go: ANYMAIL_ONLY_TEST=unisender_go
sparkpost: ANYMAIL_ONLY_TEST=sparkpost
ignore_outcome =
# CI that wants to handle errors itself can set TOX_OVERRIDE_IGNORE_OUTCOME=false
djangoDev: {env:TOX_OVERRIDE_IGNORE_OUTCOME:true}
commands_pre =
python -VV
python -m pip --version
python -c 'import django; print("Django", django.__version__)'
commands =
python runtests.py {posargs}
passenv =
ANYMAIL_ONLY_TEST
ANYMAIL_SKIP_TESTS
ANYMAIL_RUN_LIVE_TESTS
CONTINUOUS_INTEGRATION
ANYMAIL_TEST_*
[testenv:lint]
basepython = python3.8
skip_install = true
passenv =
CONTINUOUS_INTEGRATION
# Make sure pre-commit can clone hook repos over ssh or http proxy.
# https://pre-commit.com/#usage-with-tox
SSH_AUTH_SOCK
http_proxy
https_proxy
no_proxy
# (but not any of the live test API keys)
deps =
pre-commit
commands_pre =
python -VV
pre-commit --version
commands =
pre-commit validate-config
pre-commit run --all-files
[testenv:docs]
basepython = python3.11
passenv =
CONTINUOUS_INTEGRATION
# (but not any of the live test API keys)
setenv =
DOCS_BUILD_DIR={envdir}/_html
deps =
-rdocs/requirements.txt
commands_pre =
python -VV
sphinx-build --version
commands =
# Build and verify docs:
sphinx-build -W -b dirhtml docs {env:DOCS_BUILD_DIR}
# Build and verify package metadata readme.
# Errors here are in README.rst:
python docs/_readme/render.py \
--package django-anymail \
--out {env:DOCS_BUILD_DIR}/readme.html