[tox]
minversion = 2.0
envlist = py3,py27,pep8
skipsdist = True

[testenv]
usedevelop = True
install_command = {toxinidir}/tools/tox_install.sh {env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt} {opts} {packages}
setenv =
   VIRTUAL_ENV={envdir}
   CLIENT_NAME=openstack-doc-tools
# Install also sitemap scraping tool, not installed by default
# therefore not in requirements file
deps = scrapy>=1.0.0
       -r{toxinidir}/test-requirements.txt
       -r{toxinidir}/requirements.txt
commands = python setup.py testr --slowest --testr-args='{posargs}'

[testenv:pep8]
commands =
    flake8
    # Run doc8 to check .rst and .txt files.
    # HACKING.rst is the only file that is not referenced from
    # doc/source, so add it explicitly.
    doc8 -e txt -e rst doc/source/ HACKING.rst
    # Run bashate during pep8 runs to ensure violations are caught by
    # the check and gate queues.
    bashate autogenerate_config_docs/autohelp-wrapper \
        bin/doc-tools-check-languages \
        cleanup/remove_trailing_whitespaces.sh

[testenv:pylint]
commands = pylint os_doc_tools cleanup sitemap

[testenv:releasenotes]
commands = sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html

[testenv:sitemap]
# commands = functional test command goes here

[testenv:venv]
commands = {posargs}

[testenv:docs]
commands = python setup.py build_sphinx

[testenv:bindep]
# Do not install any requirements. We want this to be fast and work even if
# system dependencies are missing, since it's used to tell you what system
# dependencies are missing! This also means that bindep must be installed
# separately, outside of the requirements files, and develop mode disabled
# explicitly to avoid unnecessarily installing the checked-out repo too (this
# further relies on "tox.skipsdist = True" above).
deps = bindep
commands = bindep test
usedevelop = False

[flake8]
show-source = True
builtins = _
exclude=.venv,.git,.tox,dist,*lib/python*,*egg,build,*autogenerate_config_docs/venv,*autogenerate_config_docs/sources,doc/source/conf.py
# 28 is currently the most complex thing we have
max-complexity=29
ignore = H101
