Skip to content

test: add Deneb light client sync spec test with real fixtures#50

Open
EchoAlice wants to merge 1 commit into
masterfrom
test/deneb-sync-fixtures
Open

test: add Deneb light client sync spec test with real fixtures#50
EchoAlice wants to merge 1 commit into
masterfrom
test/deneb-sync-fixtures

Conversation

@EchoAlice

Copy link
Copy Markdown
Owner

Builds on #48 (Deneb header types, already merged) to wire Deneb end-to-end through the spec-test harness, mirroring the Capella pattern.

Summary

  • Imports the upstream minimal/deneb/light_client/sync/light_client_sync fixtures (bootstrap, config, meta, steps, 8 update files).
  • Adds RawExecutionPayloadHeaderDeneb (17 fields = Capella + blob_gas_used + excess_blob_gas), RawDenebLightClientHeader, and RawDeneb{Bootstrap,Update} SSZ types in test_utils.rs, with conversion helpers that lift them into the existing LightClientHeader::Deneb variant. Carries forward Capella's slot == 0 finality-sentinel handling so default-zero finalized headers don't trigger spurious execution-branch failures.
  • Adds TestFork::Deneb plus its chain_spec() arm (sets bellatrix, capella, and deneb fork epochs to 0 to match the minimal-preset fixtures).
  • Adds SpecTestLoader::minimal_deneb_sync() and Deneb dispatch in load_bootstrap / load_update.
  • Adds test_deneb_light_client_sync exercising steps 1-5 of the upstream test, including execution_root verification on both finalized and optimistic headers.
  • Refactors check_execution_root to a small match-then-compare so Capella and Deneb share the comparison/print path.

Out of scope

  • force_update steps (6, 9) and the steps that depend on them (7, 8, 10) — same posture as the existing Altair / Bellatrix / Capella tests; gated by the #[ignore] pattern already in place.
  • No mainnet Deneb fixtures (only minimal preset).
  • No README / status-doc updates yet (per existing policy: only after the test has been stable on master).
  • No fix for the pre-existing clippy::duplicated_attributes lint that surfaces under cargo clippy --tests on bls_spec_tests.rs:1 and light_client_spec_tests.rs:1 — this exists on master (verified via git show master:...) and is unrelated to this PR.

Test plan

  • cargo test --lib test_deneb_light_client_sync — passes 5/5 steps (Combined, Combined, Finality, Committee, Combined updates with all execution_root checks succeeding).
  • cargo test --lib light_client_spec_tests — Altair, Bellatrix, Capella, Deneb all green; force_update test still ignored.
  • cargo test — 76 passed, 0 failed, 1 ignored (76 = 75 baseline + 1 new Deneb test).
  • cargo fmt
  • cargo clippy -- -D warnings (matches existing CI invocation)

🤖 Generated with Claude Code

Wires the Deneb fork end-to-end through the spec-test harness, mirroring
the Capella pattern.

- Adds RawExecutionPayloadHeaderDeneb (17 fields = Capella + blob_gas_used
  + excess_blob_gas), RawDenebLightClientHeader, and Raw{Bootstrap,Update}
  SSZ types in test_utils, with conversion helpers that lift them into
  the existing fork-aware LightClientHeader::Deneb variant.
- Adds TestFork::Deneb plus its chain_spec arm (sets bellatrix, capella,
  and deneb fork epochs to 0 to match minimal-preset fixtures).
- Adds SpecTestLoader::minimal_deneb_sync() and Deneb dispatch in
  load_bootstrap and load_update.
- Adds test_deneb_light_client_sync covering steps 1-5 of the upstream
  minimal spec test, including execution_root verification on both
  finalized and optimistic headers.
- Imports the upstream minimal/deneb/light_client/sync/light_client_sync
  fixtures (bootstrap, config, meta, steps, 8 update files).

force_update steps (6, 9) and the steps that depend on them (7, 8, 10)
remain out of scope, matching the Altair/Bellatrix/Capella tests.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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