test_slotnum_initcode_create()
Documentation for tests/amsterdam/eip7843_slotnum/test_slotnum.py::test_slotnum_initcode_create@ffe48572.
Generate fixtures for these test cases for Bogota with:
fill -v tests/amsterdam/eip7843_slotnum/test_slotnum.py::test_slotnum_initcode_create --fork Bogota
Test SLOTNUM inside initcode executed via CREATE and CREATE2.
Source code in tests/amsterdam/eip7843_slotnum/test_slotnum.py
| @EIPChecklist.Opcode.Test.ExecutionContext.Initcode.Behavior()
@EIPChecklist.Opcode.Test.ExecutionContext.Initcode.Behavior.Opcode()
@pytest.mark.parametrize("opcode", [Op.CREATE, Op.CREATE2])
def test_slotnum_initcode_create(
state_test: StateTestFiller,
pre: Alloc,
opcode: Op,
) -> None:
"""
Test SLOTNUM inside initcode executed via CREATE and CREATE2.
"""
slot_number = 0xC0FFEE
init_code = Op.SSTORE(0, Op.SLOTNUM)
factory_code = (
Op.CALLDATACOPY(offset=0, size=len(init_code))
+ opcode(offset=0, size=len(init_code))
+ Op.STOP
)
factory_address = pre.deploy_contract(factory_code)
created_contract_address = compute_create_address(
address=factory_address,
nonce=1,
initcode=init_code,
opcode=opcode,
)
tx = Transaction(
to=factory_address,
data=init_code,
sender=pre.fund_eoa(),
)
post = {
created_contract_address: Account(storage={0: slot_number}),
}
state_test(
env=Environment(slot_number=slot_number),
pre=pre,
tx=tx,
post=post,
)
|
Parametrized Test Cases
This test generates 2 parametrized test cases across 2 forks.