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 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162
|
# Tox (https://tox.readthedocs.io) is a tool for running tests
# in multiple virtualenvs. This configuration file will run the tornado
# test suite on all supported python versions. To use it, "pip install tox"
# and then run "tox" from this directory.
#
# This configuration requires tox 1.8 or higher.
#
# Installation tips:
# When building pycurl on my macports-based setup, I need to either set the
# environment variable ARCHFLAGS='-arch x86_64' or use
# 'port install curl +universal' to get both 32- and 64-bit versions of
# libcurl.
[tox]
envlist =
# Basic configurations: Run the tests in both minimal installations
# and with all optional dependencies.
# (pypy3 doesn't have any optional deps yet)
{py27,pypy,py33,py34,py35,pypy3},
{py27,pypy,py33,py34,py35}-full,
# Also run the tests with each possible replacement of a default
# component. Run each test on both python 2 and 3 where possible.
# (Only one 2.x and one 3.x unless there are known differences).
# py2 and py3 are aliases for py27-full and py35-full.
# Alternate HTTP clients.
{py2,py3}-curl,
# Alternate IOLoops.
{py2,py3}-select,
{py2,py3}-full-twisted,
py2-twistedlayered,
{py3,py33}-full-asyncio,
py2-full-trollius,
# Alternate Resolvers.
{py2,py3}-full-{threadedresolver},
{py2,py3}-full-caresresolver,
# Other configurations; see comments below.
{py2,py3}-{monotonic,opt},
py3-{lang_c,lang_utf8},
py2-locale,
{py27,py3}-unittest2,
# Ensure the sphinx build has no errors or warnings
py3-sphinx-docs,
# Run the doctests via sphinx (which covers things not run
# in the regular test suite and vice versa)
{py2,py3}-sphinx-doctest
[testenv]
# Most of these are defaults, but if you specify any you can't fall back
# defaults for the others.
basepython =
py27: python2.7
py33: python3.3
py34: python3.4
py35: python3.5
pypy: pypy
pypy3: pypy3
py2: python2.7
py3: python3.5
deps =
# unittest2 doesn't add anything we need on 2.7+, but we should ensure that
# its existence doesn't break anything due to conditional imports.
py27-unittest2: unittest2
py3-unittest2: unittest2py3k
# cpython-only deps: pycurl installs but curl_httpclient doesn't work;
# twisted mostly works but is a bit flaky under pypy.
{py27,py33,py34,py35}-full: pycurl
{py2,py3}: pycurl>=7.19.3.1
# twisted is cpython only.
{py27,py33,py34,py35}-full: twisted
{py2,py3}: twisted
# pycares installation currently fails on py33
# (https://github.com/pypa/pip/pull/816)
{py2,py3,py27,py33,py34,py35}-full: pycares
# futures became standard in py32
{py2,py27,pypy}-full: futures
# mock became standard in py33
{py2,py27,pypy,py3,pypy3}-full: mock
# singledispatch became standard in py34.
{py2,py27,pypy,py3,py33}-full: singledispatch
py33-asyncio: asyncio
trollius: trollius
py2-monotonic: monotonic
sphinx: sphinx
sphinx: sphinx_rtd_theme
setenv =
# The extension is mandatory on cpython.
{py2,py27,py3,py33,py34,py35}: TORNADO_EXTENSION=1
# In python 3, opening files in text mode uses a
# system-dependent encoding by default. Run the tests with "C"
# (ascii) and "utf-8" locales to ensure we don't have hidden
# dependencies on this setting.
lang_c: LANG=C
lang_utf8: LANG=en_US.utf-8
# tox's parser chokes if all the setenv entries are conditional.
DUMMY=dummy
{py2,py27,py3,py33,py34,py35}-no-ext: TORNADO_EXTENSION=0
# All non-comment lines but the last must end in a backslash.
# Tox filters line-by-line based on the environment name.
commands =
python \
# py3*: -b turns on an extra warning when calling
# str(bytes), and -bb makes it an error.
{py3,py33,py34,py35,pypy3}: -bb \
# Python's optimized mode disables the assert statement, so
# run the tests in this mode to ensure we haven't fallen into
# the trap of relying on an assertion's side effects or using
# them for things that should be runtime errors.
opt: -O \
-m tornado.test.runtests \
# Note that httpclient_test is always run with both client
# implementations; this flag controls which client all the
# other tests use.
curl: --httpclient=tornado.curl_httpclient.CurlAsyncHTTPClient \
select: --ioloop=tornado.platform.select.SelectIOLoop \
twisted: --ioloop=tornado.platform.twisted.TwistedIOLoop \
twistedlayered: --ioloop=tornado.test.twisted_test.LayeredTwistedIOLoop --resolver=tornado.platform.twisted.TwistedResolver \
{asyncio,trollius}: --ioloop=tornado.platform.asyncio.AsyncIOLoop \
caresresolver: --resolver=tornado.platform.caresresolver.CaresResolver \
threadedresolver: --resolver=tornado.netutil.ThreadedResolver \
monotonic: --ioloop_time_monotonic \
# Test with a non-english locale to uncover str/bytes mixing issues.
locale: --locale=zh_TW \
{posargs:}
# python will import relative to the current working directory by default,
# so cd into the tox working directory to avoid picking up the working
# copy of the files (especially important for the speedups module).
changedir = {toxworkdir}
# tox 1.6 passes --pre to pip by default, which currently has problems
# installing pycurl and monotime (https://github.com/pypa/pip/issues/1405).
# Remove it (it's not a part of {opts}) to only install real releases.
install_command = pip install {opts} {packages}
[testenv:py3-sphinx-docs]
changedir = docs
# For some reason the extension fails to load in this configuration,
# but it's not really needed for docs anyway.
setenv = TORNADO_EXTENSION=0
commands =
sphinx-build -q -E -n -W -b html . {envtmpdir}/html
[testenv:py2-sphinx-doctest]
changedir = docs
setenv = TORNADO_EXTENSION=0
# No -W for doctests because that disallows tests with empty output.
commands =
sphinx-build -q -E -n -b doctest . {envtmpdir}/doctest
[testenv:py3-sphinx-doctest]
changedir = docs
setenv = TORNADO_EXTENSION=0
commands =
sphinx-build -q -E -n -b doctest . {envtmpdir}/doctest
|