mirror of
https://github.com/ansible/awx.git
synced 2026-06-25 08:28:03 -02:30
Fix awxkit tox test failure caused by root pytest.ini config bleed (#16520)
Forward-port of ansible/tower#7537 for the devel branch. When running awxkit's tox tests, pytest picks up the root pytest.ini which pulls in pytest-django options (--reuse-db, --nomigrations, DJANGO_SETTINGS_MODULE) and Django-specific filterwarnings. Since the awxkit tox environment does not install Django or pytest-django, these cause test collection to fail. The root cause is that pytest.ini has absolute priority in pytest's config discovery — it searches all ancestor directories for pytest.ini before falling back to tox.ini's [pytest] section. A [pytest] section in awxkit/tox.ini alone cannot prevent the root config from being used. Fix by: - Adding awxkit/pytest.ini to act as the primary config boundary (pytest.ini has the highest priority in config discovery, so its presence in awxkit/ stops the upward search before reaching root) - Adding explicit `test` path argument to the pytest command in awxkit/tox.ini so pytest discovers tests correctly - Adding `testpaths` and `python_files` to the [pytest] section in awxkit/tox.ini as a secondary config boundary - Adding awxkit/conftest.py that registers the Django-specific CLI options and INI keys as harmless no-ops, as a further safety net Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
16
awxkit/conftest.py
Normal file
16
awxkit/conftest.py
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
# This conftest registers pytest-django CLI options and INI keys as harmless
|
||||||
|
# no-ops so that the awxkit tox environment (which does not install Django or
|
||||||
|
# pytest-django) does not crash when the root pytest.ini config leaks through.
|
||||||
|
#
|
||||||
|
# Root pytest.ini contains settings like --reuse-db, --nomigrations, and
|
||||||
|
# DJANGO_SETTINGS_MODULE that are only meaningful for Django tests. Placing
|
||||||
|
# this conftest at the awxkit/ level ensures it is loaded before argument
|
||||||
|
# parsing regardless of which config file pytest ultimately selects.
|
||||||
|
|
||||||
|
|
||||||
|
def pytest_addoption(parser):
|
||||||
|
group = parser.getgroup("awxkit-compat", "awxkit tox compatibility shims")
|
||||||
|
group.addoption("--reuse-db", action="store_true", default=False, help="(no-op in awxkit) pytest-django compat")
|
||||||
|
group.addoption("--nomigrations", action="store_true", default=False, help="(no-op in awxkit) pytest-django compat")
|
||||||
|
group.addoption("--create-db", action="store_true", default=False, help="(no-op in awxkit) pytest-django compat")
|
||||||
|
parser.addini("DJANGO_SETTINGS_MODULE", help="(no-op in awxkit) pytest-django compat", default="")
|
||||||
9
awxkit/pytest.ini
Normal file
9
awxkit/pytest.ini
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
[pytest]
|
||||||
|
addopts = -v --tb=native
|
||||||
|
testpaths = test
|
||||||
|
python_files = test_*.py
|
||||||
|
|
||||||
|
filterwarnings =
|
||||||
|
error
|
||||||
|
|
||||||
|
junit_family=xunit2
|
||||||
@@ -19,7 +19,7 @@ deps =
|
|||||||
pytest-mock
|
pytest-mock
|
||||||
|
|
||||||
commands =
|
commands =
|
||||||
coverage run --parallel --source awxkit -m pytest --doctest-glob='*.md' --junit-xml=report.xml {posargs}
|
coverage run --parallel --source awxkit -m pytest -c pytest.ini test --doctest-glob='*.md' --junit-xml=report.xml {posargs}
|
||||||
coverage combine
|
coverage combine
|
||||||
coverage xml
|
coverage xml
|
||||||
|
|
||||||
@@ -44,6 +44,8 @@ max-line-length = 120
|
|||||||
|
|
||||||
[pytest]
|
[pytest]
|
||||||
addopts = -v --tb=native
|
addopts = -v --tb=native
|
||||||
|
testpaths = test
|
||||||
|
python_files = test_*.py
|
||||||
|
|
||||||
filterwarnings =
|
filterwarnings =
|
||||||
error
|
error
|
||||||
|
|||||||
Reference in New Issue
Block a user