# Tox (http://codespeak.net/~hpk/tox/) 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. # # See also tornado/test/run_pyversion_tests.py, which is faster but # less thorough. # # On my macports-based setup, the environment variable # ARCHFLAGS='-arch x86_64' must be set when building pycurl. [tox] # "-full" variants include optional dependencies, to ensure # that things work both in a bare install and with all the extras. envlist = py27-full, py27-curl, py32-full, pypy, py26, py26-full, py27, py32, py32-utf8, py33, py27-opt, py32-opt, pypy-full, py27-select, py27-monotonic, py33-monotonic, py27-twisted, py27-threadedresolver, py27-twistedresolver, py27-twistedlayered, py27-caresresolver, py32-caresresolver [testenv] commands = python -m tornado.test.runtests {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 2to3). changedir = {toxworkdir} # Note that PYTHONPATH must not be set when running tox (and setting it # with the following doesn't seem to work, since tox/virtualenv appends to # PYTHONPATH) #environment = PYTHONPATH= [testenv:py26] basepython = python2.6 deps = unittest2 # py26-full deliberately runs an older version of twisted to ensure # we're still compatible with the oldest version we support. [testenv:py26-full] basepython = python2.6 deps = futures mock pycurl twisted==11.0.0 unittest2 [testenv:py27-full] basepython = python2.7 deps = futures mock pycurl twisted>=12.2.0 [testenv:py27-curl] # Same as py27-full, but runs the tests with curl_httpclient by default. # Note that httpclient_test is always run with both client implementations; # this flag controls which client all the other tests use. basepython = python2.7 deps = futures mock pycurl twisted>=11.1.0 commands = python -m tornado.test.runtests --httpclient=tornado.curl_httpclient.CurlAsyncHTTPClient {posargs:} [testenv:py27-select] # Same as py27-full, but runs the tests with the select IOLoop. # The other tests will run with the most platform-appropriate implementation, # but this one is the lowest common denominator and should work anywhere. basepython = python2.7 deps = futures mock pycurl twisted>=12.0.0 commands = python -m tornado.test.runtests --ioloop=tornado.platform.select.SelectIOLoop {posargs:} [testenv:py27-twisted] basepython = python2.7 deps = futures mock pycurl twisted>=12.3.0 commands = python -m tornado.test.runtests --ioloop=tornado.platform.twisted.TwistedIOLoop {posargs:} [testenv:py27-monotonic] basepython = python2.7 # TODO: remove this url when the pypi page is updated. deps = http://pypi.python.org/packages/source/M/Monotime/Monotime-1.0.tar.gz futures mock pycurl twisted commands = python -m tornado.test.runtests --ioloop_time_monotonic {posargs:} [testenv:py27-threadedresolver] basepython = python2.7 deps = futures mock pycurl twisted commands = python -m tornado.test.runtests --resolver=tornado.netutil.ThreadedResolver {posargs:} [testenv:py27-twistedresolver] basepython = python2.7 deps = futures mock pycurl twisted commands = python -m tornado.test.runtests --resolver=tornado.platform.twisted.TwistedResolver {posargs:} [testenv:py27-twistedlayered] basepython = python2.7 deps = futures mock pycurl twisted commands = python -m tornado.test.runtests --ioloop=tornado.test.twisted_test.LayeredTwistedIOLoop --resolver=tornado.platform.twisted.TwistedResolver {posargs:} [testenv:py27-caresresolver] basepython = python2.7 deps = futures mock pycares pycurl twisted commands = python -m tornado.test.runtests --resolver=tornado.platform.caresresolver.CaresResolver {posargs:} [testenv:pypy-full] # This configuration works with pypy 1.9. pycurl installs ok but # curl_httpclient doesn't work. Twisted works most of the time, but # its tests seem flaky under pypy, so we don't run it for now. Also # note that travis-ci does not yet have support for building C # extensions with pypy, so we don't try to run this configuration # there. basepython = pypy deps = futures mock # 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. [testenv:py32] basepython = python3.2 setenv = LANG=C # -b turns on an extra warning when calling str(bytes), and -bb makes # it an error. commands = python -bb -m tornado.test.runtests {posargs:} [testenv:py32-utf8] basepython = python3.2 setenv = LANG=en_US.utf-8 [testenv:py32-full] basepython = python3.2 deps = mock [testenv:py33] # tox doesn't yet know "py33" by default basepython = python3.3 [testenv:py33-monotonic] basepython = python3.3 commands = python -m tornado.test.runtests --ioloop_time_monotonic {posargs:} [testenv:py32-caresresolver] basepython = python3.2 deps = pycares commands = python -m tornado.test.runtests --resolver=tornado.platform.caresresolver.CaresResolver {posargs:} # 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. [testenv:py27-opt] basepython = python2.7 deps = futures mock pycurl twisted>=12.0.0 commands = python -O -m tornado.test.runtests {posargs:} [testenv:py32-opt] basepython = python3.2 commands = python -O -m tornado.test.runtests {posargs:} deps = mock