[tox]
envlist = flake8,py27,py36,py39,pylint,bandit
minversion = 1.6
# disable source dist generation because Zuul fails on setting up
# pbr randomly in the sdist step.
skipsdist = True

# tox does not work if the path to the workdir is too long, so move it to /tmp
toxworkdir = /tmp/{env:USER}_k8sapp_nginx_ingress_controllertox
stxdir = {toxinidir}/../../..
distshare={toxworkdir}/.tox/distshare

[testenv]
# usedevelop = True
# enabling usedevelop results in  py27 develop-inst:
# Exception: Versioning for this project requires either an sdist tarball,
# or access to an upstream git repository.
# Note. site-packages is true and rpm-python must be yum installed on your dev machine.
sitepackages = False

# tox is silly... these need to be separated by a newline....
whitelist_externals = bash
                      find

install_command = pip install \
    -v -v -v \
    -c{env:UPPER_CONSTRAINTS_FILE:https://opendev.org/openstack/requirements/raw/branch/stable/stein/upper-constraints.txt} \
    {opts} {packages}

# Note the hash seed is set to 0 until can be tested with a
# random hash seed successfully.
setenv = VIRTUAL_ENV={envdir}
         PYTHONHASHSEED=0
         PYTHONDONTWRITEBYTECODE=1
         OS_TEST_PATH=./k8sapp_nginx_ingress_controller/tests
         LANG=en_US.UTF-8
         LANGUAGE=en_US:en
         LC_ALL=C
         SYSINV_TEST_ENV=True
         TOX_WORK_DIR={toxworkdir}
         PYLINTHOME={toxworkdir}

# centos patching base dir is cgcs-patch
centos_deps = -r{toxinidir}/requirements.txt
              -r{toxinidir}/test-requirements.txt
              -e{[tox]stxdir}/config/sysinv/sysinv/sysinv
              -e{[tox]stxdir}/config/tsconfig/tsconfig
              -e{[tox]stxdir}/fault/fm-api/source
              -e{[tox]stxdir}/fault/python-fmclient/fmclient
              -e{[tox]stxdir}/utilities/ceph/python-cephclient/python-cephclient
              -e{[tox]stxdir}/update/cgcs-patch/cgcs-patch

# debian patching base dir is sw-patch
debian_deps = -r{toxinidir}/requirements.txt
              -r{toxinidir}/test-requirements.txt
              -e{[tox]stxdir}/config/sysinv/sysinv/sysinv
              -e{[tox]stxdir}/config/tsconfig/tsconfig
              -e{[tox]stxdir}/fault/fm-api/source
              -e{[tox]stxdir}/fault/python-fmclient/fmclient
              -e{[tox]stxdir}/utilities/ceph/python-cephclient/python-cephclient
              -e{[tox]stxdir}/update/sw-patch/cgcs-patch

# default deps are still centos
deps = {[testenv]centos_deps}

commands =
  find . -type f -name "*.pyc" -delete

[flake8]
exclude = build,dist,tools,.eggs
max-line-length=120

[testenv:flake8]
basepython = python3
deps = -r{toxinidir}/test-requirements.txt
       flake8-bugbear
commands =
  flake8 {posargs} .

[testenv:py27]
basepython = python2.7
commands =
  {[testenv]commands}
  stestr run {posargs}
  stestr slowest

[testenv:py36]
basepython = python3.6
commands =
  {[testenv]commands}
  stestr run {posargs}
  stestr slowest

[testenv:py39]
basepython = python3.9
deps = {[testenv]debian_deps}
install_command = pip install \
    -v -v -v \
    -c{toxinidir}/upper-constraints.txt \
    -c{env:UPPER_CONSTRAINTS_FILE:https://opendev.org/starlingx/root/raw/branch/master/build-tools/requirements/debian/upper-constraints.txt} \
    {opts} {packages}
commands =
  {[testenv]commands}
  stestr run {posargs}
  stestr slowest

[testenv:pep8]
# testenv:flake8 clone
basepython = {[testenv:flake8]basepython}
deps = {[testenv:flake8]deps}
commands = {[testenv:flake8]commands}

[testenv:venv]
commands = {posargs}

[bandit]

[testenv:bandit]
basepython = python3
deps = -r{toxinidir}/test-requirements.txt
        bandit

commands = bandit --ini tox.ini -n 5 -r k8sapp_nginx_ingress_controller

[testenv:pylint]
basepython = python2.7
sitepackages = False

deps = {[testenv]centos_deps}
       pylint
commands =
     pylint {posargs} k8sapp_nginx_ingress_controller --rcfile=./pylint.rc

[testenv:cover]
basepython = python2.7
deps = {[testenv]centos_deps}
setenv = {[testenv]setenv}
         PYTHON=coverage run --parallel-mode

commands =
  {[testenv]commands}
   coverage erase
   stestr run {posargs}
   coverage combine
   coverage html -d cover
   coverage xml -o cover/coverage.xml
   coverage report

[testenv:pip-missing-reqs]
# do not install test-requirements as that will pollute the virtualenv for
# determining missing packages
# this also means that pip-missing-reqs must be installed separately, outside
# of the requirements.txt files
deps = pip_missing_reqs
       -rrequirements.txt
commands=pip-missing-reqs -d --ignore-file=/k8sapp_nginx_ingress_controller/tests k8sapp_nginx_ingress_controller