ci: keep the GOOBJ link parity gate off the push pipeline
Test / test (push) Failing after 12m18s

Assisted-by: GLM 5.3 Flash
This commit is contained in:
2026-10-02 16:15:02 +02:00
parent 1107928870
commit b4c1e133c0
3 changed files with 12 additions and 13 deletions
-12
View File
@@ -119,18 +119,6 @@ jobs:
# regression names the gate that failed instead of hiding inside the suite.
run: go test -count=1 -timeout 10m -run 'TestGroundTruth' ./verify/...
- name: Install qemu-user
# The GOOBJ link regression runs the arm64 and riscv64 binaries it links
# under qemu-user; without the emulator those two degrade to link-only.
# The install is a no-op where it is already present.
run: dnf install -y qemu-user
- name: GOOBJ link parity
# The cmd/link parity gate: gasm objects substituted into a real go build
# must re-link on all four architectures, and the binaries must reproduce
# the toolchain baseline's output (native on amd64, qemu-user elsewhere).
run: go test -count=1 -timeout 10m -run 'TestGOOBJLinkRegression' ./verify/...
- name: Coverage floor
run: |
perl -e '
+4
View File
@@ -62,6 +62,10 @@ unit pkgs=packages run=".*":
fuzz target pkg fuzztime="60s":
systemd-run --user --scope -p MemoryMax=4G -p MemorySwapMax=0 go test -run '^$' -fuzz '{{target}}' -fuzztime={{fuzztime}} {{pkg}}
# The cmd/link GOOBJ parity gate, opt-in: the per-push pipeline cannot afford it.
link-parity:
systemd-run --user --scope -p MemoryMax=4G -p MemorySwapMax=0 env GASM_LINK_PARITY=1 go test -count=1 -timeout 10m -run 'TestGOOBJLinkRegression' ./verify/
# Benchmarks. On an idle machine only.
bench pkgs=packages:
go test -run '^$' -bench=. -benchmem -count=5 {{pkgs}}
+8 -1
View File
@@ -111,11 +111,18 @@ func fieldAfterLinkLog(line, flag string) string {
}
// TestGOOBJLinkRegression is the per-architecture end-to-end gate
// described at the top of this file.
// described at the top of this file. It is a deliberate verification,
// not a suite member: building the gasm binary and cross-linking a
// module per architecture is minutes of work the shared one-core runner
// beside the forge cannot afford on every push, so it runs opt-in, the
// justfile's link-parity recipe being the intended way.
func TestGOOBJLinkRegression(t *testing.T) {
if testing.Short() {
t.Skip("builds the gasm binary and links Go programs")
}
if os.Getenv("GASM_LINK_PARITY") == "" {
t.Skip("deliberate verification: set GASM_LINK_PARITY=1 (just link-parity)")
}
goBin, err := exec.LookPath("go")
if err != nil {
t.Skip("no Go toolchain available")