Skip to content

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

Merged
marioevz merged 5 commits into
ethereum:forks/amsterdamfrom
spencer-tb:remove-static-filler
Aug 4, 2026
Merged

refactor(tests): remove dead static-filler infrastructure#3283
marioevz merged 5 commits into
ethereum:forks/amsterdamfrom
spencer-tb:remove-static-filler

Conversation

@spencer-tb

@spencer-tb spencer-tb commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Description

Ports #2950 by @leolara onto current forks/amsterdam.

With tests/static/ fully hand-ported to tests/ported_static/, the static-filler stack is dead code. Removed here:

  • The static_filler.py pytest plugin, the --fill-static-tests flag, and all its plumbing (conditional plugin loading, FixtureCollector.fill_static_tests, the unconditional plugin registration in pytest-fill.ini).
  • The legacy filler parser: specs/base_static.py and the specs/static_state/ package. The runtime post-state resolution helpers used by ported tests (resolve_expect_post/resolve_expect_post_fork) move to tests/ported_static/post_state_resolution.py; ported test imports updated accordingly.
  • Migration tooling: scripts/filler_to_python/, cli/fillerconvert/, modify_static_test_gas_limits.py, verify_dynamic_addresses.sh.

Also addresses @marioevz's review comments on #2950 in two follow-up commits:

  • All four fork is Nonerequest.node.fork fallbacks (the pre fixtures in the filler and execute plugins, node_id_for_entropy, and base_test_parametrizer) are removed — static tests were the only unparametrized-fork items. The pre fixture hunk overlaps with feat(test-types): Fork-based State Commitment Property in Alloc #3279, which becomes a trivial rebase once this merges.
  • post_state_resolution.py lives in tests/ported_static/ (its only consumer), imported as tests.ported_static.post_state_resolution following the tests.benchmark.helper precedent.

A fourth commit removes the now-orphaned solc/Yul toolchain: the plugins/solc pytest plugin (only ever loaded from the deleted --fill-static-tests path), the Yul/Solc/YulCompiler frontend in tools_code (zero consumers in tests or framework; no CI job installs solc), the solc_name fork API (its only reader was the Yul compiler), and leftover solc fixtures in tools/tests/test_code.py whose remaining tests are all Op-based.

Related Issues or PRs

Supersedes #2950. Related: #2556, #3279.

Checklist

  • Ran fast static checks to avoid CI fails, see Code Standards & Verifying Changes: just static
  • PR title has the form <type>(<area>): <title>, where <type> and <area> come from an appropriate C-<type>, respectively A-<area>, label. The title should match the target squash commit message.

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

codecov Bot commented Aug 3, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 93.49%. Comparing base (9b68a91) to head (851247d).

Additional details and impacted files
@@               Coverage Diff                @@
##           forks/amsterdam    #3283   +/-   ##
================================================
  Coverage            93.49%   93.49%           
================================================
  Files                  624      624           
  Lines                37056    37056           
  Branches              3394     3394           
================================================
  Hits                 34647    34647           
  Misses                1653     1653           
  Partials               756      756           
Flag Coverage Δ
unittests 93.49% <ø> (ø)

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

☔ View full report in Codecov by Harness.
📢 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.

@spencer-tb
spencer-tb force-pushed the remove-static-filler branch from 307e6ea to f42f652 Compare August 3, 2026 10:49
@spencer-tb
spencer-tb marked this pull request as ready for review August 3, 2026 11:38

@marioevz marioevz left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice! Thanks for this cleanup!

@marioevz
marioevz merged commit 7a0430d into ethereum:forks/amsterdam Aug 4, 2026
24 checks passed
@marioevz
marioevz deleted the remove-static-filler branch August 4, 2026 16:57
jochem-brouwer added a commit to jochem-brouwer/execution-specs that referenced this pull request Aug 6, 2026
…r this base

Two things needed to make the cherry-picked filler optimizations work on
benchmarks/amsterdam.

1. ethereum-rlp rev pin. The stateful filler spends a large share of its time
   decoding wide RLP lists -- block access lists in particular.
   decode_joined_encodings probes each item's length by slicing the whole
   remaining buffer, so decoding a list of N items copies O(N^2) bytes; bounding
   that slice to the 9 bytes a length prefix can occupy measured 16x faster on
   large BALs. ethereum-rlp is a PyPI dependency rather than a workspace member,
   so the fix cannot travel as a commit here. Pin by rev, not version or branch:
   the patched fork reports the same __version__ as upstream ("0.1.7"), so
   resolving on version alone silently installs the unpatched wheel. Not yet
   merged upstream (ethereum/ethereum-rlp master @ 2037ce5); drop the source and
   raise the constraint once it lands.

2. The four TestStreamingWrites cases were written against forks/amsterdam,
   where FixtureCollector's `fill_static_tests` argument had been removed by
   "remove dead static-filler infrastructure" (ethereum#3283). benchmarks/amsterdam still
   requires it, so they died with TypeError: missing 1 required keyword-only
   argument. Pass fill_static_tests=False, matching every other construction in
   the file. Test-only; the streaming collector itself is unaffected.

Verified: uv sync installs ethereum-rlp==0.1.7 from git+...@ab4e475f with
ITEM_LENGTH_PREFIX_MAX == 9, and 88 tests pass across test_collector.py,
test_forks.py and test_transactions.py.
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.

3 participants