Skip to content

Test-build pipeline Phase B, PR 4: extract Partials generation into PartialsManager - #1221

Merged
mkarlesky merged 2 commits into
next_versionfrom
test-invoker-phaseb-pr4-partials-generator-extraction
Aug 20, 2026
Merged

Test-build pipeline Phase B, PR 4: extract Partials generation into PartialsManager#1221
mkarlesky merged 2 commits into
next_versionfrom
test-invoker-phaseb-pr4-partials-generator-extraction

Conversation

@mkarlesky

Copy link
Copy Markdown
Member

Summary

Fourth and final PR implementing Phase B of the test-build pipeline (lib/ceedling/test_invoker/) architecture review, following PR #1217 (Phase A), PR #1218 (PR 1), PR #1219 (PR 2), and PR #1220 (PR 3). Depends on PR 3's consolidation of the two Partial preprocessing methods.

TestBuildExecutor owned every stage from preprocessing through execution -- including the three Partials stages (preprocessing partial headers/sources, then extracting and generating implementation/interface/types content), 446 lines that only share TestPipelineHelpers with the rest of the class, no other coupling. Extracted into a new PartialsManager class (name and location confirmed with you beforehand), mirroring the TestSourceFileDirectiveResolver precedent from an earlier session.

  • Promoted directives_only_fallback? into TestPipelineHelpers first -- it's called both by code that's moving (the Partials preprocessing body) and code that's staying (stage_preprocess_mocks, stage_preprocess_test_files), so it needed a home both classes can reach.
  • Moved the three stage methods (unchanged) into lib/ceedling/test_invoker/partials_manager.rb, with a constructor pulling only the 9 collaborators they actually use (TestBuildExecutor no longer composes Partializer at all -- confirmed zero remaining references after the move).
  • Wired the new class into lib/ceedling/objects.yml and TestPipelineManager's own constructor; TestPipelineManager#build_stage_sequence's stage 6/7/8 lambda bodies now call @partials_manager instead of @test_build_executor -- no change to stage ordering, conditions, or stop-point behavior.
  • Verified the DI wiring itself with a local ceedling new + ceedling test:all smoke run (Partials and preprocessing enabled) before touching Docker -- confirms objects.yml has no typos or missing composers, since a DI resolution error would surface immediately at boot.
  • Moved the three stage methods' existing unit spec contexts into a new spec/units/partials_manager_spec.rb, retargeted at the new class's own (smaller) constructor -- every example passed unmodified, since the moved code itself didn't change, only its home.
  • Updated the README's pipeline-shape section (four classes -> five) and stage 6-8 description to name the new class.

Test plan

  • bundle exec rspec spec/units -- 2589 examples, 0 failures (both on host and inside the Docker image)
  • Local DI-wiring smoke test: ceedling new + ceedling test:all with Partials and full test preprocessing enabled -- boots and completes cleanly
  • Docker (throwtheswitch/madsciencelab-plugins:v1.1.4) spec/system/delta_builds_spec.rb (wondrous_forest Partials cases) -- 16 examples, 0 failures
  • Docker spec/system/gcov_deployment_spec.rb's Partials/coverage cases -- 16 examples, 0 failures

This closes out the Phase B test-build pipeline architecture review.

🤖 Generated with Claude Code

mkarlesky and others added 2 commits August 20, 2026 17:38
Needed by more than one pipeline-stage class once Partials
preprocessing moves into its own class next.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…lass

TestBuildExecutor owned every stage from preprocessing through
execution; the three Partials stages (preprocessing partial headers/
sources, then extracting and generating implementation/interface
content) are self-contained beyond the TestPipelineHelpers mixin
already shared across this directory's pipeline classes, and are 446
lines on their own -- pulled into their own class, wired into
TestPipelineManager alongside the other three pipeline-stage classes,
mirroring the TestSourceFileDirectiveResolver precedent. No behavior
change: the moved methods are unchanged, TestPipelineManager's stage
sequence, conditions, and stop-point behavior are unchanged, and every
existing unit example for the moved stages passed unmodified once
retargeted at the new class's own (smaller) constructor.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@mkarlesky
mkarlesky merged commit 5aebfb2 into next_version Aug 20, 2026
22 of 39 checks passed
@mkarlesky
mkarlesky deleted the test-invoker-phaseb-pr4-partials-generator-extraction branch August 20, 2026 22:44
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