diff --git a/pytest_django/plugin.py b/pytest_django/plugin.py index 62fa1791..07bd5035 100644 --- a/pytest_django/plugin.py +++ b/pytest_django/plugin.py @@ -693,6 +693,14 @@ def _get_origin() -> str | None: return name return None + def __bool__(self) -> bool: + for frame_info in inspect.stack(): + if frame_info.function == "resolve" and frame_info.filename.endswith("base.py"): + # To go through this guard: + # https://github.com/django/django/blob/5.0.7/django/template/base.py#L716 + return True + return bool(self.origin_value) + def __mod__(self, var: str) -> str: origin = self._get_origin() if origin: diff --git a/tests/test_environment.py b/tests/test_environment.py index a3549732..0e4dd403 100644 --- a/tests/test_environment.py +++ b/tests/test_environment.py @@ -188,6 +188,48 @@ def test_for_invalid_template(client): ) +@pytest.mark.django_project( + extra_settings=""" + TEMPLATE_LOADERS = ( + 'django.template.loaders.filesystem.Loader', + 'django.template.loaders.app_directories.Loader', + ) + """ +) +def test_invalid_template_variable_object_does_not_exists_behaves_like_an_empty_string( + django_pytester: DjangoPytester, +) -> None: + django_pytester.create_app_file( + "