[tox] envlist = # Factors: django-python-extras # Test these environments first, to catch most errors early... lint django22-py37-all django111-py27-all docs # ... then test all the other supported combinations: django22-py{35,36,py3}-all django21-py{35,36,37,py3}-all django20-py{35,36,py3}-all django111-py{34,35,36,py}-all # ... then prereleases (if available): django30-py{36,37,38,py3}-all djangoMaster-py{36,37,38}-all # ... then partial installation (limit extras): django22-py37-{none,amazon_ses,sparkpost} # ... then older versions of some dependencies: django111-py27-all-old_urllib3 django22-py37-all-old_urllib3 [testenv] deps = django111: django~=1.11.0 django20: django~=2.0.0 django21: django~=2.1.0 django22: django~=2.2.0 django30: django~=3.0.0 django31: django>=3.1a1 djangoMaster: https://github.com/django/django/tarball/master old_urllib3: urllib3<1.25 # 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'