| # Operator charm (with zaza): tox.ini |
| |
| [tox] |
| envlist = pep8,py3 |
| skipsdist = True |
| # 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 |
| # * It is necessary to declare setuptools as a dependency otherwise tox will |
| # fail very early at not being able to load it. The version pinning is in |
| # line with `pip.sh`. |
| requires = pip < 20.3 |
| virtualenv < 20.0 |
| setuptools < 50.0.0 |
| tox < 4 |
| # NOTE: https://wiki.canonical.com/engineering/OpenStack/InstallLatestToxOnOsci |
| minversion = 3.2.0 |
| |
| [defs] |
| pyfiles = |
| src |
| tests |
| unit_tests |
| func_env_vars = |
| CHARM_SP_PUBLIC_SPACE |
| CHARM_SP_TEMPLATE |
| CHARM_SP_API_HTTP_HOST |
| CHARM_SP_API_HTTP_PORT |
| CHARM_SP_AUTH_TOKEN |
| CHARM_SP_ISCSI_PORTAL_GROUP |
| CHARM_SP_EXTRA_MACHINE_TAGS |
| |
| [tools:isort] |
| profile = "black" |
| |
| [testenv] |
| setenv = VIRTUAL_ENV={envdir} |
| PYTHONHASHSEED=0 |
| CHARM_DIR={envdir} |
| install_command = |
| pip install {opts} {packages} |
| commands = stestr run --slowest {posargs} |
| allowlist_externals = |
| git |
| bash |
| charmcraft |
| rename.sh |
| passenv = HOME TERM CS_* OS_* TEST_* |
| deps = -r{toxinidir}/test-requirements.txt |
| |
| [testenv:py35] |
| basepython = python3.5 |
| # python3.5 is irrelevant on a focal+ charm. |
| commands = /bin/true |
| |
| [testenv:py36] |
| basepython = python3.6 |
| deps = -r{toxinidir}/requirements.txt |
| -r{toxinidir}/test-requirements.txt |
| |
| [testenv:py37] |
| basepython = python3.7 |
| deps = -r{toxinidir}/requirements.txt |
| -r{toxinidir}/test-requirements.txt |
| |
| [testenv:py38] |
| basepython = python3.8 |
| deps = -r{toxinidir}/requirements.txt |
| -r{toxinidir}/test-requirements.txt |
| |
| [testenv:py39] |
| basepython = python3.9 |
| deps = -r{toxinidir}/requirements.txt |
| -r{toxinidir}/test-requirements.txt |
| |
| [testenv:py3] |
| basepython = python3 |
| deps = -r{toxinidir}/requirements.txt |
| -r{toxinidir}/test-requirements.txt |
| |
| [testenv:isort] |
| basepython = python3 |
| deps = isort |
| commands = |
| isort {[defs]pyfiles} |
| |
| [testenv:pep8] |
| basepython = python3 |
| deps = -r{toxinidir}/requirements.txt |
| -r{toxinidir}/test-requirements.txt |
| commands = flake8 {posargs} src unit_tests tests |
| |
| [testenv:lint] |
| basepython = python3 |
| deps = |
| pylint |
| -r{toxinidir}/requirements.txt |
| -r{toxinidir}/build-requirements.txt |
| -r{toxinidir}/test-requirements.txt |
| commands = |
| pylint {[defs]pyfiles} |
| |
| [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} |
| |
| [testenv:build] |
| basepython = python3 |
| deps = -r{toxinidir}/build-requirements.txt |
| # NOTE(lourot): charmcraft 1.0.0 used to generate |
| # cinder-StorPool.charm, which is the behaviour expected |
| # by OSCI. However charmcraft 1.2.1 now generates |
| # cinder-StorPool_ubuntu-20.04-amd64.charm instead. |
| # In order to keep the old behaviour we rename the file at the end. |
| commands = |
| charmcraft clean |
| charmcraft -v pack |
| {toxinidir}/rename.sh |
| |
| [testenv:func-noop] |
| basepython = python3 |
| passenv = {[defs]func_env_vars} |
| commands = |
| functest-run-suite --help |
| |
| [testenv:func] |
| basepython = python3 |
| passenv = {[defs]func_env_vars} |
| commands = |
| functest-run-suite --keep-model |
| |
| [testenv:func-smoke] |
| basepython = python3 |
| passenv = {[defs]func_env_vars} |
| commands = |
| functest-run-suite --keep-model --smoke |
| |
| [testenv:func-dev] |
| basepython = python3 |
| passenv = {[defs]func_env_vars} |
| commands = |
| functest-run-suite --keep-model --dev |
| |
| [testenv:func-target] |
| basepython = python3 |
| passenv = {[defs]func_env_vars} |
| commands = |
| functest-run-suite --keep-model --bundle {posargs} |
| |
| [testenv:func-target-discard-model] |
| basepython = python3 |
| passenv = {[defs]func_env_vars} |
| commands = |
| functest-run-suite --bundle {posargs} |
| |
| [testenv:black-reformat] |
| deps = |
| black >= 22, < 23 |
| commands = |
| black {[defs]pyfiles} |
| |
| [testenv:black] |
| deps = |
| black >= 22, < 23 |
| commands = |
| black --check {[defs]pyfiles} |