[tox]
minversion = 1.6
envlist = pep8,py37,py36,py35,py27
skipsdist = True

[testenv]
usedevelop = True
install_command = pip install {opts} {packages}
deps =
       -c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt}
       -r{toxinidir}/requirements.txt
       -r{toxinidir}/test-requirements.txt
commands = stestr run {posargs}
whitelist_externals = bash

[testenv:pep8]
basepython = python3
commands = flake8
           bash -c tools/check_duplicate_jinja_blocks.sh

[testenv:venv]
basepython = python3
commands = {posargs}

[testenv:cover]
basepython = python3
setenv =
  PYTHON=coverage run --source tripleo_common --parallel-mode
commands =
  coverage erase
  stestr run {posargs}
  coverage combine
  coverage html -d cover
  coverage xml -o cover/coverage.xml
  coverage report

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

[testenv:debug]
basepython = python3
commands = oslo_debug_helper {posargs}

[testenv:bashate]
commands =
# Run bashate check for all bash scripts
# Ignores the following rules:
# E006: Line longer than 79 columns (as many scripts use jinja
#       templating, this is very difficult)
# E040: Syntax error determined using `bash -n` (as many scripts
#       use jinja templating, this will often fail and the syntax
#       error will be discovered in execution anyway)
    bash -c "git ls-files | xargs grep --binary-files=without-match \
        --files-with-match '^.!.*\(ba\)\?sh$' \
        --exclude-dir .tox \
        --exclude-dir .git \
        | xargs bashate --error . --verbose --ignore=E006,E040,E042"

[flake8]
# E123, E125 skipped as they are invalid PEP-8.

show-source = True
ignore = E123,E125
builtins = _
exclude=.venv,.git,.tox,dist,doc,*lib/python*,*egg,build,releasenotes

[testenv:releasenotes]
basepython = python3
commands = bash -c tools/releasenotes_tox.sh