# 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, py32-utf8, py33
[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>=12.0.0
     # zope.interface (used by twisted) dropped python 2.5 support in 4.0
     zope.interface<4.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>=12.0.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.1.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.

# 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

[testenv:py32-utf8]
basepython = python3.2
setenv = LANG=en_US.utf-8

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

[testenv:py33]
# tox doesn't yet know "py33" by default
basepython = python3.3
