Skip, loudly, a build module's real-toolchain test where the check's image lacks the tool; it is proven live on a build node (issues 1486, 1490)
mesh/repo-check head bcee61edf709 merged into trunk 06d5dc98303a — pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-…
mesh/merge-gate head bcee61edf709 merged into trunk 06d5dc98303a — pass: group feat/r4c3-build-modules composed: every machine composes with the change as …
mesh/delivery failed: its walk failed, carrying its own commit: a gate on a first machine (what it carried put back), a build, a machine
mesh/delivery-group group feat/r4c3-build-modules failed: a member failed

This commit is contained in:
2026-10-20 21:19:15 +00:00
parent 983a6c39c8
commit bcee61edf7
2 changed files with 15 additions and 1 deletions
@@ -24,6 +24,17 @@ func TestMain(m *testing.M) {
os.Exit(m.Run())
}
// needTools skips, loudly, a test whose tools are not installed where the check runs (the mesh's Go toolchain image
// holds no postgres): the level is proven live on a build node, which has them (issue 1486).
func needTools(t *testing.T, what string, tools ...string) {
t.Helper()
for _, tool := range tools {
if _, err := exec.LookPath(tool); err != nil {
t.Skipf("NOT RUN: no %s installed where this check runs (%s); proven live on a build node", tool, what)
}
}
}
// repository copies a fixture repository into a git tree, as a fetch leaves one.
func repository(t *testing.T, name string) string {
t.Helper()
@@ -43,6 +54,7 @@ func repository(t *testing.T, name string) string {
// test_test.go read the output captured from them, and this one proves the capture is what the real go says today. It
// starts go test, so it carries the tag.
func TestUnitLevelRunsTheRealGoOnTheFixtureRepositories(t *testing.T) {
needTools(t, "the unit level on fixtures", "go", "git")
want := map[string]struct {
passed, noTests bool
failed string
@@ -84,6 +96,7 @@ func processesNamed(text string) []string {
// integration level passes, and afterwards no postgres or bus process of the run is left and its directory is gone.
// It starts postgres and a bus, so it runs in the merge check and in a try, never on the way.
func TestIntegrationLevelRunsAgainstARealStoreAndBusAndLeavesNothing(t *testing.T) {
needTools(t, "the integration level", "go", "git", "initdb", "pg_ctl", "postgres")
tree := repository(t, "store")
// A short work directory: a unix socket's path is bounded at 108 bytes.
work, err := os.MkdirTemp("/tmp", "w")
@@ -121,6 +134,7 @@ func TestIntegrationLevelRunsAgainstARealStoreAndBusAndLeavesNothing(t *testing.
// 1487/AC2: given a fixture Go module, when it is built twice, both digests are equal and the archive holds one
// executable named as binaryName says. It runs the real go, so it carries the tag.
func TestBuildTwiceGivesOneDigestAndOneExecutable(t *testing.T) {
needTools(t, "the build", "go")
work := t.TempDir()
tree := filepath.Join(work, "ws1", "tree")
if err := os.MkdirAll(tree, 0o755); err != nil {