[tox]
minversion = 1.8.1
envlist = py27,py35,pep8,pylint
skipsdist = True

[testenv]
usedevelop = True
deps =
    -r{toxinidir}/requirements.txt
    -r{toxinidir}/test-requirements.txt

passenv =
    FREEZER_TEST_SSH_KEY
    FREEZER_TEST_SSH_USERNAME
    FREEZER_TEST_SSH_HOST
    FREEZER_TEST_CONTAINER
    FREEZER_TEST_OS_TENANT_NAME
    FREEZER_TEST_OS_USERNAME
    FREEZER_TEST_OS_REGION_NAME
    FREEZER_TEST_OS_PASSWORD
    FREEZER_TEST_OS_AUTH_URL
    FREEZER_TEST_NO_LVM
    http_proxy HTTP_PROXY https_proxy HTTPS_PROXY no_proxy NO_PROXY

install_command = pip install -c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt?h=stable/queens} {opts} {packages}
setenv = VIRTUAL_ENV={envdir}

whitelist_externals =
    find
    coverage
    rm

python_files = test_*.py
norecursedirs  = .tox .venv specs

[testenv:py27]
basepython = python2.7
setenv = OS_PATH_TEST = ./freezer_api/tests/unit
commands =
    find . -type f -name "*.py[c|o]" -delete
    rm -rf .testrepository
    python setup.py test --coverage --coverage-package-name freezer_api --testr-args="{posargs}"
    coverage report -m
    rm -f .coverage
    rm -rf .testrepository

[testenv:py35]
basepython = python3.5
setenv = OS_PATH_TEST = ./freezer_api/tests/unit
commands =
    find . -type f -name "*.py[c|o]" -delete
    rm -rf .testrepository
    python setup.py test --coverage --coverage-package-name freezer_api --testr-args="{posargs}"
    coverage report -m
    rm -f .coverage
    rm -rf .testrepository

[testenv:venv]
commands = {posargs}

[testenv:cover]
commands =
    find . -type f -name "*.py[c|o]" -delete
    python setup.py test --coverage --coverage-package-name freezer_api --testr-args="{posargs}"
    coverage report -m
    rm -f .coverage
    rm -rf .testrepository

[testenv:pylint]
commands = pylint --rcfile .pylintrc freezer_api

[testenv:pep8]
commands = flake8 freezer_api

[flake8]
# Ignored hackings:
# H202 -> assertRaises(Exception, ...) too broad
# H401 -> Docstrings should not start with a space
# H404 -> Multi line docstrings should start without a leading new line.
# H405 -> Multi line docstrings should start with a one line summary followed by an empty line.
ignore = H202,H401,H404,H405
show-source = True
exclude = .venv,.tox,dist,doc,*egg,specs,build

[testenv:docs]
commands =
  rm -rf api-ref/build
  python setup.py build_sphinx
  sphinx-build -W -b html api-ref/source api-ref/build/html

[testenv:api-ref]
whitelist_externals = rm
commands =
  rm -rf api-ref/build
  sphinx-build -W -a -E -b html -d api-ref/build/doctrees api-ref/source api-ref/build/html

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

[testenv:genpolicy]
commands = oslopolicy-sample-generator --config-file etc/freezer/freezer-policy-generator.conf
