# Source charm: ./tox.ini # This file is managed centrally by release-tools and should not be modified # within individual charm repos. See the 'global' dir contents for available # choices of tox.ini for OpenStack Charms: # https://github.com/openstack-charmers/release-tools [tox] skipsdist = True envlist = pep8,py3 # NOTE: Avoid build/test env pollution by not enabling sitepackages. sitepackages = False # NOTE: Avoid false positives by not skipping missing interpreters. skip_missing_interpreters = False # NOTES: # * We avoid the new dependency resolver by pinning pip < 20.3, see # https://github.com/pypa/pip/issues/9187 # * Pinning dependencies requires tox >= 3.2.0, see # https://tox.readthedocs.io/en/latest/config.html#conf-requires # * It is also necessary to pin virtualenv as a newer virtualenv would still # lead to fetching the latest pip in the func* tox targets, see # https://stackoverflow.com/a/38133283 requires = pip < 20.3 virtualenv < 20.0 setuptools<50.0.0 # NOTE: https://wiki.canonical.com/engineering/OpenStack/InstallLatestToxOnOsci minversion = 3.18.0 [testenv] setenv = VIRTUAL_ENV={envdir} PYTHONHASHSEED=0 TERM=linux LAYER_PATH={toxinidir}/layers INTERFACE_PATH={toxinidir}/interfaces JUJU_REPOSITORY={toxinidir}/build passenv = http_proxy https_proxy INTERFACE_PATH LAYER_PATH JUJU_REPOSITORY install_command = {toxinidir}/pip.sh install {opts} {packages} deps = -r{toxinidir}/requirements.txt [testenv:build] basepython = python3 # Nothing to charm-build as this is a layer without a src directory. commands = /bin/true [testenv:add-build-lock-file] basepython = python3 # Nothing to charm-build as this is a layer without a src directory. commands = /bin/true [testenv:py3] basepython = python3 deps = -r{toxinidir}/test-requirements.txt # TODO: Need to write unit tests then switch command to use stestr. commands = /bin/true [testenv:py35] basepython = python3.5 deps = -r{toxinidir}/test-requirements.txt # TODO: Need to write unit tests then switch command to use stestr. commands = /bin/true [testenv:py36] basepython = python3.6 deps = -r{toxinidir}/test-requirements.txt # TODO: Need to write unit tests then switch command to use stestr. commands = /bin/true [testenv:py37] basepython = python3.7 deps = -r{toxinidir}/test-requirements.txt # TODO: Need to write unit tests then switch command to use stestr. commands = /bin/true [testenv:py38] basepython = python3.8 deps = -r{toxinidir}/test-requirements.txt # TODO: Need to write unit tests then switch command to use stestr. commands = /bin/true [testenv:py39] basepython = python3.9 deps = -r{toxinidir}/test-requirements.txt # TODO: Need to write unit tests then switch command to use stestr. commands = /bin/true [testenv:pep8] basepython = python3 deps = flake8==3.9.2 charm-tools==2.8.3 commands = flake8 {posargs} [testenv:cover] # Technique based heavily upon # https://github.com/openstack/nova/blob/master/tox.ini basepython = python3 deps = -r{toxinidir}/requirements.txt -r{toxinidir}/test-requirements.txt setenv = {[testenv]setenv} PYTHON=coverage run commands = coverage erase stestr run --slowest {posargs} coverage combine coverage html -d cover coverage xml -o cover/coverage.xml coverage report [coverage:run] branch = True concurrency = multiprocessing parallel = True source = . omit = .tox/* */charmhelpers/* unit_tests/* [testenv:venv] basepython = python3 commands = {posargs} [flake8] # E402 ignore necessary for path append before sys module import in actions ignore = E402,W503,W504