[tox] env_list = py{36,37,38,39,310,311,312} lint type labels = test = py{36,37,38,39,310,311,312} lint = ruff, autopep8, pylint type = mypy,mypy-strict [testenv] description = "run osbuild unit tests" deps = pytest pytest-xdist jsonschema mako iniparse pyyaml toml pykickstart # required by pykickstart but not pulled in automatically :/ requests setenv = LINTABLES = osbuild/ assemblers/* devices/*.* devices/test/*.py inputs/*.* mounts/*.* mounts/test/*.py runners/* sources/*.* stages/*.* inputs/test/*.py stages/test/*.py sources/test/*.py test/ tools/ LINTABLES_EXCLUDES = "*.json,*.sh" LINTABLES_EXCLUDES_RE = ".*\.json$,.*\.sh" TYPEABLES = osbuild TYPEABLES_STRICT = ./osbuild/main_cli.py ./osbuild/util/parsing.py ./osbuild/testutil/atomic.py passenv = TEST_CATEGORY commands = python -m pytest -v --pyargs --rootdir=. {posargs} allowlist_externals = bash [testenv:ruff] deps = ruff==0.3.0 commands = bash -c 'python -m ruff check {env:LINTABLES}' [testenv:autopep8] deps = autopep8==2.3.1 pycodestyle==2.12.1 commands = bash -c 'python -m autopep8 --diff --max-line-length 120 -a -a -a -j0 -r --exclude {env:LINTABLES_EXCLUDES} --exit-code {env:LINTABLES}' [testenv:pylint] deps = pylint==3.3.1 # Use astroid of at least v3.3.5 to fix the following error with Python 3.13: # test/run/test_stages.py:21:0: E0611: No name 'Mapping' in module 'collections.abc' (no-name-in-module) # More details: https://github.com/pylint-dev/pylint/issues/10000 astroid>=3.3.5 commands = bash -c 'python -m pylint --ignore-patterns {env:LINTABLES_EXCLUDES_RE} {env:LINTABLES}' [testenv:mypy] deps = mypy==1.2.0 commands = bash -c 'python -m mypy {env:TYPEABLES}' [testenv:mypy-strict] deps = mypy==1.2.0 commands = bash -c 'python -m mypy --follow-imports=skip --disallow-untyped-calls --disallow-untyped-defs --disallow-incomplete-defs {env:TYPEABLES_STRICT}' [testenv:tomllib] description = "test osbuild.util.toml with tomllib" deps = pytest mako tomli-w commands = python -m pytest -s -vvv -k test_util_toml [testenv:tomli] description = "test osbuild.util.toml with tomli" deps = pytest tomli tomli-w mako commands = python -m pytest -s -vvv -k test_util_toml [testenv:toml] description = "test osbuild.util.toml with toml" deps = pytest toml mako commands = python -m pytest -s -vvv -k test_util_toml [testenv:pytoml] description = "test osbuild.util.toml with pytoml" deps = pytest pytoml mako commands = python -m pytest -s -vvv -k test_util_toml