Skip to content

fix: correct single-env release promotion and stale multistep e2e fixtures - #93

Merged
joshua-temple merged 1 commit into
mainfrom
fix/e2e-multistep
Jun 10, 2026
Merged

joshua-temple merged 1 commit into
mainfrom
fix/e2e-multistep

Conversation

@joshua-temple

Copy link
Copy Markdown
Collaborator

Fixes the TestMultiStepScenarios e2e failures that have been red on main (and on the nightly) since before the recent doc PRs. All four failing subtests now pass under act+gitea. Two real bugs and two stale fixtures:

  • Single-environment release promotion (real bug). A single-env repo generates a Release workflow whose dispatch input is release_action, but the harness runner always dispatched mode. The unknown input was ignored, the workflow fell back to its create-draft default, and the run "succeeded" without publishing the release, reconciling prod, or cleaning up RC tags. The runner now dispatches release_action: release for single-env repos and surfaces the workflow's ci.latest_release pointer as a synthetic state[release] so scenarios can assert it. Also corrects a latent allow_breaking to allow_breaking_changes key mismatch that left the breaking-change gate active when a scenario asked to bypass it.
  • Dispatch inputs dropped (real bug). The harness Config had no dispatch_inputs field, so the YAML round-trip silently dropped operator-facing inputs before the generator saw them. Added the passthrough field; all nine expected substrings now appear in the generated orchestrate.yaml.
  • Inline-callback assertions (stale fixtures). The 09-inline-run-callback and 10-inline-job-attributes scenarios asserted uses: build.yaml, but the harness rewrites local reusable-workflow references to the GHA-valid uses: ./build.yaml form before the assertion runs, so the bare form never matched. Restored uses: ./build.yaml.

Verification: go build ./... and the e2e module build clean, go vet clean, go test ./internal/... green, harness unit tests green, and all four target subtests pass under the act-based suite.

…tures

The e2e TestMultiStepScenarios suite had four failing subtests rooted in
two distinct causes.

Single Environment Happy Path failed because the promote step always
dispatched the multi-env promote input (mode), but a single-environment
repo generates a Release workflow whose dispatch input is release_action.
The unrecognized mode was ignored, the workflow fell back to its
create-draft default, and the run reported success without ever
publishing the final release, so prod was never reconciled and the RC
tags were never cleaned up. The runner now dispatches release_action:
release for single-env repos. That workflow records its published
pointer under ci.latest_release rather than a state[release] env, so the
state sync now surfaces latest_release under the synthetic release key
and the scenario asserts the single-env model (latest_release populated,
trunk-tracking env retained) instead of the multi-env wipe semantics.

Dispatch Inputs failed because the harness Config struct had no
dispatch_inputs field, so the block was dropped when the scenario config
was re-marshaled into the manifest and the generator never saw it. Added
a passthrough field so operator-defined inputs reach the generator.

Inline Run Callback and Inline Job Attributes asserted uses: build.yaml,
but the harness localizes a bare reusable-workflow reference to the
GHA-valid uses: ./build.yaml form before the assertion reads the file.
Restored the ./-prefixed assertions to match the localized, valid output.

Signed-off-by: Joshua Temple <joshua.temple@stablekernel.com>
@joshua-temple
joshua-temple merged commit b3ccae8 into main Jun 10, 2026
6 checks passed
@joshua-temple
joshua-temple deleted the fix/e2e-multistep branch June 10, 2026 12:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant