From 9436ef877750e9d42d0e7d0727a9e01d8534f2ab Mon Sep 17 00:00:00 2001 From: mesh-tools Date: Tue, 20 Oct 2026 20:57:00 +0000 Subject: [PATCH] Add the Go build module's captured go output and fixture repositories (issues 1290, 1291, 1486, 1487), part 13 of 20 --- .../mesh-build-go/testdata/captured/README | 10 +++++ .../testdata/captured/broken.json | 6 +++ .../testdata/captured/empty.json | 3 ++ .../testdata/captured/failing.json | 17 +++++++++ .../testdata/captured/golist-external.json | 13 +++++++ .../mesh-build-go/testdata/captured/slow.json | 12 ++++++ .../testdata/captured/tagged.json | 3 ++ .../testdata/captured/toolchain-go-entry.txt | 37 +++++++++++++++++++ 8 files changed, 101 insertions(+) create mode 100644 modules/mesh-build-go/cmd/mesh-build-go/testdata/captured/README create mode 100644 modules/mesh-build-go/cmd/mesh-build-go/testdata/captured/broken.json create mode 100644 modules/mesh-build-go/cmd/mesh-build-go/testdata/captured/empty.json create mode 100644 modules/mesh-build-go/cmd/mesh-build-go/testdata/captured/failing.json create mode 100644 modules/mesh-build-go/cmd/mesh-build-go/testdata/captured/golist-external.json create mode 100644 modules/mesh-build-go/cmd/mesh-build-go/testdata/captured/slow.json create mode 100644 modules/mesh-build-go/cmd/mesh-build-go/testdata/captured/tagged.json create mode 100644 modules/mesh-build-go/cmd/mesh-build-go/testdata/captured/toolchain-go-entry.txt diff --git a/modules/mesh-build-go/cmd/mesh-build-go/testdata/captured/README b/modules/mesh-build-go/cmd/mesh-build-go/testdata/captured/README new file mode 100644 index 00000000..5d207ada --- /dev/null +++ b/modules/mesh-build-go/cmd/mesh-build-go/testdata/captured/README @@ -0,0 +1,10 @@ +Each file is the standard output of `GOTOOLCHAIN=local GOFLAGS=-mod=mod go test -count=1 -json ./...` (go1.27.1) +run in the fixture module of the same name under ../repos, captured on 2026-10-20 for issue 1290. The unit +tests feed them to the parser through a fake runner, so no test here runs `go test`. + +golist-external.json is `GOTOOLCHAIN=local GOFLAGS=-mod=mod go list -json=ImportPath,Standard,DepOnly,Module +git.novox.be/novox/mesh-sdk/go/buildstep` run in this module (go1.27.1, 2026-10-20 for issue 1291): a package of a module +outside the tree as go list describes it. + +toolchain-go-entry.txt is lines 155-191 of mesh-control's internal/builder/toolchain.go at origin/main 073ccc29 (fetched +2026-10-20): the Go entry of today's build agent's recipe, which the build step's flags are compared with. diff --git a/modules/mesh-build-go/cmd/mesh-build-go/testdata/captured/broken.json b/modules/mesh-build-go/cmd/mesh-build-go/testdata/captured/broken.json new file mode 100644 index 00000000..10a616fd --- /dev/null +++ b/modules/mesh-build-go/cmd/mesh-build-go/testdata/captured/broken.json @@ -0,0 +1,6 @@ +{"ImportPath":"fixture/broken [fixture/broken.test]","Action":"build-output","Output":"# fixture/broken [fixture/broken.test]\n"} +{"ImportPath":"fixture/broken [fixture/broken.test]","Action":"build-output","Output":"./broken.go:3:25: cannot use \"one\" (untyped string constant) as int value in return statement\n"} +{"ImportPath":"fixture/broken [fixture/broken.test]","Action":"build-fail"} +{"Time":"2026-10-20T22:20:06.344233803+02:00","Action":"start","Package":"fixture/broken"} +{"Time":"2026-10-20T22:20:06.344344815+02:00","Action":"output","Package":"fixture/broken","Output":"FAIL\tfixture/broken [build failed]\n","OutputType":"frame"} +{"Time":"2026-10-20T22:20:06.344358865+02:00","Action":"fail","Package":"fixture/broken","Elapsed":0,"FailedBuild":"fixture/broken [fixture/broken.test]"} diff --git a/modules/mesh-build-go/cmd/mesh-build-go/testdata/captured/empty.json b/modules/mesh-build-go/cmd/mesh-build-go/testdata/captured/empty.json new file mode 100644 index 00000000..2e91a490 --- /dev/null +++ b/modules/mesh-build-go/cmd/mesh-build-go/testdata/captured/empty.json @@ -0,0 +1,3 @@ +{"Time":"2026-10-20T22:20:06.064193534+02:00","Action":"start","Package":"fixture/empty"} +{"Time":"2026-10-20T22:20:06.064489419+02:00","Action":"output","Package":"fixture/empty","Output":"? \tfixture/empty\t[no test files]\n"} +{"Time":"2026-10-20T22:20:06.064510249+02:00","Action":"skip","Package":"fixture/empty","Elapsed":0} diff --git a/modules/mesh-build-go/cmd/mesh-build-go/testdata/captured/failing.json b/modules/mesh-build-go/cmd/mesh-build-go/testdata/captured/failing.json new file mode 100644 index 00000000..edfe50fc --- /dev/null +++ b/modules/mesh-build-go/cmd/mesh-build-go/testdata/captured/failing.json @@ -0,0 +1,17 @@ +{"Time":"2026-10-20T22:20:06.028267402+02:00","Action":"start","Package":"fixture/failing/bad"} +{"Time":"2026-10-20T22:20:06.028528997+02:00","Action":"start","Package":"fixture/failing/good"} +{"Time":"2026-10-20T22:20:06.030412986+02:00","Action":"run","Package":"fixture/failing/bad","Test":"TestThreeIsFour"} +{"Time":"2026-10-20T22:20:06.030453876+02:00","Action":"output","Package":"fixture/failing/bad","Test":"TestThreeIsFour","Output":"=== RUN TestThreeIsFour\n","OutputType":"frame"} +{"Time":"2026-10-20T22:20:06.030494057+02:00","Action":"output","Package":"fixture/failing/bad","Test":"TestThreeIsFour","Output":" bad_test.go:7: Three() = 3, want 4\n","OutputType":"error"} +{"Time":"2026-10-20T22:20:06.030511077+02:00","Action":"output","Package":"fixture/failing/bad","Test":"TestThreeIsFour","Output":"--- FAIL: TestThreeIsFour (0.00s)\n","OutputType":"frame"} +{"Time":"2026-10-20T22:20:06.030519017+02:00","Action":"fail","Package":"fixture/failing/bad","Test":"TestThreeIsFour","Elapsed":0} +{"Time":"2026-10-20T22:20:06.030529158+02:00","Action":"output","Package":"fixture/failing/bad","Output":"FAIL\n","OutputType":"frame"} +{"Time":"2026-10-20T22:20:06.030546038+02:00","Action":"run","Package":"fixture/failing/good","Test":"TestTwo"} +{"Time":"2026-10-20T22:20:06.030561528+02:00","Action":"output","Package":"fixture/failing/good","Test":"TestTwo","Output":"=== RUN TestTwo\n","OutputType":"frame"} +{"Time":"2026-10-20T22:20:06.030570028+02:00","Action":"output","Package":"fixture/failing/good","Test":"TestTwo","Output":"--- PASS: TestTwo (0.00s)\n","OutputType":"frame"} +{"Time":"2026-10-20T22:20:06.030577128+02:00","Action":"pass","Package":"fixture/failing/good","Test":"TestTwo","Elapsed":0} +{"Time":"2026-10-20T22:20:06.030583418+02:00","Action":"output","Package":"fixture/failing/good","Output":"PASS\n","OutputType":"frame"} +{"Time":"2026-10-20T22:20:06.030962814+02:00","Action":"output","Package":"fixture/failing/bad","Output":"FAIL\tfixture/failing/bad\t0.002s\n","OutputType":"frame"} +{"Time":"2026-10-20T22:20:06.030974515+02:00","Action":"output","Package":"fixture/failing/good","Output":"ok \tfixture/failing/good\t0.002s\n"} +{"Time":"2026-10-20T22:20:06.030991305+02:00","Action":"pass","Package":"fixture/failing/good","Elapsed":0.002} +{"Time":"2026-10-20T22:20:06.030982975+02:00","Action":"fail","Package":"fixture/failing/bad","Elapsed":0.003} diff --git a/modules/mesh-build-go/cmd/mesh-build-go/testdata/captured/golist-external.json b/modules/mesh-build-go/cmd/mesh-build-go/testdata/captured/golist-external.json new file mode 100644 index 00000000..189cb5cb --- /dev/null +++ b/modules/mesh-build-go/cmd/mesh-build-go/testdata/captured/golist-external.json @@ -0,0 +1,13 @@ +{ + "ImportPath": "git.novox.be/novox/mesh-sdk/go/buildstep", + "Module": { + "Path": "git.novox.be/novox/mesh-sdk/go", + "Version": "v0.1.14-0.20261020200715-9e296295c05e", + "Time": "2026-10-20T20:07:15Z", + "Dir": "/home/jochen/go/pkg/mod/git.novox.be/novox/mesh-sdk/go@v0.1.14-0.20261020200715-9e296295c05e", + "GoMod": "/home/jochen/go/pkg/mod/cache/download/git.novox.be/novox/mesh-sdk/go/@v/v0.1.14-0.20261020200715-9e296295c05e.mod", + "GoVersion": "1.26.0", + "Sum": "h1:uf2o2A6dBOrISDUVw6U7+fv8ylwwF+UfRrGWKIQMFOE=", + "GoModSum": "h1:ouERNpZizzwZ0HLEtAypsY9FR20FyUgUYRni6J7kVCY=" + } +} diff --git a/modules/mesh-build-go/cmd/mesh-build-go/testdata/captured/slow.json b/modules/mesh-build-go/cmd/mesh-build-go/testdata/captured/slow.json new file mode 100644 index 00000000..1410ee59 --- /dev/null +++ b/modules/mesh-build-go/cmd/mesh-build-go/testdata/captured/slow.json @@ -0,0 +1,12 @@ +{"Time":"2026-10-20T22:20:06.21802535+02:00","Action":"start","Package":"fixture/slow"} +{"Time":"2026-10-20T22:20:06.222338257+02:00","Action":"run","Package":"fixture/slow","Test":"TestTakesAWhile"} +{"Time":"2026-10-20T22:20:06.222387677+02:00","Action":"output","Package":"fixture/slow","Test":"TestTakesAWhile","Output":"=== RUN TestTakesAWhile\n","OutputType":"frame"} +{"Time":"2026-10-20T22:20:06.282860204+02:00","Action":"output","Package":"fixture/slow","Test":"TestTakesAWhile","Output":"--- PASS: TestTakesAWhile (0.06s)\n","OutputType":"frame"} +{"Time":"2026-10-20T22:20:06.282917774+02:00","Action":"pass","Package":"fixture/slow","Test":"TestTakesAWhile","Elapsed":0.06} +{"Time":"2026-10-20T22:20:06.282937215+02:00","Action":"run","Package":"fixture/slow","Test":"TestQuick"} +{"Time":"2026-10-20T22:20:06.282943535+02:00","Action":"output","Package":"fixture/slow","Test":"TestQuick","Output":"=== RUN TestQuick\n","OutputType":"frame"} +{"Time":"2026-10-20T22:20:06.282955095+02:00","Action":"output","Package":"fixture/slow","Test":"TestQuick","Output":"--- PASS: TestQuick (0.00s)\n","OutputType":"frame"} +{"Time":"2026-10-20T22:20:06.282963365+02:00","Action":"pass","Package":"fixture/slow","Test":"TestQuick","Elapsed":0} +{"Time":"2026-10-20T22:20:06.282971185+02:00","Action":"output","Package":"fixture/slow","Output":"PASS\n","OutputType":"frame"} +{"Time":"2026-10-20T22:20:06.283463443+02:00","Action":"output","Package":"fixture/slow","Output":"ok \tfixture/slow\t0.063s\n"} +{"Time":"2026-10-20T22:20:06.283481213+02:00","Action":"pass","Package":"fixture/slow","Elapsed":0.065} diff --git a/modules/mesh-build-go/cmd/mesh-build-go/testdata/captured/tagged.json b/modules/mesh-build-go/cmd/mesh-build-go/testdata/captured/tagged.json new file mode 100644 index 00000000..8a6e1b0f --- /dev/null +++ b/modules/mesh-build-go/cmd/mesh-build-go/testdata/captured/tagged.json @@ -0,0 +1,3 @@ +{"Time":"2026-10-20T22:20:06.049418313+02:00","Action":"start","Package":"fixture/tagged"} +{"Time":"2026-10-20T22:20:06.049698258+02:00","Action":"output","Package":"fixture/tagged","Output":"? \tfixture/tagged\t[no test files]\n"} +{"Time":"2026-10-20T22:20:06.049730188+02:00","Action":"skip","Package":"fixture/tagged","Elapsed":0} diff --git a/modules/mesh-build-go/cmd/mesh-build-go/testdata/captured/toolchain-go-entry.txt b/modules/mesh-build-go/cmd/mesh-build-go/testdata/captured/toolchain-go-entry.txt new file mode 100644 index 00000000..3ac840c1 --- /dev/null +++ b/modules/mesh-build-go/cmd/mesh-build-go/testdata/captured/toolchain-go-entry.txt @@ -0,0 +1,37 @@ + Language: "go", + Base: "mesh-tools-go", + Artifact: "build", + // **The mesh's own components, and not modules.** The warning above this list — that every + // language is another implementation of the contracts modules share, so adding one commits + // to keeping N implementations in step — does not attach here. Go is how the host, the + // control plane and the builder are written, and none of them is a module in that sense: + // the host is what APPLIES modules. So there is no SDK obligation, and the reason this + // entry did not exist was that nothing needed to compile the mesh itself + // (novox/hq ADR 0142, and 04-ISSUES/142 where that is why nothing delivers the host). + // + // Static, because what a machine ends up holding is a file rather than a container, and a + // binary that needs a libc it did not bring is a delivery that works until a machine + // differs. Trimmed of its own paths for the same reason a version comes from where it sits + // rather than from the linker: two builds of one commit produce the same bytes. + // + // **And of one build source at two commits** (novox/hq ADR 0267 rule 6, issue 363): a module + // built from its repository's root is compiled with the clone's `.git` in view, and Go stamps the commit, + // its time and whether the tree was modified into the binary unless told not to — so a merge that + // changed only a README made a new digest of an unchanged program. + Compile: []string{ + "env", "CGO_ENABLED=0", "GOFLAGS=-trimpath -buildvcs=false", + "go", "build", + }, + // Stripped of symbols and debug info: what a machine holds is a file it runs, not one it + // debugs, and the difference measured 12.2MB against 8.5MB. + LinkerFlags: []string{"-s", "-w"}, + OutputFlag: "-o", + // Pointed at the package the artifact is built `from`, compiled whole. Go writes the binary + // into the output directory, named after the package — so the bundle a machine unpacks is a + // directory holding one executable, which is what the delivery mechanism expects + // (novox/hq ADR 0141). + Unit: UnitPackage, + // The mesh's own Go components read the system they were built for from this variable, and + // refuse to touch a machine without one. + SystemStamp: "main.builtFor", + },