-
Notifications
You must be signed in to change notification settings - Fork 841
execution-spec-tests runners #4207
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
Codecov Report❌ Patch coverage is Additional details and impacted files
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
📦 Bundle Size Analysis
Generated by bundle-size workflow |
802f31e to
a3d7656
Compare
5c944c9 to
64f3597
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR implements a comprehensive test runner infrastructure for the execution-spec-tests suite, enabling validation of EthereumJS implementations against the official Ethereum test fixtures. Additionally, it includes critical bug fixes for blob gas calculations and transaction validation.
Key changes:
- New test infrastructure for running state_tests and blockchain_tests from the execution-spec-tests submodule
- Bug fix for EIP-7819: Corrected blob gas price calculation at hardfork transitions to use child common instead of parent common
- Bug fix for transaction gas limit validation: Removed incorrect elasticity multiplier from block gas limit comparison
Reviewed changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| packages/vm/test/tester/executionSpecTestLoader.ts | Implements test fixture loader with support for custom hardfork schedules and transition forks |
| packages/vm/test/tester/executionSpecState.test.ts | State test runner that validates pre-state, transaction execution, and post-state root |
| packages/vm/test/tester/executionSpecBlockchain.test.ts | Blockchain test runner with block processing and exception validation |
| packages/vm/vitest.config.browser.mts | Excludes new execution-spec test files from browser tests |
| packages/block/src/header/header.ts | Fixes EIP-7819 blob fee calculation to use child common at transitions |
| packages/vm/src/runBlock.ts | Corrects transaction gas limit validation against block gas limit |
| packages/block/src/block/block.ts | Updates to use getBlobGasSchedule() API for BPO fork compatibility |
| packages/tx/src/4844/tx.ts | Improves error messages and restructures blob limit validation logic |
| packages/tx/test/eip4844.spec.ts | Updates test assertions to match new error message formats |
| packages/common/src/hardforks.ts | Adds EIP-7892 to Osaka hardfork configuration |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| } | ||
| } | ||
|
|
||
| // // Check final state after all blocks are processed |
Copilot
AI
Dec 12, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The commented-out line suggests this was previously uncommented code. If the check for final state after all blocks is important, this should be restored or removed. Leaving commented code can reduce maintainability.
| // // Check final state after all blocks are processed |
64f3597 to
8de1189
Compare
Implements a minimal test runner to run
state_testsandblockchain_testsfromexecution-spec-testssubmodule.Includes:
executionSpecTestLoader.tsethereum-spec-testsor a specified subdirectoryTEST_PATHto specify specific test directorycommonfor blockchain teststimestampsetHardforkBybehaviorexecutionSpecState.test.tsexecutionSpecBlockchain.test.tslastBlockhashAdditional:
commonto calculateblobFeecommon(and parentexcessBlobGas) to calculateblobFeethis.gasLimit * elasticityMultiplieras the comparison.this.gasLimitgetBlobGasSchedule().maxBlobGasPerBlockinstead ofparam('maxBlobGasPerBlock')Instructions:
From
packages/evm:npx vitest executionSpecState.test.tsTo run all tests in state_test directories in the
execution-spec-testssubmoduleor
npx vitest executionSpecBlockchain.test.tsTo run all tests in blockchain_test directories in the
execution-spec-testssubmoduleTo run a subset of test, pass in a directory path with env variable
TEST_PATHe.g.
TEST_PATH=../execution-spec-tests/fusaka-devnet-5/blockchain_tests/osaka/eip7918_blob_reserve_price npx vitest test/tester/executionSpecBlockchain.test.ts