Skip to content

Commit d3e7cbc

Browse files
authored
Merge branch 'main' into spencer-tb/move-prague-to-stable
2 parents 7619426 + 0f77f07 commit d3e7cbc

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+9800
-246
lines changed

.github/configs/evm.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ static:
1111
repo: ethereum/evmone
1212
ref: master
1313
targets: ["evmone-t8n", "evmone-eofparse"]
14-
zkevm:
14+
benchmark:
1515
impl: evmone
1616
repo: ethereum/evmone
1717
ref: master

.github/configs/feature.yaml

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,24 +11,24 @@ static:
1111
evm-type: static
1212
fill-params: --until=Osaka --fill-static-tests ./tests/static
1313
solc: 0.8.21
14-
zkevm_36M:
15-
evm-type: zkevm
16-
fill-params: --from=Cancun --until=Prague --block-gas-limit 36000000 -m zkevm ./tests
14+
benchmark_30M:
15+
evm-type: benchmark
16+
fill-params: --from=Cancun --until=Prague --block-gas-limit 30000000 -m benchmark ./tests
1717
solc: 0.8.21
1818
feature_only: true
19-
zkevm_60M:
20-
evm-type: zkevm
21-
fill-params: --from=Cancun --until=Prague --block-gas-limit 60000000 -m zkevm ./tests
19+
benchmark_60M:
20+
evm-type: benchmark
21+
fill-params: --from=Cancun --until=Prague --block-gas-limit 60000000 -m benchmark ./tests
2222
solc: 0.8.21
2323
feature_only: true
24-
zkevm_90M:
25-
evm-type: zkevm
26-
fill-params: --from=Cancun --until=Prague --block-gas-limit 90000000 -m zkevm ./tests
24+
benchmark_90M:
25+
evm-type: benchmark
26+
fill-params: --from=Cancun --until=Prague --block-gas-limit 90000000 -m benchmark ./tests
2727
solc: 0.8.21
2828
feature_only: true
29-
zkevm_120M:
30-
evm-type: zkevm
31-
fill-params: --from=Cancun --until=Prague --block-gas-limit 120000000 -m zkevm ./tests
29+
benchmark_120M:
30+
evm-type: benchmark
31+
fill-params: --from=Cancun --until=Prague --block-gas-limit 120000000 -m benchmark ./tests
3232
solc: 0.8.21
3333
feature_only: true
3434
eip7692:

.github/scripts/fill_prepatched_tests.sh

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,10 @@ FILL_UNTIL="${5:-Cancun}"
1616
echo "--------------------"
1717
echo "converted-ethereum-tests.txt seem untouched, try to fill pre-patched version of .py files:"
1818

19+
PATCH_COMMIT=$(git rev-parse HEAD)
1920
git checkout main
20-
PREV_COMMIT=$(git rev-parse HEAD)
21-
echo "Checkout head $PREV_COMMIT"
21+
BASE_COMMIT=$(git rev-parse HEAD)
22+
echo "Checkout head $BASE_COMMIT"
2223

2324
echo "Select files that were changed and exist on the main branch:"
2425
echo "$MODIFIED_DELETED_FILES"
@@ -38,7 +39,19 @@ if grep -q "ERROR collecting test session" filloutput.log; then
3839
exit 1
3940
fi
4041

41-
# TODO: Here we can inspect $BASE_TEST_PATH vs $PATCH_TEST_PATH and remove fixtures with the same hash in both directories, to only leave fixtures that have been modified or removed,
42-
# and then set any_modified_fixtures=false if the fixture set before the PR is empty after this check.
43-
echo "any_modified_fixtures=true" >> "$GITHUB_OUTPUT"
42+
git checkout $PATCH_COMMIT
43+
echo "Checkout back to patch $PATCH_COMMIT"
44+
# abort-on-empty-patch is used to ensure that the patch folder is not empty after fixture removal.
45+
# If the patch folder would be empty, it means that fixtures were removed in the PR, in which case we still want to run the coverage check.
46+
uv run compare_fixtures --abort-on-empty-patch $BASE_TEST_PATH $PATCH_TEST_PATH
47+
48+
if [ -d $BASE_TEST_PATH ]; then
49+
# If the base folder is not empty, it means there's at least one fixture that was modified in the PR, continue with the coverage check.
50+
echo "Base folder is not empty after fixture comparison, continuing with coverage check."
51+
echo "any_modified_fixtures=true" >> "$GITHUB_OUTPUT"
52+
else
53+
# If the base folder is empty, it means there were no fixtures that were modified in the PR, or fixtures were only added, so we can skip the coverage check.
54+
echo "Base folder is empty after fixture comparison, skipping coverage check."
55+
echo "any_modified_fixtures=false" >> "$GITHUB_OUTPUT"
56+
fi
4457
exit 0

.github/workflows/tox_verify.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ jobs:
8383
steps:
8484
- name: Checkout ethereum/execution-spec-tests
8585
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
86-
- uses: DavidAnson/markdownlint-cli2-action@b4c9feab76d8025d1e83c653fa3990936df0e6c8
86+
- uses: DavidAnson/markdownlint-cli2-action@05f32210e84442804257b2a6f20b273450ec8265
8787
with:
8888
globs: |
8989
README.md
@@ -182,8 +182,8 @@ jobs:
182182
env:
183183
EELS_RESOLUTIONS_FILE: ${{ github.workspace }}/.github/configs/eels_resolutions.json
184184
run: uvx --with=tox-uv tox -e tests-deployed
185-
tests_deployed_zkevm:
186-
name: Fill zkEVM test cases, deployed, ${{ matrix.os }}, ${{ matrix.python }}
185+
tests_deployed_benchmark:
186+
name: Fill benchmark test cases, deployed, ${{ matrix.os }}, ${{ matrix.python }}
187187
runs-on: ${{ matrix.os }}
188188
strategy:
189189
matrix:
@@ -209,4 +209,4 @@ jobs:
209209
- name: Run tox - fill tests for deployed forks
210210
env:
211211
EELS_RESOLUTIONS_FILE: ${{ github.workspace }}/.github/configs/eels_resolutions.json
212-
run: uvx --with=tox-uv tox -e tests-deployed-zkevm
212+
run: uvx --with=tox-uv tox -e tests-deployed-benchmark

.gitignore

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
.LSOverride
44

55
.python-version
6-
__pycache__/
76
*.py[cod]
87
*$py.class
98
.venv/
@@ -58,23 +57,40 @@ verify_kzg_proof
5857
.vscode/launch.json
5958

6059
# docs
61-
.cache
6260
_readthedocs
6361
site
6462
venv-docs/
6563
.pyspelling_en.dict
6664

67-
# cached fixture downloads (consume)
65+
# cache-related
6866
cached_downloads/
67+
.cache
68+
__pycache__/
69+
.mypy_cache/
70+
.pytest_cache/
71+
.ruff_cache/
72+
73+
6974
# pytest report
7075
assets
7176
*.html
7277

7378
# Environment
7479
env.yaml
80+
.env
81+
.env.*
7582

7683
# Framework logs
7784
logs/
85+
*.log
86+
87+
# node
88+
node_modules/
89+
package-lock.json
7890

7991
# Running github actions locally with act
8092
.act_github_vars
93+
94+
# temporary files
95+
*.tmp
96+
*.temp

.vscode/settings.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@
1818
"editor.formatOnSave": true,
1919
"editor.defaultFormatter": "charliermarsh.ruff",
2020
"editor.codeActionsOnSave": {
21-
"source.organizeImports": "explicit"
21+
"source.organizeImports": "explicit",
22+
"source.fixAll.ruff": "explicit",
2223
},
2324
},
2425
"python.analysis.autoFormatStrings": true,
@@ -57,9 +58,9 @@
5758
"ruff.logLevel": "error",
5859
"extensions.ignoreRecommendations": false,
5960
"search.exclude": {
60-
"tests/legacy": true
61+
"tests/static": true
6162
},
6263
"files.watcherExclude": {
63-
"tests/legacy": true
64+
"tests/static": true
6465
}
6566
}

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
[![uv](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json)](https://github.com/astral-sh/uv)
77
[![License](https://img.shields.io/github/license/ethereum/execution-spec-tests)](https://github.com/ethereum/execution-spec-tests/blob/main/LICENSE)
88

9+
The full execution-spec-tests documentation can be found [here](https://eest.ethereum.org/main/).
10+
911
[ethereum/execution-spec-tests](https://github.com/ethereum/execution-spec-tests) is both a collection of test cases and a framework implemented in Python to generate tests for Ethereum execution clients.
1012

1113
The framework collects and executes the test cases in order to generate _test fixtures_ (JSON) which can be consumed by any execution client to verify their implementation of [ethereum/execution-specs](https://github.com/ethereum/execution-specs). The fixtures, which define state transition and block tests, are generated by the framework using one of the `t8n` command-line tools that are provided by most execution clients, see below for an overview of the supported `t8n` tools.

docs/CHANGELOG.md

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,11 @@ The output behavior of `fill` has changed ([#1608](https://github.com/ethereum/e
1919
- Before: `fill` wrote fixtures into the directory specified by the `--output` flag (default: `fixtures`). This could have many unintended consequences, including unexpected errors if old or invalid fixtures existed in the directory (for details see [#1030](https://github.com/ethereum/execution-spec-tests/issues/1030)).
2020
- Now: `fill` will exit without filling any tests if the specified directory exists and is not-empty. This may be overridden by adding the `--clean` flag, which will first remove the specified directory.
2121

22-
#### Feature `zkevm` expanded to `zkevm_36M`, `zkevm_60M`, `zkevm_90M`, `zkevm_120M`
22+
#### Feature `zkevm` updated to `benchmark`
2323

24-
Renames `zkevm` to `zkevm_36M` and further expands the zkEVM features to run using 60M, 90M and 120M block gas limits in `fixtures_zkevm_36M.tar.gz`, `fixtures_zkevm_60M.tar.gz`, `fixtures_zkevm_90M.tar.gz` and `fixtures_zkevm_120M.tar.gz` respectively.
24+
Due to the crossover between `zkevm` and `benchmark` tests, all instances of the former have been replaced with the latter nomenclature. Repository PR labels and titles are additionally updated to reflect this change.
25+
26+
This update renames the `zkevm` feature release to `benchmark_30M` and further expands the latter for 60M, 90M, and 120M block gas limits in `fixtures_benchmark_30M.tar.gz`, `fixtures_benchmark_60M.tar.gz`, `fixtures_benchmark_90M.tar.gz`, and `fixtures_benchmark_120M.tar.gz` respectively.
2527

2628
Users can select any of the artifacts depending on their testing needs for their provers.
2729

@@ -40,22 +42,26 @@ Users can select any of the artifacts depending on their testing needs for their
4042
- 🔀 Refactor: Encapsulate `fill`'s fixture output options (`--output`, `--flat-output`, `--single-fixture-per-file`) into a `FixtureOutput` class ([#1471](https://github.com/ethereum/execution-spec-tests/pull/1471),[#1612](https://github.com/ethereum/execution-spec-tests/pull/1612)).
4143
- ✨ Don't warn about a "high Transaction gas_limit" for `zkevm` tests ([#1598](https://github.com/ethereum/execution-spec-tests/pull/1598)).
4244
- 🐞 `fill` no longer writes generated fixtures into an existing, non-empty output directory; it must now be empty or `--clean` must be used to delete it first ([#1608](https://github.com/ethereum/execution-spec-tests/pull/1608)).
43-
- 🐞 zkEVM marked tests have been removed from `tests-deployed` tox environment into its own separate workflow `tests-deployed-zkevm` and are filled by `evmone-t8n` ([#1617](https://github.com/ethereum/execution-spec-tests/pull/1617)).
45+
- 🐞 `zkevm` marked tests have been removed from `tests-deployed` tox environment into its own separate workflow `tests-deployed-zkevm` and are filled by `evmone-t8n` ([#1617](https://github.com/ethereum/execution-spec-tests/pull/1617)).
4446
- ✨ Field `postStateHash` is now added to all `blockchain_test` and `blockchain_test_engine` tests that use `exclude_full_post_state_in_output` in place of `postState`. Fixes `evmone-blockchaintest` test consumption and indirectly fixes coverage runs for these tests ([#1667](https://github.com/ethereum/execution-spec-tests/pull/1667)).
4547
- 🔀 Changed INVALID_DEPOSIT_EVENT_LAYOUT to a BlockException instead of a TransactionException ([#1773](https://github.com/ethereum/execution-spec-tests/pull/1773)).
4648

4749
#### `consume`
4850

51+
- 🐞 Fix `consume cache --cache-folder` parameter being ignored, now properly caches fixtures in the specified directory instead of always using the default system cache location.
4952
- 🔀 `consume` now automatically avoids GitHub API calls when using direct release URLs (better for CI environments), while release specifiers like `stable@latest` continue to use the API for version resolution ([#1788](https://github.com/ethereum/execution-spec-tests/pull/1788)).
5053
- 🔀 Refactor consume simulator architecture to use explicit pytest plugin structure with forward-looking architecture ([#1801](https://github.com/ethereum/execution-spec-tests/pull/1801)).
5154
- 🔀 Add exponential retry logic to initial fcu within consume engine ([#1815](https://github.com/ethereum/execution-spec-tests/pull/1815)).
5255

5356
#### `execute`
5457

55-
- ✨ Add `blob_transaction_test` execute test spec, which allows tests that send blob transactions to a running client and verifying its `engine_getBlobsVX` endpoint behavior ([#1644](https://github.com/ethereum/execution-spec-tests/pull/1644)).
58+
- ✨ Added new `Blob` class which can use the ckzg library to generate valid blobs at runtime ([#1614](https://github.com/ethereum/execution-spec-tests/pull/1614)).
59+
- ✨ Added `blob_transaction_test` execute test spec, which allows tests that send blob transactions to a running client and verifying its `engine_getBlobsVX` endpoint behavior ([#1644](https://github.com/ethereum/execution-spec-tests/pull/1644)).
5660

5761
### 📋 Misc
5862

63+
- 🔀 Use only relative imports in `tests/` directory ([#1848](https://github.com/ethereum/execution-spec-tests/pull/1848)).
64+
- 🔀 Misc. doc updates, including a navigation footer ([#1846](https://github.com/ethereum/execution-spec-tests/pull/1846)).
5965
- 🔀 Remove Python 3.10 support ([#1808](https://github.com/ethereum/execution-spec-tests/pull/1808)).
6066
- 🔀 Modernize codebase with Python 3.11 language features ([#1812](https://github.com/ethereum/execution-spec-tests/pull/1812)).
6167
- ✨ Add changelog formatting validation to CI to ensure consistent punctuation in bullet points [#1691](https://github.com/ethereum/execution-spec-tests/pull/1691).
@@ -74,7 +80,9 @@ Users can select any of the artifacts depending on their testing needs for their
7480
- ✨ Added automatic checklist generation for every EIP inside of the `tests` folder. The checklist is appended to each EIP in the documentation in the "Test Case Reference" section ([#1679](https://github.com/ethereum/execution-spec-tests/pull/1679), [#1718](https://github.com/ethereum/execution-spec-tests/pull/1718)).
7581
- 🔀 Add macOS hive development mode workaround to the docs [#1786](https://github.com/ethereum/execution-spec-tests/pull/1786).
7682
- 🔀 Refactor and clean up of exceptions including EOF exceptions within client specific mappers [#1803](https://github.com/ethereum/execution-spec-tests/pull/1803).
77-
- 🔀 Move Prague to stable and Osaka to develop ([#1573](https://github.com/ethereum/execution-spec-tests/pull/1573)).
83+
- 🔀 Move Prague to the stable and Osaka to the develop fixture release ([#1573](https://github.com/ethereum/execution-spec-tests/pull/1573)).
84+
- 🔀 Rename `tests/zkevm/` to `tests/benchmark/` and replace the `zkevm` pytest mark with `benchmark` [#1804](https://github.com/ethereum/execution-spec-tests/pull/1804).
85+
- 🔀 Add fixture comparison check to optimize coverage workflow in CI ([#1833](https://github.com/ethereum/execution-spec-tests/pull/1833)).
7886

7987
### 🧪 Test Cases
8088

@@ -85,7 +93,7 @@ Users can select any of the artifacts depending on their testing needs for their
8593
- ✨ EIP-7823, EIP-7883: Add test cases for ModExp precompile gas-cost updates and input limits on Osaka ([#1579](https://github.com/ethereum/execution-spec-tests/pull/1579), [#1729](https://github.com/ethereum/execution-spec-tests/pull/1729)).
8694
-[EIP-7825](https://eips.ethereum.org/EIPS/eip-7825): Add test cases for the transaction gas limit of 30M gas ([#1711](https://github.com/ethereum/execution-spec-tests/pull/1711)).
8795
-[EIP-7951](https://eips.ethereum.org/EIPS/eip-7951): add test cases for `P256VERIFY` precompile to support secp256r1 curve [#1670](https://github.com/ethereum/execution-spec-tests/pull/1670).
88-
- ✨ Introduce blockchain tests for ZKEVM to cover the scenario of pure ether transfers [#1742](https://github.com/ethereum/execution-spec-tests/pull/1742).
96+
- ✨ Introduce blockchain tests for benchmark to cover the scenario of pure ether transfers [#1742](https://github.com/ethereum/execution-spec-tests/pull/1742).
8997
-[EIP-7934](https://eips.ethereum.org/EIPS/eip-7934): Add test cases for the block RLP max limit of 10MiB ([#1730](https://github.com/ethereum/execution-spec-tests/pull/1730)).
9098
-[EIP-7939](https://eips.ethereum.org/EIPS/eip-7939) Add count leading zeros (CLZ) opcode tests for Osaka ([#1733](https://github.com/ethereum/execution-spec-tests/pull/1733)).
9199
-[EIP-7918](https://eips.ethereum.org/EIPS/eip-7918): Blob base fee bounded by execution cost test cases (initial), includes some adjustments to [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844) tests ([#1685](https://github.com/ethereum/execution-spec-tests/pull/1685)).
@@ -112,12 +120,12 @@ A new fork `EOFv1` has additionally been created to fill and consume EOF related
112120
- ✨ Engine API updates for Osaka, add `get_blobs` rpc method ([#1510](https://github.com/ethereum/execution-spec-tests/pull/1510)).
113121
- ✨ The EIP Version checker has been moved from `fill` and `execute` to it's own command-line tool `check_eip_versions` that gets ran daily as a Github Action ([#1537](https://github.com/ethereum/execution-spec-tests/pull/1537)).
114122
- 🔀 Add new `tests/unscheduled` folder, move EOF from Osaka to unscheduled, add `EOFv1` fork name for EOF tests ([#1507](https://github.com/ethereum/execution-spec-tests/pull/1507)).
115-
- ✨ CI features now contain an optional field to skip them from EEST full releases, `zkevm` and EOF features are now feature only ([#1596](https://github.com/ethereum/execution-spec-tests/pull/1596)).
123+
- ✨ CI features now contain an optional field to skip them from EEST full releases, `benchmark` and EOF features are now feature only ([#1596](https://github.com/ethereum/execution-spec-tests/pull/1596)).
116124
- 🐞 Don't attempt to install `solc` via `solc-select` on ARM (official Linux ARM builds of `solc` are not available at the time of writing, cf [ethereum/solidity#11351](https://github.com/ethereum/solidity/issues/11351)) and add a version sanity check ([#1556](https://github.com/ethereum/execution-spec-tests/pull/1556)).
117125

118126
### 🧪 Test Cases
119127

120-
- 🔀 Automatically apply the `zkevm` marker to all tests under `./tests/zkevm/` and `./tests/prague/eip2537_bls_12_381_precompiles/` via conftest configuration ([#1534](https://github.com/ethereum/execution-spec-tests/pull/1534)).
128+
- 🔀 Automatically apply the `benchmark` marker to all tests under `./tests/benchmark/` and `./tests/prague/eip2537_bls_12_381_precompiles/` via conftest configuration ([#1534](https://github.com/ethereum/execution-spec-tests/pull/1534)).
121129
- ✨ Port [calldataload](https://github.com/ethereum/tests/blob/ae4791077e8fcf716136e70fe8392f1a1f1495fb/src/GeneralStateTestsFiller/VMTests/vmTests/calldatacopyFiller.yml) and [calldatasize](https://github.com/ethereum/tests/blob/81862e4848585a438d64f911a19b3825f0f4cd95/src/GeneralStateTestsFiller/VMTests/vmTests/calldatasizeFiller.yml) tests ([#1236](https://github.com/ethereum/execution-spec-tests/pull/1236)).
122130

123131
## [v4.4.0](https://github.com/ethereum/execution-spec-tests/releases/tag/v4.4.0) - 2025-04-29
@@ -134,9 +142,9 @@ The tests have been filled using the new static test filler introduced in [#1336
134142

135143
Users can expect that all tests currently living in [ethereum/tests](https://github.com/ethereum/tests/tree/develop/src) should eventually make its way into [`./tests/static`](https://github.com/ethereum/execution-spec-tests/tree/main/tests/static) and can rely that these tests, filled for new forks even, will be included in `fixtures_static.tar.gz`.
136144

137-
#### `fixtures_zkevm`
145+
#### `fixtures_benchmark`
138146

139-
Another new fixture tarball has been included in this release: `fixtures_zkevm.tar.gz`.
147+
Another new fixture tarball has been included in this release: `fixtures_benchmark.tar.gz`.
140148

141149
Includes tests that are tailored specifically to test the execution layer proof generators.
142150

0 commit comments

Comments
 (0)