Skip to content

test_coverage()

Documentation for tests/homestead/coverage/test_coverage.py::test_coverage@88e9fb8f.

Generate fixtures for these test cases for Osaka with:

fill -v tests/homestead/coverage/test_coverage.py::test_coverage --fork Osaka

Cover gaps that result from transforming Yul code into our Python opcode wrapper bytecode.

E.g. Yul tends to optimize stack items by using SWAP1 and DUP1 opcodes, which are not regularly used in python code.

Modify this test to cover more Yul code if required in the future.

Source code in tests/homestead/coverage/test_coverage.py
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
@pytest.mark.valid_from("Homestead")
def test_coverage(
    state_test: StateTestFiller,
    pre: Alloc,
    fork: Fork,
) -> None:
    """
    Cover gaps that result from transforming Yul code into our Python opcode
    wrapper bytecode.

    E.g. Yul tends to optimize stack items by using `SWAP1` and `DUP1` opcodes,
    which are not regularly used in python code.

    Modify this test to cover more Yul code if required in the future.
    """
    missed_coverage = pre.deploy_contract(
        balance=0,
        code=Op.SHL(0x0000000000000000000000000000000000000000000000000000000000000001, 0x00)
        + Op.SHR(0x0000000000000000000000000000000000000000000000000000000000000001, 0x00)
        + Op.PUSH1(0x0A)
        + Op.PUSH1(0x0B)
        + Op.PUSH1(0x0C)
        + Op.PUSH1(0x0D)
        + Op.PUSH1(0x0E)
        + Op.SWAP1()
        + Op.DUP1()
        + Op.DUP2()
        + Op.PUSH0()
        + Op.PUSH2(0x0102)
        + Op.PUSH3(0x010203)
        + Op.PUSH4(0x01020304)
        + Op.PUSH32(0x0101010101010101010101010101010101010101010101010101010101010101)
        + Op.MSTORE8(0x00, 0x01)
        + Op.ADD(0x02, 0x03)
        + Op.POP(0x01)
        # lllc tests insert codecopy when using lll(seq())
        + Op.CODECOPY(0, 16, 4),
        storage={},
    )
    address_to = pre.deploy_contract(
        balance=1_000_000_000_000_000_000,
        code=Op.MSTORE(0, Op.CALL(Op.GAS, missed_coverage, 0, 0, 0, 0, 0)) + Op.RETURN(0, 32),
    )

    if fork >= Cancun:
        tx = Transaction(
            sender=pre.fund_eoa(7_000_000_000_000_000_000),
            gas_limit=100000,
            to=address_to,
            data=b"",
            value=0,
            protected=False,
            access_list=[],
            max_fee_per_gas=10,
            max_priority_fee_per_gas=5,
        )
    else:
        tx = Transaction(
            sender=pre.fund_eoa(7_000_000_000_000_000_000),
            gas_limit=100000,
            to=address_to,
            data=b"",
            value=0,
            protected=False,
        )

    state_test(env=Environment(), pre=pre, post={}, tx=tx)

Parametrized Test Cases

This test case is only parametrized by fork and fixture format.

Test ID (Abbreviated)
...fork_Homestead-state_test
...fork_Homestead-blockchain_test_from_state_test
...fork_Byzantium-state_test
...fork_Byzantium-blockchain_test_from_state_test
...fork_Constantinople-state_test
...fork_Constantinople-blockchain_test_from_state_test
...fork_ConstantinopleFix-state_test
...fork_ConstantinopleFix-blockchain_test_from_state_test
...fork_Istanbul-state_test
...fork_Istanbul-blockchain_test_from_state_test
...fork_Berlin-state_test
...fork_Berlin-blockchain_test_from_state_test
...fork_London-state_test
...fork_London-blockchain_test_from_state_test
...fork_Paris-state_test
...fork_Paris-blockchain_test_from_state_test
...fork_Shanghai-state_test
...fork_Shanghai-blockchain_test_from_state_test
...fork_Cancun-state_test
...fork_Cancun-blockchain_test_from_state_test
...fork_Prague-state_test
...fork_Prague-blockchain_test_from_state_test
...fork_Osaka-state_test
...fork_Osaka-blockchain_test_from_state_test