# 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, and a
# symlink from mysql_config to mysql_config5 must exist when building
# MySQL-python.
[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, py25-full, py32, pypy, py25, py26, py26-full, py27
[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:py25]
basepython = python2.5
deps = simplejson

[testenv:py25-full]
basepython = python2.5
deps =
     MySQL-python
     pycurl
     simplejson
     twisted>=11.1.0

# 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 =
     MySQL-python
     pycurl
     twisted==11.0.0

[testenv:py27-full]
basepython = python2.7
deps =
     MySQL-python
     pycurl
     twisted>=11.1.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 =
     MySQL-python
     pycurl
     twisted>=11.0.0
commands = python -m tornado.test.runtests --httpclient=tornado.curl_httpclient.CurlAsyncHTTPClient {posargs:}

# No pypy-full yet: pycurl doesn't build with pypy, and installing
# twisted under pypy takes a *very* long time.  MySQL-python builds with
# pypy, but doesn't work.

# No py32-full yet: none of our dependencies currently work on python3.
