forked from tornadoweb/tornado
-
Notifications
You must be signed in to change notification settings - Fork 1
/
tox.ini
161 lines (144 loc) · 6.11 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
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
# 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,py34,py35,py36,pypy3},
{py27,pypy,py34,py35,py36}-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-select,
py2-full-twisted,
py2-twistedlayered,
# Alternate Resolvers.
{py2,py3}-full-caresresolver,
# Other configurations; see comments below.
py2-monotonic,
{py2,py3}-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,
py3-lint
[testenv]
# Most of these are defaults, but if you specify any you can't fall back
# defaults for the others.
basepython =
py27: python2.7
py34: python3.4
py35: python3.5
py36: python3.6
pypy: pypy
pypy3: pypy3
py2: python2.7
py3: python3.6
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,py34,py35,py36}-full: pycurl
{py2,py3}: pycurl>=7.19.3.1
# twisted is cpython only.
{py27,py34,py35,py36}-full: twisted
{py2,py3}: twisted
{py2,py3,py27,py34,py35,py36}-full: pycares
# mock became standard in py33
{py2,py27,pypy,pypy3}-full: mock
# singledispatch became standard in py34.
{py2,py27,pypy}-full: singledispatch
py2-monotonic: monotonic
sphinx: sphinx
sphinx: sphinx_rtd_theme
lint: flake8
setenv =
# The extension is mandatory on cpython.
{py2,py27,py3,py34,py35,py36}: 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,py34,py35,py36}-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,py34,py35,py36,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 \
poll: --ioloop=tornado.ioloop.PollIOLoop \
select: --ioloop=tornado.platform.select.SelectIOLoop \
twisted: --ioloop=tornado.platform.twisted.TwistedIOLoop \
twistedlayered: --ioloop=tornado.test.twisted_test.LayeredTwistedIOLoop --resolver=tornado.platform.twisted.TwistedResolver \
caresresolver: --resolver=tornado.platform.caresresolver.CaresResolver \
threadedresolver: --resolver=tornado.netutil.ThreadedResolver \
monotonic: --ioloop=tornado.ioloop.PollIOLoop --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
[testenv:py3-lint]
commands = flake8 {posargs:}
changedir = {toxinidir}