sunbeam-charms/tox.ini
Guillaume Boutry 8c674de50e
[ops-sunbeam] Implement mypy linter
Implement mypy in the most non-breaking way possible. There's still some
changes of behavior that crept in, merely due to incorrect edge case
handling.

Charm libraries are generally well typed, include py.typed marker for
all of the libraries, to allow mypy analyzing their usage.

Change-Id: I7bda1913fa08dd4954a606526272ac80b45197cc
Signed-off-by: Guillaume Boutry <guillaume.boutry@canonical.com>
2024-08-13 18:56:33 +02:00

118 lines
2.3 KiB
INI

# Global tox file
# This file is used to invoke tox in individual charms
[tox]
skipsdist = True
envlist = pep8,py3
sitepackages = False
skip_missing_interpreters = False
minversion = 3.18.0
[testenv]
passenv =
HOME
allowlist_externals =
{toxinidir}/run_tox.sh
{toxinidir}/generate_token.sh
{toxinidir}/repository.py
[testenv:fetch]
basepython = python3
deps = pyyaml
commands =
python3 {toxinidir}/repository.py -v fetch-lib {posargs}
[testenv:fmt]
description = Apply coding style standards to code
deps =
black
isort
pyyaml
commands =
{toxinidir}/run_tox.sh fmt
[testenv:pep8]
description = Alias for lint
deps =
black
flake8
flake8-docstrings
flake8-copyright
flake8-builtins
pyproject-flake8
pep8-naming
isort
codespell
pyyaml
commands =
{toxinidir}/run_tox.sh pep8
[testenv:py3]
deps =
-r{toxinidir}/test-requirements.txt
pyyaml
commands =
{toxinidir}/run_tox.sh py3 {posargs}
[testenv:py310]
deps = {[testenv:py3]deps}
commands =
{toxinidir}/run_tox.sh py310 {posargs}
[testenv:py311]
deps = {[testenv:py3]deps}
commands =
{toxinidir}/run_tox.sh py311 {posargs}
[testenv:cover]
deps = {[testenv:py3]deps}
commands =
{toxinidir}/run_tox.sh cover {posargs}
[testenv:linters]
deps =
{[testenv:py3]deps}
mypy
commands =
{toxinidir}/run_tox.sh linters
[testenv:build]
basepython = python3
deps = pyyaml
commands =
{toxinidir}/run_tox.sh build {posargs}
[testenv:func-noop]
basepython = python3
deps =
git+https://github.com/openstack-charmers/zaza.git#egg=zaza
git+https://github.com/openstack-charmers/zaza-openstack-tests.git#egg=zaza.openstack
git+https://opendev.org/openstack/tempest.git#egg=tempest
commands =
functest-run-suite --help
[testenv:func]
basepython = python3
deps = {[testenv:func-noop]deps}
passenv =
HOME
PYTHONPATH
setenv =
# Set TEST_JUJU3 To unpin juju<3 in zaza
TEST_JUJU3 = 1
TEST_MODEL_SETTINGS = automatically-retry-hooks=true
TEST_MAX_RESOLVE_COUNT = 5
PYTHONPATH = {toxinidir}/tests/local:{env:PYTHONPATH}
commands =
python3 render_bundles.py
# Example: functest-run-suite --keep-model --smoke --test-directory=tests/set1
functest-run-suite --keep-model {posargs}
[testenv:generate-token]
basepython = python3
deps =
zuul-client
commands =
{toxinidir}/generate_token.sh