@@ -12,7 +12,7 @@ class SomeContextManager(ContextManager):
1212 def manage_context (self ):
1313 self .x += 1
1414 try :
15- yield self
15+ yield ( self , self )
1616 finally :
1717 self .x -= 1
1818
@@ -21,7 +21,10 @@ def manage_context(self):
2121def test_idempotentify ():
2222 some_context_manager = SomeContextManager ()
2323 assert some_context_manager .x == 0
24- with some_context_manager :
24+ with some_context_manager as enter_result :
25+ assert isinstance (enter_result , tuple )
26+ assert len (enter_result ) == 2
27+ assert enter_result [0 ] is enter_result [1 ] is some_context_manager
2528 assert some_context_manager .x == 1
2629 assert some_context_manager .x == 0
2730
@@ -42,7 +45,20 @@ def test_idempotentify():
4245 with cute_testing .RaiseAssertor ():
4346 some_context_manager .__exit__ (None , None , None )
4447
45- idempotent_context_manager = idempotentify (SomeContextManager ())
48+ ###########################################################################
49+
50+
51+ another_context_manager = SomeContextManager ()
52+ idempotent_context_manager = idempotentify (another_context_manager )
53+
54+ assert another_context_manager is idempotent_context_manager .__wrapped__
55+
56+ with idempotent_context_manager as enter_result :
57+ assert isinstance (enter_result , tuple )
58+ assert len (enter_result ) == 2
59+ assert enter_result [0 ] is enter_result [1 ] is another_context_manager
60+ assert another_context_manager .x == 1
61+
4662
4763 idempotent_context_manager .__enter__ ()
4864 assert idempotent_context_manager .__wrapped__ .x == 1
0 commit comments