Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
104 commits
Select commit Hold shift + click to select a range
b73bc36
refactor(tests): add checklist marker for eip7823 (#2115)
LouisTsai-Csie Sep 15, 2025
a3e9451
refactor(tests): update checklist item for eip7939 (#2097)
LouisTsai-Csie Sep 15, 2025
73aec73
refactor(tests): update checklist item for eip7939 (#2097)
LouisTsai-Csie Sep 15, 2025
df055e5
chore(cli): besu blob tx exception mapper update (#2145)
spencer-tb Sep 15, 2025
f87ee56
refactor(tests): add checklist marker for eip7825 (#2107)
LouisTsai-Csie Sep 16, 2025
c1bd3e2
refactor(tests): add checklist marker for eip7825 (#2107)
LouisTsai-Csie Sep 16, 2025
623b3f6
chore(consume): update sync timeout for consume sync. (#2158)
spencer-tb Sep 16, 2025
0782b6e
refactor(tests): add checklist marker for eip7883 (#2098)
LouisTsai-Csie Sep 16, 2025
a6fce3a
feat(tests): add invalid p256verify cases (#2149)
LouisTsai-Csie Sep 16, 2025
3fa00f2
fix(tests): fix shanghai to cancun transition test genesis file (#2161)
spencer-tb Sep 16, 2025
0b4c505
chore(consume): fix consume rlp for python 3.11 (#2162)
spencer-tb Sep 16, 2025
b58b9e0
chore(tests): group mem-heavy tests together in xdist (#2153)
SamWilsn Sep 17, 2025
6f7c43f
chore(cli): fix reth eip-7825 tx gas limit cap exceptions (#2164)
spencer-tb Sep 17, 2025
8aa5da4
feat(tests): Enforce EIP-7928 ordering rules (#2138)
fselmo Sep 17, 2025
415236b
chore(consume): increase fcu retries to 30 (at 1 second each) (#2168)
felix314159 Sep 17, 2025
9190bf1
feat(tests): Add flexibility to expected absent scenarios for BALs (#…
fselmo Sep 17, 2025
108af8c
chore(tooling): enforce ruff rule c420 (#2146)
felix314159 Sep 18, 2025
295d6b3
refactor(benchmark): update expected gas usage rule for flexibility (…
LouisTsai-Csie Sep 18, 2025
417eb44
chore(tests): fix peerdas transition test. (#2172)
spencer-tb Sep 18, 2025
ea083d6
fix: use `engine_newPayloadV5` for Glamsterdam (#2170)
fselmo Sep 19, 2025
7fbdfbb
fix: use `engine_newPayloadV5` for Glamsterdam (#2170)
fselmo Sep 19, 2025
e80afdd
chore(all): rename shadowed modules to enable ruff a005 (#2133)
felix314159 Sep 19, 2025
933f8ea
chore(all): rename shadowed modules to enable ruff a005 (#2133)
felix314159 Sep 19, 2025
cdec882
feat(tests): add correct P256 precompile tests for invalid point (#2179)
chfast Sep 22, 2025
eea26c2
chore: unused arguments (#2166)
SamWilsn Sep 22, 2025
42fe3c2
type(refactor): EIP-7951 secp256r1 Test Vector File Reorganization (#…
holgerd77 Sep 23, 2025
5aef86f
refactor(bal): absence validators -> BalAccountAbsentValues (#2175)
fselmo Sep 23, 2025
38d9324
feat(benchmark): add `benchmark_test` test type (#1945)
LouisTsai-Csie Sep 24, 2025
e92ba45
feat(benchmark): add `benchmark_test` test type (#1945)
LouisTsai-Csie Sep 24, 2025
832ba44
fix(execute): add missing return statement stub contract deployment (…
CPerezz Sep 25, 2025
6d3cb3c
✨ feat(fill): watch mode (#2173)
raxhvl Sep 25, 2025
8b02298
chore: shorten docstrings and single-line comments to 79 (ruff w505: …
felix314159 Sep 25, 2025
e86958f
chore: shorten docstrings and single-line comments to 79 (ruff w505: …
felix314159 Sep 25, 2025
5545577
chore(cli): update reth gas limit exception mapper
spencer-tb Sep 26, 2025
db15a06
chore(tests): workaround for EIP-6110 deposit log checks (#2177)
spencer-tb Sep 26, 2025
4958208
feat(deps,rpc): add retry logic to fix flaky connection issues in hiv…
danceratopz Sep 26, 2025
779c6c6
feat(tests): add test cases for P256 input hash special values (#2203)
chfast Sep 26, 2025
f222c0a
chore(cli): update nethermind's `NONCE_IS_MAX` message in exception m…
spencer-tb Sep 29, 2025
20409f1
feat(tests): add test case for P256 where `Q.x` is zero (#2221)
chfast Sep 29, 2025
5defdbb
✨ feat(tests): EIP-7928 SELFDESTRUCT tests (#2159)
raxhvl Sep 29, 2025
6db86ad
✨ feat(tests): EIP-7928 SELFDESTRUCT tests (#2159)
raxhvl Sep 29, 2025
b144c51
✨ feat(tests): EIP-7928 account access test cases (#2182)
raxhvl Sep 29, 2025
63401ee
feat(tests): add test cases for P256 input s special values (#2215)
chfast Sep 30, 2025
8def6e3
feat(tests): add test cases for P256 with zero h, r, s (#2216)
chfast Sep 30, 2025
8f0f7ba
feat(tests): add test case with invalid P256 with x1 above N (#2217)
chfast Sep 30, 2025
6d4be4e
feat(tests): add test case for point doubling in P256 (#2218)
chfast Sep 30, 2025
3021a42
feat(tests): add test case for P256 with r max value (#2229)
chfast Sep 30, 2025
63a19cf
feat(tests): add test cases for P256 for r,s above N (#2230)
chfast Sep 30, 2025
330d158
new(tests): Identity precompile (#1047)
marioevz Sep 30, 2025
21a3dd0
Fix/warnings (#2239)
fselmo Sep 30, 2025
b72bc3f
Fix/warnings (#2239)
fselmo Sep 30, 2025
83860d0
feat(tests): add test case for P256 with Q at infinity (#2235)
chfast Oct 1, 2025
212557f
chore(cli): update exception mapping for ethrex (#2226)
SDartayet Oct 1, 2025
05e0cd2
feat(tests): multi opcode bloatnet ext cases (#2186)
CPerezz Oct 1, 2025
d9901a5
fix(execute): add gas validation for benchmark tests in execute mode …
CPerezz Oct 1, 2025
38bb9af
chore(tests): safer workaround for EIP-6110 deposit log checks (#2233)
spencer-tb Oct 1, 2025
b36d004
chore(tests): safer workaround for EIP-6110 deposit log checks (#2233)
spencer-tb Oct 1, 2025
3e7af33
feat(tests): add more tests for P256 where R is at infinity (#2238)
chfast Oct 1, 2025
f39dead
chore(forks): update bpo hardfork params to match testnet (#2234)
spencer-tb Oct 1, 2025
d5ecf51
test(tests): add BLOCKHASH genesis hash availability test (#2228)
bshastry Oct 1, 2025
cff8c8f
chore(cli): add mapping for TYPE_3_TX_CONTRACT_CREATION error (#2244)
SDartayet Oct 1, 2025
0274aee
feat(forks): Enforce keyword-only arguments in fork methods (#1714)
akafle01 Oct 2, 2025
7a486e3
feat(forks): Enforce keyword-only arguments in fork methods (#1714)
akafle01 Oct 2, 2025
6b86714
feat(benchmarks): add bloatnet marker support (#2169)
LouisTsai-Csie Oct 2, 2025
ccf865a
feat(benchmarks): add bloatnet marker support (#2169)
LouisTsai-Csie Oct 2, 2025
1d74617
chore(cli): erigon 7825 exception bump. (#2250)
spencer-tb Oct 2, 2025
a821064
feat(tests): add tests for P256 with x,y out of range (#2237)
chfast Oct 2, 2025
625a8e7
chore**s**(src): use `--chain-id` in ProgramChainid (#2232)
felix314159 Oct 2, 2025
58caafc
chore(consume): mark sync tests flaky (#2252)
fselmo Oct 2, 2025
78689e6
feat(tests): test accessing slots in address that appears more than o…
JereSalo Oct 2, 2025
eb915bb
✨ feat(tests): EIP-7928 Single-Opcode Success and OOG test cases (#2118)
raxhvl Oct 2, 2025
114d6f9
✨ feat(tests): EIP-7928 Single-Opcode Success and OOG test cases (#2118)
raxhvl Oct 2, 2025
74764ab
type(tests): convert create suicide during init (#1871)
winsvega Oct 2, 2025
cccfcb9
✨ feat(tests): EIP-7928 test cases for EIP-2930 transactions (#2167)
raxhvl Oct 2, 2025
bd5fab4
✨ feat(tests): EIP-7928 test cases for EIP-2930 transactions (#2167)
raxhvl Oct 2, 2025
8b31c88
refactor(tests): use pytest parametrize to reduce code duplication in…
CPerezz Oct 3, 2025
0952838
feat(tests): add test for modexp with 2**32 exp len (#2254)
chfast Oct 3, 2025
1446713
feat(vm): evm memory variable abstraction (#1609)
marioevz Oct 3, 2025
dbe04c4
feat(vm): evm memory variable abstraction (#1609)
marioevz Oct 3, 2025
f10bfce
chores(fill, pytest): mark slow tests that were not marked as such ye…
felix314159 Oct 3, 2025
766a5f9
fix(tests): BALs - set genesis environment to calculate base fee appr…
fselmo Oct 3, 2025
c142342
chore(tools): add support for large `int`s in `Wei` class (#2265)
acuarica Oct 6, 2025
07ddbf3
feat(pre_alloc): Add maximum bytecode size limit for contract deploym…
LouisTsai-Csie Oct 6, 2025
9657da8
feat(pre_alloc): Add maximum bytecode size limit for contract deploym…
LouisTsai-Csie Oct 6, 2025
b59303d
fix(benchmark): relax gas validation rule for non benchmark mode (#2269)
LouisTsai-Csie Oct 6, 2025
689e489
✨ feat(tests): EIP-7928 No-op and adjacent test case (#2178)
raxhvl Oct 6, 2025
efd71b7
✨ feat(tests): EIP-7928 No-op and adjacent test case (#2178)
raxhvl Oct 6, 2025
7582d85
feat(benchmark): add eip7702 case (#2227)
LouisTsai-Csie Oct 6, 2025
83413a2
chore(cli): reth/geth 6110 exception mapper (#2271)
spencer-tb Oct 7, 2025
efc9058
chore(consume): fix consume sync logger errors. (#2272)
spencer-tb Oct 7, 2025
6f64a45
fix(tests): fix storage slot of actual value for `eip7516_blobgasfee`…
acuarica Oct 7, 2025
f8ed185
feat(consume): `consume direct` using evmone-state and blockchaintest…
pdobacz Oct 7, 2025
98be2d6
feat(tests): port ethereum/tests swap opcode tests (#1163)
bomanaps Oct 7, 2025
7f32108
feat(t8n): Support evmone's `--opcode.count` option (#1956)
marioevz Oct 7, 2025
083244a
feat(cli): Blocktest builder (#2190)
bshastry Oct 7, 2025
89d5807
new(tests): EIP-7610: init-collision tests (#636)
marioevz Oct 8, 2025
5bf06c2
chore(ci|tests|fill): fixes for release ci when filling with `--gener…
spencer-tb Oct 8, 2025
3b1a276
chore(ci|tests|fill): fixes for release ci when filling with `--gener…
spencer-tb Oct 8, 2025
ddbed87
feat(tests): test call for eip2929 (#689)
SamWilsn Oct 8, 2025
b272eb2
chore(ci|fill): bump eels for bpo1/2 param changes (#2270)
spencer-tb Oct 8, 2025
395c88e
Move eest to its own package
SamWilsn Sep 29, 2025
19057d7
Merge commit 'b272eb28511f071abed44936c19db610fe451cef' into split-fill
SamWilsn Oct 8, 2025
e902d43
Merge commit 'ddbed877ce5696de5b95120597fd2d0f29b4ec6a' into split-fill
SamWilsn Oct 8, 2025
f48ad3d
Add package directory to tox.ini
SamWilsn Oct 8, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ __pycache__
__pycache__/
*.py[cod]
*$py.class
.mypy_cache/

# C extensions
*.so
Expand Down
216 changes: 216 additions & 0 deletions packages/tests/pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,216 @@
[build-system]
requires = [
"setuptools==78.0.2",
"wheel==0.45.1",
] # the setuptools version here should match that of setuptools below in docs in optional-dependencies
build-backend = "setuptools.build_meta"

[project]
name = "ethereum-execution-tests"
version = "1.0.0"
description = "Ethereum execution client test authoring framework"
readme = "README.md"
requires-python = ">=3.11"
license = "MIT"
license-files = [ "LICENSE" ]
keywords = ["ethereum", "testing", "blockchain"]
classifiers = [
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
]
dependencies = [
"click>=8.1.0,<9",
"ethereum-hive>=0.1.0a1,<1.0.0",
"ethereum-execution",
"gitpython>=3.1.31,<4",
"PyJWT>=2.3.0,<3",
"requests>=2.31.0,<3",
"requests_unixsocket2>=0.4.0",
"colorlog>=6.7.0,<7",
"pytest>=8,<9",
"pytest-custom-report>=1.0.1,<2",
"pytest-html>=4.1.0,<5",
"pytest-metadata>=3,<4",
"pytest-xdist>=3.3.1,<4",
"coincurve>=20.0.0,<21",
"trie>=3.1.0,<4",
"semver>=3.0.1,<4",
"pydantic>=2.11.0,<3",
"rich>=13.7.0,<14",
"filelock>=3.15.1,<4",
"ethereum-types>=0.2.1,<0.3",
"pyyaml>=6.0.2,<7",
"types-pyyaml>=6.0.12.20240917,<7",
"pytest-json-report>=1.5.0,<2",
"typing-extensions>=4.12.2,<5",
"questionary>=2.1.0,<3",
"ethereum-rlp>=0.1.3,<0.2",
"pytest-regex>=0.2.0,<0.3",
"eth-abi>=5.2.0",
"joblib>=1.4.2",
"ckzg>=2.1.3,<3",
"tenacity>=9.0.0,<10",
]

[project.urls]
Homepage = "https://github.com/ethereum/execution-specs"
Documentation = "https://eest.ethereum.org"
Repository = "https://github.com/ethereum/execution-specs"
Issues = "https://github.com/ethereum/execution-specs/issues"
Changelog = "https://eest.ethereum.org/main/CHANGELOG/"

[project.optional-dependencies]
test = ["pytest-cov>=4.1.0,<5"]
lint = [
"ruff==0.13.2",
"mypy==1.17.0",
"types-requests>=2.31,<2.33",
]
docs = [
"cairosvg>=2.7.0,<3",
"codespell>=2.4.1,<3",
"markdown==3.8",
"mike>=1.1.2,<2",
"mkdocs>=1.4.3,<2",
"mkdocs-click>=0.8,<1",
"mkdocs-gen-files>=0.5.0,<1",
"mkdocs-git-authors-plugin>=0.7.1,<1",
"mkdocs-glightbox>=0.3.4,<1",
"mkdocs-literate-nav>=0.6.0,<1",
"mkdocs-material>=9.1.14,<10",
"mkdocs-material-extensions>=1.1.1,<2",
"mkdocstrings>=0.21.2,<1",
"mkdocstrings-python>=1.0.0,<2",
"pillow>=10.0.1,<11",
"pyspelling>=2.8.2,<3",
"lxml>=6.0.0,<7", # needs to be >= 6.0 for pypy
"setuptools==78.0.2",
]

[project.scripts]
fill = "cli.pytest_commands.fill:fill"
phil = "cli.pytest_commands.fill:phil"
execute = "cli.pytest_commands.execute:execute"
attac = "cli.pytest_commands.execute:execute"
checkfixtures = "cli.check_fixtures:check_fixtures"
check_eip_versions = "cli.pytest_commands.check_eip_versions:check_eip_versions"
consume = "cli.pytest_commands.consume:consume"
protec = "cli.pytest_commands.consume:consume"
checklist = "cli.pytest_commands.checklist:checklist"
generate_checklist_stubs = "cli.generate_checklist_stubs:generate_checklist_stubs"
genindex = "cli.gen_index:generate_fixtures_index_cli"
gentest = "cli.gentest:generate"
eofwrap = "cli.eofwrap:eof_wrap"
pyspelling_soft_fail = "cli.tox_helpers:pyspelling"
markdownlintcli2_soft_fail = "cli.tox_helpers:markdownlint"
order_fixtures = "cli.order_fixtures:order_fixtures"
evm_bytes = "cli.evm_bytes:evm_bytes"
hasher = "cli.hasher:main"
eest = "cli.eest.cli:eest"
fillerconvert = "cli.fillerconvert.fillerconvert:main"
groupstats = "cli.show_pre_alloc_group_stats:main"
extract_config = "cli.extract_config:extract_config"
compare_fixtures = "cli.compare_fixtures:main"
modify_static_test_gas_limits = "cli.modify_static_test_gas_limits:main"

[tool.setuptools.packages.find]
where = ["src"]
exclude = ["*tests*"]

[tool.pyright]
exclude = ["tests/static/**"]

[tool.setuptools.package-data]
ethereum_test_forks = ["forks/contracts/*.bin"]
"pytest_plugins.execute" = ["eth_config/networks.yml"]
"pytest_plugins" = ["eels_resolutions.json"]
"cli.eest.make" = ["templates/*.j2"]
"cli.pytest_commands" = ["pytest_ini_files/*.ini"]
"ethereum_test_types" = ["kzg_trusted_setup.txt"]

[tool.ruff]
line-length = 99

[tool.ruff.lint]
select = [
"E", # pycodestyle errors
"F", # Pyflakes
"B", # flake8-bugbear
"W", # pycodestyle warnings
"I", # isort
"A", # flake8-builtins
"N", # pep8-naming
"D", # pydocstyle
"C4", # flake8-comprehensions
"ARG", # flake8-unused-arguments
]
fixable = [
"E", # pycodestyle errors
"F", # Pyflakes
"B", # flake8-bugbear
"W", # pycodestyle warnings
"I", # isort
"D", # pydocstyle
]
ignore = [
"C401", # Unnecessary generator set
"C408", # Unnecessary collection call
"D107", # Missing docstring in __init__
"D200", # One-line docstring should fit on one line with quotes
"D203", # 1 blank line required before class docstring
"D205", # Missing blank line after summary
"D212", # Multi-line docstring summary should start at the first line
"D401", # First line should be in imperative mood ("Do", not "Does")
# TODO: ethereum/execution-spec-tests#2176
"ARG002", # unused-method-argument
"ARG003", # unused-class-method-argument
"ARG005", # unused-lambda-argument
]

[tool.ruff.lint.per-file-ignores]
"tests/*" = ["ARG001"] # TODO: ethereum/execution-spec-tests#2188

[tool.mypy]
disable_error_code = ["import-untyped"]
mypy_path = ["src", "$MYPY_CONFIG_FILE_DIR/stubs"]
files = ["src", "tests"]
exclude = [
'^\.cache/',
'^\.git/',
'^\.pytest_cache/',
'^\.ruff_cache/',
'^\.tox/',
'^\.venv/',
'^\.vscode/',
'^fixtures/',
'^logs/',
'^site/',
]
plugins = ["pydantic.mypy"]

[tool.codespell]
skip = ".venv,__pycache__,.git,build,dist,*.pyc,*.lock"
check-filenames = true
ignore-words-list = "ingenuous"

[tool.pytest.ini_options]
console_output_style = "count"
minversion = "7.0"
python_files = [
"test_*.py"
]
testpaths = [
"src"
]
addopts = [
"-p", "pytester",
"--ignore=src/pytest_plugins/consume/test_cache.py",
"--ignore=src/pytest_plugins/consume/direct/",
"--ignore=src/pytest_plugins/consume/simulators/",
]

[tool.uv]
required-version = ">=0.7.0"

[tool.uv.sources]
ethereum-execution = { workspace = true }
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,15 @@ def check_json(json_file_path: Path):
"""
Check all fixtures in the specified json file:
1. Load the json file into a pydantic model. This checks there are no
Validation errors when loading fixtures into EEST models.
Validation errors when loading fixtures into EEST models.
2. Serialize the loaded pydantic model to "json" (actually python data
structures, ready to written as json).
structures, ready to written as json).
3. Load the serialized data back into a pydantic model (to get an updated
hash) from step 2.
hash) from step 2.
4. Compare hashes:
a. Compare the newly calculated hashes from step 2. and 3. and
b. If present, compare info["hash"] with the calculated hash from step 2.
b. If present, compare info["hash"] with the calculated hash from
step 2.
"""
fixtures: Fixtures = Fixtures.model_validate_json(json_file_path.read_text())
fixtures_json = to_json(fixtures)
Expand Down Expand Up @@ -86,7 +87,9 @@ def check_json(json_file_path: Path):
help="Stop and raise any exceptions encountered while checking fixtures.",
)
def check_fixtures(input_str: str, quiet_mode: bool, stop_on_error: bool):
"""Perform some checks on the fixtures contained in the specified directory."""
"""
Perform some checks on the fixtures contained in the specified directory.
"""
input_path = Path(input_str)
success = True
file_count = 0
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
"""
Compare two fixture folders and remove duplicates based on fixture hashes.

This tool reads the .meta/index.json files from two fixture directories and identifies
fixtures with identical hashes on a test case basis, then removes the duplicates from
both of the folders. Used within the coverage workflow.
This tool reads the .meta/index.json files from two fixture directories and
identifies fixtures with identical hashes on a test case basis, then removes
the duplicates from both of the folders. Used within the coverage workflow.
"""

import json
Expand Down Expand Up @@ -95,8 +95,8 @@ def batch_remove_fixtures_from_files(removals_by_file):

def rewrite_index(folder: Path, index: IndexFile, dry_run: bool):
"""
Rewrite the index to the correct index file, or if the test count was reduced to zero,
the entire directory is deleted.
Rewrite the index to the correct index file, or if the test count was
reduced to zero, the entire directory is deleted.
"""
if len(index.test_cases) > 0:
# Just rewrite the index
Expand Down Expand Up @@ -130,7 +130,9 @@ def main(
dry_run: bool,
abort_on_empty_patch: bool,
):
"""Compare two fixture folders and remove duplicates based on fixture hashes."""
"""
Compare two fixture folders and remove duplicates based on fixture hashes.
"""
try:
# Load indices
base_index = load_index(base)
Expand Down
Loading
Loading