Skip to content

test_all_invalid_terminating_opcodes()

Documentation for tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_all_opcodes_in_container.py::test_all_invalid_terminating_opcodes@83970623.

Generate fixtures for these test cases for Osaka with:

fill -v tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_all_opcodes_in_container.py::test_all_invalid_terminating_opcodes --fork Osaka

Test all opcodes that are invalid as the last opcode in a container.

Source code in tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_all_opcodes_in_container.py
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
@pytest.mark.parametrize(
    "opcode",
    sorted(
        valid_eof_opcodes
        - halting_opcodes
        - section_terminating_opcodes
        - {Op.RJUMP, Op.RJUMPI, Op.RJUMPV}
    ),
)
def test_all_invalid_terminating_opcodes(
    eof_test: EOFTestFiller,
    opcode: Opcode,
):
    """Test all opcodes that are invalid as the last opcode in a container."""
    if opcode.has_data_portion():
        # Add the appropriate data portion to the opcode by using the get_item method.
        # On the CALLF opcode we need to reference the second code section, hence the [1] index.
        opcode = opcode[0] if opcode != Op.CALLF else opcode[1]

    bytecode = (Op.PUSH0 * opcode.min_stack_height) + opcode

    sections = [Section.Code(code=bytecode)]

    if opcode == Op.CALLF[1]:
        sections += [Section.Code(code=Op.RETF, code_outputs=0)]
    elif opcode == Op.EOFCREATE[0]:
        sections += [
            Section.Container(
                container=Container(
                    sections=[
                        Section.Code(code=Op.RETURNCONTRACT[0](0, 0)),
                        Section.Container(Container.Code(code=Op.STOP)),
                    ]
                )
            )
        ]

    sections += [Section.Data(b"\0" * 32)]

    eof_test(
        container=Container(
            sections=sections,
        ),
        expect_exception=EOFException.MISSING_STOP_OPCODE,
    )

Parametrized Test Cases

The interactive table below is also available as a standalone page.

Test ID (Abbreviated) opcode
...fork_Osaka-eof_test-opcode_ADD ADD
...fork_Osaka-eof_test-opcode_MUL MUL
...fork_Osaka-eof_test-opcode_SUB SUB
...fork_Osaka-eof_test-opcode_DIV DIV
...fork_Osaka-eof_test-opcode_SDIV SDIV
...fork_Osaka-eof_test-opcode_MOD MOD
...fork_Osaka-eof_test-opcode_SMOD SMOD
...fork_Osaka-eof_test-opcode_ADDMOD ADDMOD
...fork_Osaka-eof_test-opcode_MULMOD MULMOD
...fork_Osaka-eof_test-opcode_EXP EXP
...fork_Osaka-eof_test-opcode_SIGNEXTEND SIGNEXTEND
...fork_Osaka-eof_test-opcode_LT LT
...fork_Osaka-eof_test-opcode_GT GT
...fork_Osaka-eof_test-opcode_SLT SLT
...fork_Osaka-eof_test-opcode_SGT SGT
...fork_Osaka-eof_test-opcode_EQ EQ
...fork_Osaka-eof_test-opcode_ISZERO ISZERO
...fork_Osaka-eof_test-opcode_AND AND
...fork_Osaka-eof_test-opcode_OR OR
...fork_Osaka-eof_test-opcode_XOR XOR
...fork_Osaka-eof_test-opcode_NOT NOT
...fork_Osaka-eof_test-opcode_BYTE BYTE
...fork_Osaka-eof_test-opcode_SHL SHL
...fork_Osaka-eof_test-opcode_SHR SHR
...fork_Osaka-eof_test-opcode_SAR SAR
...fork_Osaka-eof_test-opcode_SHA3 SHA3
...fork_Osaka-eof_test-opcode_ADDRESS ADDRESS
...fork_Osaka-eof_test-opcode_BALANCE BALANCE
...fork_Osaka-eof_test-opcode_ORIGIN ORIGIN
...fork_Osaka-eof_test-opcode_CALLER CALLER
...fork_Osaka-eof_test-opcode_CALLVALUE CALLVALUE
...fork_Osaka-eof_test-opcode_CALLDATALOAD CALLDATALOAD
...fork_Osaka-eof_test-opcode_CALLDATASIZE CALLDATASIZE
...fork_Osaka-eof_test-opcode_CALLDATACOPY CALLDATACOPY
...fork_Osaka-eof_test-opcode_GASPRICE GASPRICE
...fork_Osaka-eof_test-opcode_RETURNDATASIZE RETURNDATASIZE
...fork_Osaka-eof_test-opcode_RETURNDATACOPY RETURNDATACOPY
...fork_Osaka-eof_test-opcode_BLOCKHASH BLOCKHASH
...fork_Osaka-eof_test-opcode_COINBASE COINBASE
...fork_Osaka-eof_test-opcode_TIMESTAMP TIMESTAMP
...fork_Osaka-eof_test-opcode_NUMBER NUMBER
...fork_Osaka-eof_test-opcode_PREVRANDAO PREVRANDAO
...fork_Osaka-eof_test-opcode_GASLIMIT GASLIMIT
...fork_Osaka-eof_test-opcode_CHAINID CHAINID
...fork_Osaka-eof_test-opcode_SELFBALANCE SELFBALANCE
...fork_Osaka-eof_test-opcode_BASEFEE BASEFEE
...fork_Osaka-eof_test-opcode_BLOBHASH BLOBHASH
...fork_Osaka-eof_test-opcode_BLOBBASEFEE BLOBBASEFEE
...fork_Osaka-eof_test-opcode_POP POP
...fork_Osaka-eof_test-opcode_MLOAD MLOAD
...fork_Osaka-eof_test-opcode_MSTORE MSTORE
...fork_Osaka-eof_test-opcode_MSTORE8 MSTORE8
...fork_Osaka-eof_test-opcode_SLOAD SLOAD
...fork_Osaka-eof_test-opcode_SSTORE SSTORE
...fork_Osaka-eof_test-opcode_MSIZE MSIZE
...fork_Osaka-eof_test-opcode_JUMPDEST JUMPDEST
...fork_Osaka-eof_test-opcode_TLOAD TLOAD
...fork_Osaka-eof_test-opcode_TSTORE TSTORE
...fork_Osaka-eof_test-opcode_MCOPY MCOPY
...fork_Osaka-eof_test-opcode_PUSH0 PUSH0
...fork_Osaka-eof_test-opcode_PUSH1 PUSH1
...fork_Osaka-eof_test-opcode_PUSH2 PUSH2
...fork_Osaka-eof_test-opcode_PUSH3 PUSH3
...fork_Osaka-eof_test-opcode_PUSH4 PUSH4
...fork_Osaka-eof_test-opcode_PUSH5 PUSH5
...fork_Osaka-eof_test-opcode_PUSH6 PUSH6
...fork_Osaka-eof_test-opcode_PUSH7 PUSH7
...fork_Osaka-eof_test-opcode_PUSH8 PUSH8
...fork_Osaka-eof_test-opcode_PUSH9 PUSH9
...fork_Osaka-eof_test-opcode_PUSH10 PUSH10
...fork_Osaka-eof_test-opcode_PUSH11 PUSH11
...fork_Osaka-eof_test-opcode_PUSH12 PUSH12
...fork_Osaka-eof_test-opcode_PUSH13 PUSH13
...fork_Osaka-eof_test-opcode_PUSH14 PUSH14
...fork_Osaka-eof_test-opcode_PUSH15 PUSH15
...fork_Osaka-eof_test-opcode_PUSH16 PUSH16
...fork_Osaka-eof_test-opcode_PUSH17 PUSH17
...fork_Osaka-eof_test-opcode_PUSH18 PUSH18
...fork_Osaka-eof_test-opcode_PUSH19 PUSH19
...fork_Osaka-eof_test-opcode_PUSH20 PUSH20
...fork_Osaka-eof_test-opcode_PUSH21 PUSH21
...fork_Osaka-eof_test-opcode_PUSH22 PUSH22
...fork_Osaka-eof_test-opcode_PUSH23 PUSH23
...fork_Osaka-eof_test-opcode_PUSH24 PUSH24
...fork_Osaka-eof_test-opcode_PUSH25 PUSH25
...fork_Osaka-eof_test-opcode_PUSH26 PUSH26
...fork_Osaka-eof_test-opcode_PUSH27 PUSH27
...fork_Osaka-eof_test-opcode_PUSH28 PUSH28
...fork_Osaka-eof_test-opcode_PUSH29 PUSH29
...fork_Osaka-eof_test-opcode_PUSH30 PUSH30
...fork_Osaka-eof_test-opcode_PUSH31 PUSH31
...fork_Osaka-eof_test-opcode_PUSH32 PUSH32
...fork_Osaka-eof_test-opcode_DUP1 DUP1
...fork_Osaka-eof_test-opcode_DUP2 DUP2
...fork_Osaka-eof_test-opcode_DUP3 DUP3
...fork_Osaka-eof_test-opcode_DUP4 DUP4
...fork_Osaka-eof_test-opcode_DUP5 DUP5
...fork_Osaka-eof_test-opcode_DUP6 DUP6
...fork_Osaka-eof_test-opcode_DUP7 DUP7
...fork_Osaka-eof_test-opcode_DUP8 DUP8
...fork_Osaka-eof_test-opcode_DUP9 DUP9
...fork_Osaka-eof_test-opcode_DUP10 DUP10
...fork_Osaka-eof_test-opcode_DUP11 DUP11
...fork_Osaka-eof_test-opcode_DUP12 DUP12
...fork_Osaka-eof_test-opcode_DUP13 DUP13
...fork_Osaka-eof_test-opcode_DUP14 DUP14
...fork_Osaka-eof_test-opcode_DUP15 DUP15
...fork_Osaka-eof_test-opcode_DUP16 DUP16
...fork_Osaka-eof_test-opcode_SWAP1 SWAP1
...fork_Osaka-eof_test-opcode_SWAP2 SWAP2
...fork_Osaka-eof_test-opcode_SWAP3 SWAP3
...fork_Osaka-eof_test-opcode_SWAP4 SWAP4
...fork_Osaka-eof_test-opcode_SWAP5 SWAP5
...fork_Osaka-eof_test-opcode_SWAP6 SWAP6
...fork_Osaka-eof_test-opcode_SWAP7 SWAP7
...fork_Osaka-eof_test-opcode_SWAP8 SWAP8
...fork_Osaka-eof_test-opcode_SWAP9 SWAP9
...fork_Osaka-eof_test-opcode_SWAP10 SWAP10
...fork_Osaka-eof_test-opcode_SWAP11 SWAP11
...fork_Osaka-eof_test-opcode_SWAP12 SWAP12
...fork_Osaka-eof_test-opcode_SWAP13 SWAP13
...fork_Osaka-eof_test-opcode_SWAP14 SWAP14
...fork_Osaka-eof_test-opcode_SWAP15 SWAP15
...fork_Osaka-eof_test-opcode_SWAP16 SWAP16
...fork_Osaka-eof_test-opcode_LOG0 LOG0
...fork_Osaka-eof_test-opcode_LOG1 LOG1
...fork_Osaka-eof_test-opcode_LOG2 LOG2
...fork_Osaka-eof_test-opcode_LOG3 LOG3
...fork_Osaka-eof_test-opcode_LOG4 LOG4
...fork_Osaka-eof_test-opcode_DATALOAD DATALOAD
...fork_Osaka-eof_test-opcode_DATALOADN DATALOADN
...fork_Osaka-eof_test-opcode_DATASIZE DATASIZE
...fork_Osaka-eof_test-opcode_DATACOPY DATACOPY
...fork_Osaka-eof_test-opcode_CALLF CALLF
...fork_Osaka-eof_test-opcode_DUPN DUPN
...fork_Osaka-eof_test-opcode_SWAPN SWAPN
...fork_Osaka-eof_test-opcode_EXCHANGE EXCHANGE
...fork_Osaka-eof_test-opcode_EOFCREATE EOFCREATE
...fork_Osaka-eof_test-opcode_RETURNDATALOAD RETURNDATALOAD
...fork_Osaka-eof_test-opcode_EXTCALL EXTCALL
...fork_Osaka-eof_test-opcode_EXTDELEGATECALL EXTDELEGATECALL
...fork_Osaka-eof_test-opcode_EXTSTATICCALL EXTSTATICCALL