test(go-ci): add workflow-level self-test for the Go lane#56
Merged
Conversation
go-ci.yml shipped (#52) with no execution test -- self-test.yml only runs vitest over the classifier. This adds self-test-go.yml, which calls go-ci.yml via a local (./) reusable ref against fixture modules under test/fixtures/go/, proving discovery, go build/vet/test, and exclude-modules actually run in Actions. The excluded fixture is intentionally non-compiling and passed via exclude-modules, so a green run self-validates that exclusion skips it (a regression would build it and fail loudly). cache:false because the dependency-less fixtures have no go.sum. Refs #55 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
go-ci.yml(added in #52) shipped with no workflow-level execution test —self-test.ymlonly runsvitestover the classifier scripts and never invokes any reusable lane. So the Go lane's 200-line shell (discovery,go build/go vet/go test,exclude-modules) had never actually run in Actions.This adds
self-test-go.yml, which callsgo-ci.ymlthrough a local (./) reusable ref — so the in-PR version is the one under test — against committed fixture modules undertest/fixtures/go/:alpha/— valid module with a passing test → provesgo build+go vet+go testall execute.beta/— second valid module → proves multi-module discovery (git ls-filesfinds more than onego.mod).excluded/— intentionally non-compiling, passed viaexclude-modules→ a green run self-validates that exclusion actually skips it. If exclusion ever regresses, the broken module builds and the job fails loudly.cache: falsebecause the dependency-less fixtures have nogo.sum, andactions/setup-gowith caching errors when**/go.summatches nothing. Caching isactions/setup-gobehavior, not what this self-test proves.Why now
This closes the self-test gap #52 shipped with and lets the
v1retag be proven, not hopeful. Sequence: merge this → retagv1→ archon #145 Phase 3 consumes the Go lane via@v1.Verification
Local (Windows, Go 1.26.3), with fixtures staged so
git ls-filesdiscovery is realistic:actionlint v1.7.12onself-test-go.yml+go-ci.yml→ clean.Self-test (go lane)check.Scope boundary
This proves discovery + build/vet/test +
exclude-modules. Thegenerate-command/verify-generateddrift path (trivialgit status --porcelainshell) is left unexercised here; archon #145 Phase 3 is its real-world consumer and will prove it in that PR's CI.Docs / Changelog
.changelog/unreleased/55-go-ci-selftest.mdadded. Fixtures documented intest/fixtures/go/README.md.Linked Issue
Closes #55