@@ -268,7 +268,7 @@ def test_missing_fixture_ok_if_not_required(dm: DeviceManager):
268268
269269 @dm .factory
270270 def foo (unknown ):
271- return s1 (bar )
271+ return s1 (unknown )
272272
273273 @dm .factory
274274 def bar ():
@@ -319,9 +319,8 @@ def bar(_):
319319
320320
321321def test_build_errors_are_caught (dm : DeviceManager ):
322- s1 = Mock ()
323322 err = RuntimeError ("Build failed" )
324- s1 . side_effect = err
323+ s1 = Mock ( side_effect = err )
325324
326325 @dm .factory
327326 def foo ():
@@ -337,8 +336,7 @@ def foo():
337336def test_dependency_errors_propagate (dm : DeviceManager ):
338337 s1 = Mock ()
339338 err = RuntimeError ("Build failed" )
340- s2 = Mock ()
341- s2 .side_effect = err
339+ s2 = Mock (side_effect = err )
342340
343341 @dm .factory
344342 def foo (bar ):
@@ -401,16 +399,36 @@ def foo():
401399def test_positional_only_args_error (dm : DeviceManager ):
402400 s1 = Mock ()
403401
404- with pytest .raises (ValueError , match = "positional only arguments " ):
402+ with pytest .raises (ValueError , match = "positional only argument 'bar' " ):
405403
406404 @dm .factory
407- def foo (foo , / ):
405+ def foo (bar , / ):
408406 return s1 ()
409407
410408
411- def test_devices_or_raise (dm : DeviceManager ):
409+ def test_variadic_args_error (dm : DeviceManager ):
412410 s1 = Mock ()
413- s1 .side_effect = RuntimeError ("Build failed" )
411+ with pytest .raises (ValueError , match = "variadic argument 'args'" ):
412+
413+ @dm .factory
414+ def foo (* args ):
415+ return s1 (* args )
416+
417+
418+ def test_kwargs_factory (dm : DeviceManager ):
419+ s1 = Mock ()
420+
421+ # Factories can have kwargs but they're ignored by the device manager
422+ @dm .factory
423+ def foo (** kwargs ):
424+ s1 (** kwargs )
425+
426+ dm .build_all (s1 )
427+ s1 .assert_called_once_with ()
428+
429+
430+ def test_devices_or_raise (dm : DeviceManager ):
431+ s1 = Mock (side_effect = RuntimeError ("Build failed" ))
414432
415433 @dm .factory
416434 def foo ():
0 commit comments