Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,5 +36,5 @@ jobs:
# Running our heavy tests in parallel would congest resources.
# Each test still executes parallelly anyway.
run: |
git submodule update --init
bash scripts/fetch-eest-fixtures.sh
cargo test --release --workspace -- --test-threads=1
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
.vscode
/target
perf.*
crates/pevm/tests/ethereum/fixtures/
3 changes: 0 additions & 3 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,3 +0,0 @@
[submodule "tests/ethereum/tests"]
path = crates/pevm/tests/ethereum/tests
url = https://github.com/ethereum/tests
4 changes: 2 additions & 2 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ cargo fmt --all
taplo fmt --option reorder_keys=true # TOML formatting

# Tests (must use --test-threads=1 to avoid resource contention)
git submodule update --init # Required once: pulls ethereum/tests submodule
bash scripts/fetch-eest-fixtures.sh # Required once: downloads EEST state test fixtures
cargo test --workspace --release -- --test-threads=1

# Run a single test
Expand Down Expand Up @@ -61,7 +61,7 @@ cargo bench --features global-alloc --bench gigagas

### Testing layout (`crates/pevm/tests/`)

- `ethereum/` — general state tests from the official `ethereum/tests` submodule
- `ethereum/` — EEST state test fixtures (`fixtures_stable.tar.gz` from `ethereum/execution-spec-tests` releases, downloaded via `scripts/fetch-eest-fixtures.sh`, gitignored)
- `evm/` — mocked blocks (raw transfers, ERC-20, Uniswap, mixed, beneficiary edge cases)
- `mainnet/` — snapshots of real Ethereum mainnet blocks
- `common/` — shared test harness (`runner.rs`, `storage.rs`, `snapshot_data.rs`)
Expand Down
256 changes: 162 additions & 94 deletions crates/pevm/tests/ethereum/main.rs

Large diffs are not rendered by default.

1 change: 0 additions & 1 deletion crates/pevm/tests/ethereum/tests
Submodule tests deleted from c67e48
23 changes: 23 additions & 0 deletions scripts/fetch-eest-fixtures.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#!/usr/bin/env bash
# Downloads and extracts the stable Ethereum Execution Spec Test (EEST) fixtures
# into crates/pevm/tests/ethereum/fixtures/. Run this once before running tests:
#
# bash scripts/fetch-eest-fixtures.sh
#
# To pin to a specific release, set EEST_VERSION before running:
#
# EEST_VERSION=v5.4.0 bash scripts/fetch-eest-fixtures.sh

set -euo pipefail

EEST_VERSION="${EEST_VERSION:-$(
curl -sf https://api.github.com/repos/ethereum/execution-spec-tests/releases/latest \
| python3 -c "import sys,json; print(json.load(sys.stdin)['tag_name'])"
)}"
DEST="crates/pevm/tests/ethereum/fixtures"
URL="https://github.com/ethereum/execution-spec-tests/releases/download/${EEST_VERSION}/fixtures_stable.tar.gz"

echo "Fetching EEST ${EEST_VERSION} -> ${DEST}/"
mkdir -p "${DEST}"
curl -fL "${URL}" | tar -xz --strip-components=1 -C "${DEST}"
echo "Done."
Loading