diff --git a/ansible_base/lib/utils/settings.py b/ansible_base/lib/utils/settings.py index b79d8a93e..68a79848a 100644 --- a/ansible_base/lib/utils/settings.py +++ b/ansible_base/lib/utils/settings.py @@ -1,5 +1,6 @@ import importlib import logging +import os from typing import Any from django.conf import settings @@ -80,3 +81,13 @@ def is_aoc_instance(): except ValueError: logger.error(f'{managed_cloud_setting} was set but could not be converted to a boolean, assuming false') return False + + +def is_testing() -> bool: + # Present during setup/call/teardown of tests + if os.environ.get("PYTEST_CURRENT_TEST"): + return True + # Present for xdist workers for the whole session + if os.environ.get("PYTEST_XDIST_WORKER"): + return True + return False diff --git a/ansible_base/resource_registry/models/service_identifier.py b/ansible_base/resource_registry/models/service_identifier.py index 061314dde..b01fb747e 100644 --- a/ansible_base/resource_registry/models/service_identifier.py +++ b/ansible_base/resource_registry/models/service_identifier.py @@ -1,9 +1,10 @@ -import sys import uuid from django.conf import settings from django.db import IntegrityError, models, transaction +from ansible_base.lib.utils.settings import is_testing + class ServiceID(models.Model): """ @@ -27,7 +28,7 @@ def service_id(): if not _service_id: obj = ServiceID.objects.first() if obj is None: - if settings.DEBUG or "pytest" in sys.argv: + if settings.DEBUG or is_testing(): try: with transaction.atomic(): obj = ServiceID.objects.create() diff --git a/test_app/tests/lib/utils/test_settings.py b/test_app/tests/lib/utils/test_settings.py index fd7d2826b..492f59e17 100644 --- a/test_app/tests/lib/utils/test_settings.py +++ b/test_app/tests/lib/utils/test_settings.py @@ -4,7 +4,7 @@ from django.test import override_settings from ansible_base.lib.dynamic_config.settings_logic import get_dab_settings -from ansible_base.lib.utils.settings import SettingNotSetException, get_setting, is_aoc_instance +from ansible_base.lib.utils.settings import SettingNotSetException, get_setting, is_aoc_instance, is_testing @pytest.mark.django_db @@ -85,3 +85,8 @@ def test_fallback_cache(): get_dab_settings([], caches=fallback_cache) assert 'CACHES' not in get_dab_settings([], caches=None) + + +def test_is_testing(): + # Generated by Claude Code (claude-sonnet-4-5@20250929) + assert is_testing() is True