Skip to content

refactor(tests): remove dead static-filler infrastructure#2950

Draft
leolara wants to merge 1 commit into
ethereum:forks/amsterdamfrom
leolara:leolara/remove-static-filler-dead-code
Draft

refactor(tests): remove dead static-filler infrastructure#2950
leolara wants to merge 1 commit into
ethereum:forks/amsterdamfrom
leolara:leolara/remove-static-filler-dead-code

Conversation

@leolara
Copy link
Copy Markdown
Member

@leolara leolara commented Jun 3, 2026

🗒️ Description

Draft — do not merge until #2556 is complete. Some of the pieces removed here may still be
needed to finish that work; see Related Issues.

tests/static/ (the legacy ethereum/tests-style YAML/JSON fillers) was removed after its
~1,900 fillers were hand-ported to Python tests under tests/ported_static/. Once porting and the
ethereum/tests archival parity check are complete, the entire static-filler stack is dead code
and is removed here — ~6,150 LOC net.

Three layers removed:

  1. Fill path — the static_filler.py pytest plugin and the --fill-static-tests flag with
    all its plumbing: the conditional plugin loader and FixtureCollector.fill_static_tests field,
    and the unconditional -p …static_filler registration in pytest-fill.ini (this was loaded
    on every fill). No *Filler.{json,yml,yaml} files exist in the repo, so this path had no inputs.
  2. Parserspecs/base_static.py and the entire specs/static_state/ package (the pydantic
    model tree that parsed legacy fillers).
  3. Migration toolsscripts/filler_to_python/ (the filler→Python converter),
    cli/fillerconvert/, and cli/modify_static_test_gas_limits.py, plus their [project.scripts]
    entry points and scripts/verify_dynamic_addresses.sh.

Relocation (the one runtime link): 339 ported tests import resolve_expect_post /
resolve_expect_post_fork — runtime helpers that resolve expected post-state for a given
(d, g, v) and fork. These, plus their ForkSet/ForkConstraint/CMP/_match_index closure,
are moved out of the deleted parser into a new self-contained module
specs/post_state_resolution.py, and the 339 imports are codemod'd to the new path.

Also removed: the now-dead yul_test and compile_yul_with(fork) markers — the yul fixture
they keyed off lived only in static_filler.py, no test uses it, and they were never used for
selection.

⚠️ Breaking (public API): execution_testing.specs.BaseStaticTest and
execution_testing.specs.StateStaticTest are no longer exported. No in-repo consumers, but
downstream importers would need to drop them.

Kept on purpose: the ported_tests.py plugin and @ported_from markers (coverage tracking),
the solc.py plugin (used by tools/tests/test_code.py), and the general-purpose
Yul/Solc/YulCompiler helpers in tools_code.

Verification: just static passes; fill --collect-only collects the full suite cleanly
(confirming pytest-fill.ini loads without static_filler); a targeted fill exercising both
relocated functions (incl. the sole resolve_expect_post_fork user) passes; framework unit tests pass.

🔗 Related Issues or PRs

Sequenced after #2556 (archiving ethereum/tests). Some of the pieces removed here — in particular
the migration / parity tooling (scripts/filler_to_python, cli/fillerconvert) — may still be
needed to complete that work, as they are the in-repo oracle for verifying the archived fixtures are
a superset of the last ethereum/tests release. This PR should therefore be merged only after
#2556 is done.

✅ Checklist

  • All: Ran fast static checks to avoid unnecessary CI fails (just static) — passes.
  • All: PR title adheres to the repo standard — starts type(scope):.
  • All: Considered updating the online docs in the ./docs/ directory — no docs/ references to the removed flag/parser; the only doc mention (.claude/commands/fill-tests.md) was updated.
  • All: Set appropriate labels for the changes (only maintainers can apply labels).
  • Tests: Ran mkdocs serve locally and verified the auto-generated docs for new tests — N/A (no new test cases; only an import-path codemod of existing tests).
  • Tests: For PRs implementing a missed test case, update the post-mortem document — N/A (not a missed-test-case PR).
  • Ported Tests: All converted JSON/YML tests have been assigned @ported_from marker — N/A (no newly converted tests; existing markers unchanged).

Cute Animal Picture

Put a link to a cute animal picture inside the parenthesis-->

Remove the static-filler stack, now dead after the legacy ethereum/tests
fillers were ported to Python tests under tests/ported_static/:

- Fill path: the static_filler.py plugin and the --fill-static-tests flag
  and plumbing (incl. the unconditional -p static_filler load in
  pytest-fill.ini and the FixtureCollector.fill_static_tests field).
- Parser: specs/base_static.py and the specs/static_state/ package.
- Migration tools: scripts/filler_to_python/, cli/fillerconvert/,
  cli/modify_static_test_gas_limits.py and their entry points.

Relocate the two runtime helpers used by 339 ported tests
(resolve_expect_post / resolve_expect_post_fork, plus the ForkSet /
ForkConstraint / CMP / _match_index closure) into a new self-contained
module specs/post_state_resolution.py, and codemod the imports.

Also drop the now-dead yul_test and compile_yul_with markers (the yul
fixture they keyed off lived only in static_filler.py).

Removes the public exports execution_testing.specs.BaseStaticTest and
execution_testing.specs.StateStaticTest (no in-repo consumers).

To be merged after ethereum#2556 (ethereum/tests archival), whose parity tooling
overlaps with the migration tools removed here.
@codecov
Copy link
Copy Markdown

codecov Bot commented Jun 3, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 90.50%. Comparing base (14eca5d) to head (8ef92b4).
⚠️ Report is 1 commits behind head on forks/amsterdam.

Additional details and impacted files
@@               Coverage Diff                @@
##           forks/amsterdam    #2950   +/-   ##
================================================
  Coverage            90.50%   90.50%           
================================================
  Files                  535      535           
  Lines                32407    32407           
  Branches              3011     3011           
================================================
  Hits                 29331    29331           
  Misses                2559     2559           
  Partials               517      517           
Flag Coverage Δ
unittests 90.50% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant