File tree Expand file tree Collapse file tree 2 files changed +21
-0
lines changed
tests/unit/containers/instance Expand file tree Collapse file tree 2 files changed +21
-0
lines changed Original file line number Diff line number Diff line change @@ -335,6 +335,10 @@ class DynamicContainer(Container):
335335
336336 def init_resources (self , resource_type = providers.Resource):
337337 """ Initialize all container resources."""
338+
339+ if not issubclass (resource_type, providers.Resource):
340+ raise ValueError (" resource_type must be a subclass of Resource provider" )
341+
338342 futures = []
339343
340344 for provider in self .traverse(types = [resource_type]):
@@ -348,6 +352,10 @@ class DynamicContainer(Container):
348352
349353 def shutdown_resources (self , resource_type = providers.Resource):
350354 """ Shutdown all container resources."""
355+
356+ if not issubclass (resource_type, providers.Resource):
357+ raise ValueError (" resource_type must be a subclass of Resource provider" )
358+
351359 def _independent_resources (resources ):
352360 for resource in resources:
353361 for other_resource in resources:
Original file line number Diff line number Diff line change @@ -325,6 +325,19 @@ class Container(containers.DeclarativeContainer):
325325 assert _init2 .shutdown_counter == 2
326326
327327
328+ def test_init_shutdown_resources_wrong_type () -> None :
329+ class Container (containers .DeclarativeContainer ):
330+ pass
331+
332+ c = Container ()
333+
334+ with raises (ValueError , match = r"resource_type must be a subclass of Resource provider" ):
335+ c .init_resources (int ) # type: ignore[arg-type]
336+
337+ with raises (ValueError , match = r"resource_type must be a subclass of Resource provider" ):
338+ c .shutdown_resources (int ) # type: ignore[arg-type]
339+
340+
328341def test_reset_singletons ():
329342 class SubSubContainer (containers .DeclarativeContainer ):
330343 singleton = providers .Singleton (object )
You can’t perform that action at this time.
0 commit comments