Fill Tests
SkillDev toolsLets your agent generate Ethereum test fixtures by running the repository's fill command with the right flags.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Fill Tests skill
About this capability
Fill test fixtures with the repository fill command.
What this skill tells your AI
The instructions your AI receives, as published by ethereum/execution-specs in .agents/skills/fill-tests/SKILL.md and read by ahel’s review.
CLI reference for the fill command. Run this skill before filling test fixtures. The fill command is pytest-based — all standard pytest flags work.
Basic Usage
uv run fill tests/ # Fill all tests
uv run fill tests/cancun/ --fork Cancun # Specific fork
uv run fill tests/path/to/test.py -k "test_name" # Specific test
uv run fill tests/osaka/ --until Osaka # Up to fork (inclusive)
uv run fill --collect-only tests/ # Dry run: list tests without executing
Key Flags
--fork FORK/--until FORK— target specific fork or range. The default set stops at the last deployed fork, so a fork under development needs one of these.--output DIR+--clean— output directory;--cleanrequired when re-filling-k "pattern"— filter tests by name pattern-m "marker"— filter by pytest marker (e.g.-m state_test,-m blockchain_test)-n auto --maxprocesses N— parallel execution (use--dist=loadgroup)--evm-bin PATH— t8n tool; defaults to the in-repo EELS Python spec (src/ethereum/)--verify-fixtures— run geth'sevm blocktestover the generated fixtures. The default EELS t8n has no blocktest, so pass a geth binary with--verify-fixtures-bin. For an EELS-side check usejust validate-blocks <fixtures_dir>, which is what CI runs.--generate-all-formats— generate all fixture formats (2-phase)
Debugging
--evm-dump-dir DIR— dump t8n input/output for debugging--traces— collect execution traces--pdb— drop into debugger on failure-vv— verbose output;-x— stop on first failure;-s— print stdout
Watch Mode
--watch— re-run on file changes (clears screen between runs)--watcherfall— same but keeps output history
Benchmark Tests
- Excluded from a broad
tests/run: include them by targeting atests/benchmark/...path, or add--include-benchmarkwhen also collectingtests/. - Pick a mode (mutually exclusive):
--gas-benchmark-values 1,10,100(millions of gas) or--fixed-opcode-count 1,10,100(thousands). These parametrize the tests, e.g....[fork_Prague-blockchain_test-benchmark-gas-value_1M]. - Backend is optional: omitting
--evm-binruns the slow in-repo EELS Python spec;--evm-bin=evmoneor--evm-bin=evm(geth, used byjust bench-gas) are faster. - Stateful benchmarks (
tests/benchmark/stateful/) are filled by the separatefill-statefulcommand against a live client snapshot and produceBlockchainEngineStatefulFixture; seedocs/filling_tests/fill_stateful.md.
Fixture Formats
One test function auto-generates multiple formats: StateFixture, BlockchainFixture, BlockchainEngineFixture. --generate-all-formats adds the pre-alloc-group format BlockchainEngineXFixture through a 2-phase run (--generate-pre-alloc-groups, then --use-pre-alloc-groups); --single-fixture-per-file writes each fixture to its own JSON file.
References
See docs/filling_tests/ for detailed documentation.
Signals
- GitHub stars
- 1k
- Forks
- 505
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
fill-tests- Source
- github.com/ethereum/execution-specs