From be7cc61ceca500bb56a7ee234712ba3c791c1b22 Mon Sep 17 00:00:00 2001 From: Artur Shiriev Date: Sat, 10 Oct 2026 20:28:50 +0300 Subject: [PATCH] test: check the finalizer error inside FinalizerError, not its message --- tests/test_aio.py | 6 +++++- tests/test_inject.py | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/tests/test_aio.py b/tests/test_aio.py index fa8921b..e6b1a38 100644 --- a/tests/test_aio.py +++ b/tests/test_aio.py @@ -6,6 +6,7 @@ import grpc.aio import pytest from modern_di import Container +from modern_di.exceptions import FinalizerError from modern_di_grpc import DIAioInterceptor, FromDI, fetch_di_container, grpc_context_provider, inject from modern_di_grpc.main import _request_container, _wrap_unary_aio @@ -160,8 +161,11 @@ async def behavior(_request: object, _context: grpc.aio.ServicerContext) -> str: wrapped = _wrap_unary_aio(behavior, root) context = typing.cast(grpc.aio.ServicerContext, unittest.mock.MagicMock(spec=grpc.ServicerContext)) - with pytest.raises(RuntimeError, match="boom"): + with pytest.raises(FinalizerError) as exc_info: await wrapped(object(), context) + [error] = exc_info.value.exceptions + assert isinstance(error, RuntimeError) + assert str(error) == "boom" with pytest.raises(LookupError): _request_container.get() diff --git a/tests/test_inject.py b/tests/test_inject.py index 5c37377..b3e0866 100644 --- a/tests/test_inject.py +++ b/tests/test_inject.py @@ -7,6 +7,7 @@ import pytest from grpc import ServicerContext from modern_di import Container, Scope +from modern_di.exceptions import FinalizerError from modern_di_grpc import DIAioInterceptor, DIInterceptor, FromDI, fetch_di_container, grpc_context_provider, inject from modern_di_grpc.main import _build_child, _request_container, _wrap_unary_sync @@ -175,8 +176,11 @@ def behavior(_request: object, _context: ServicerContext) -> str: wrapped = _wrap_unary_sync(behavior, root) context = typing.cast(ServicerContext, unittest.mock.MagicMock(spec=ServicerContext)) - with pytest.raises(RuntimeError, match="boom"): + with pytest.raises(FinalizerError) as exc_info: wrapped(object(), context) + [error] = exc_info.value.exceptions + assert isinstance(error, RuntimeError) + assert str(error) == "boom" # Reset ran despite child.close_sync() raising: the ContextVar is unset again, not just # left pointing at a stale/closed child container.