Skip to content

Commit

Permalink
new(tests): Add test for stack reaching max size in called function
Browse files Browse the repository at this point in the history
  • Loading branch information
gumb0 committed Jul 11, 2024
1 parent 9ffc013 commit ba60080
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 0 deletions.
3 changes: 3 additions & 0 deletions tests/prague/eip7692_eof_v1/eip4750_functions/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
"""
EOF tests for EIP-4750 functions
"""
14 changes: 14 additions & 0 deletions tests/prague/eip7692_eof_v1/eip4750_functions/helpers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
"""
EOF Functions tests helpers
"""

import itertools

"""Storage addresses for common testing fields"""
_slot = itertools.count()
next(_slot) # don't use slot 0
slot_code_worked = next(_slot)
slot_last_slot = next(_slot)

"""Storage values for common testing fields"""
value_code_worked = 0x2015
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
"""
EOF CALLF execution tests
"""

import pytest

from ethereum_test_tools import Account, EOFException, EOFStateTestFiller
from ethereum_test_tools.eof.v1 import Container, Section
from ethereum_test_tools.vm.opcode import Opcodes as Op

from .. import EOF_FORK_NAME
from .helpers import slot_code_worked, value_code_worked

REFERENCE_SPEC_GIT_PATH = "EIPS/eip-4750.md"
REFERENCE_SPEC_VERSION = "14400434e1199c57d912082127b1d22643788d11"

pytestmark = pytest.mark.valid_from(EOF_FORK_NAME)


def test_callf_stack_size_1024(
eof_state_test: EOFStateTestFiller,
):
"""Test stack reaching 1024 items in called function"""
eof_state_test(
data=Container(
sections=[
Section.Code(
code=Op.PUSH0 * 1023
+ Op.CALLF[1]
+ Op.POP * 1023
+ Op.SSTORE(slot_code_worked, value_code_worked)
+ Op.RETURN(0, 0),
max_stack_height=1023,
),
Section.Code(
Op.PUSH0 + Op.POP + Op.RETF,
code_inputs=0,
code_outputs=0,
max_stack_height=1,
),
],
),
container_post=Account(storage={slot_code_worked: value_code_worked}),
)

0 comments on commit ba60080

Please sign in to comment.