def test_context_inner_function_reassigning_deleted_value_on_deletion_of_reassignemnt_should_not_see_outer_value( ): context_keys = set() ctx = ContextLocal() @ctx def testcall(): ctx.var1 = 2 assert ctx.var1 == 2 del ctx.var1 with pytest.raises(AttributeError): ctx.var1 ctx.var1 = 3 assert ctx.var1 == 3 del ctx.var1 # Previously deleted value should remain "deleted" with pytest.raises(AttributeError): ctx.var1 ctx.var1 = 1 testcall() # Value deleted in inner context must be available here assert ctx.var1 == 1
def test_context_run_method_isolates_context(): context_keys = set() ctx = ContextLocal() def testcall(): assert ctx.var1 == 1 ctx.var1 = 2 assert ctx.var1 == 2 del ctx.var1 ctx.var1 = 1 assert ctx.var1 == 1 ctx._run(testcall) assert ctx.var1 == 1
def test_context_dir(): ctx = ContextLocal() @ctx def testcall(): ctx.var2 = 2 assert "var1" in dir(ctx) assert "var2" in dir(ctx) del ctx.var1 ctx.var1 = 1 assert "var1" in dir(ctx) testcall() assert "var1" in dir(ctx) assert "var2" not in dir(ctx)
def test_context_inner_function_deleting_attribute_can_reassign_it(): context_keys = set() ctx = ContextLocal() @ctx def testcall(): ctx.var1 = 2 assert ctx.var1 == 2 del ctx.var1 with pytest.raises(AttributeError): ctx.var1 ctx.var1 = 3 assert ctx.var1 == 3 ctx.var1 = 1 testcall() # Value deleted in inner context must be available here assert ctx.var1 == 1
def test_context_granddaugher_works_nice_with_daughter_deleting_attribute(): context_keys = set() ctx = ContextLocal() @ctx def granddaughter(): with pytest.raises(AttributeError): ctx.var1 ctx.var1 = 2 assert ctx.var1 == 2 @ctx def daughter(): assert ctx.var1 == 1 del ctx.var1 granddaughter() with pytest.raises(AttributeError): ctx.var1 ctx.var1 = 1 daughter() assert ctx.var1 == 1