[tox] envlist = # Test these environments first, to catch most errors early... lint django20-py36 django18-py27 docs # ... then test all the other supported combinations: django20-py{35,py3} django111-py{27,34,35,36,py2} django110-py{27,34,35,py2} django19-py{27,34,35,py2} django18-py{34,35,py2} # ... then prereleases (if available): django21-py{35,36,37} djangoMaster-py{36,37} [testenv] deps = django18: django>=1.8,<1.9 django19: django>=1.9,<1.10 django110: django>=1.10,<1.11 django111: django>=1.11,<1.12 django20: django>=2.0,<2.1 django21: django>=2.1a1 djangoMaster: https://github.com/django/django/tarball/master # testing dependencies (duplicates setup.py tests_require): mock boto3 sparkpost ignore_outcome = django21: True djangoMaster: True usedevelop = True args_are_paths = False commands = python --version # pip install .[mailgun,...,sparkpost] ## usedevelop=True + manual deps is much faster on repeat runs python runtests.py {posargs} passenv = 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 \ | rst2html.py --config=docs/_readme/docutils.cfg \ > {env:DOCS_BUILD_DIR}/readme.html' [travis] unignore_outcomes = True python = 3.6: py36, lint, docs [travis:env] DJANGO = 1.8: django18 1.9: django19 1.10: django110 1.11: django111 2.0: django20 2.1: django21 master: djangoMaster LINT_AND_DOCS = true: lint, docs docs: docs lint: lint