# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
# For details: https://bitbucket.org/ned/coveragepy/src/default/NOTICE.txt

[tox]
envlist = py{26,27,33,34,35}, pypy{24,26,40,3_24}, doc
skip_missing_interpreters = True

[testenv]
usedevelop = True

deps =
    # https://requires.io/github/nedbat/coveragepy/requirements/
    nose==1.3.7
    mock==1.3.0
    PyContracts==1.7.6
    py26: unittest2==1.1.0
    py{26,27,33,34,35}: gevent==1.1b6
    py{26,27,33,34}: eventlet==0.17.4
    py{26,27,33,34,35}: greenlet==0.4.9

passenv = *
setenv =
    pypy,pypy{24,26,40,3_24}: COVERAGE_NO_EXTENSION=no C extension under PyPy

commands =
    python setup.py --quiet clean develop

    # Create tests/zipmods.zip
    # Install the egg1 egg
    # Remove the C extension so that we can test the PyTracer
    python igor.py zip_mods install_egg remove_extension

    # Test with the PyTracer
    python igor.py test_with_tracer py {posargs}

    # Build the C extension and test with the CTracer
    python setup.py --quiet build_ext --inplace
    python igor.py test_with_tracer c {posargs}

[testenv:pypy]
basepython = pypy

[testenv:pypy24]
basepython = pypy2.4

[testenv:pypy26]
basepython = pypy2.6

[testenv:pypy3_24]
basepython = pypy3-2.4

[testenv:pypy40]
basepython = pypy4.0

[testenv:doc]
# Build the docs so we know if they are successful.  We build twice: once with
# -q to get all warnings, and once with -QW to get a success/fail status
# return.
deps = -rdoc/requirements.pip
commands =
    sphinx-build -aEnq doc doc/_build/html
    sphinx-build -aEnQW doc doc/_build/html
    rst2html.py --strict CHANGES.rst doc/_build/trash
    rst2html.py --strict README.rst doc/_build/trash

# Yes, pep8 will read its settings from tox.ini!
[pep8]
# E265: block comment should start with '# '
# E301 expected 1 blank line, found 0
# E401 multiple imports on one line
# The rest are the default ignored warnings.
ignore = E265,E123,E133,E226,E241,E242,E301,E401
max-line-length = 100
