コード例 #1
0
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
コード例 #2
0
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
コード例 #3
0
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)
コード例 #4
0
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
コード例 #5
0
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