mesh/delivery superseded: a newer delivery to the same trunk took over its walk
mesh/merge-gate pass: builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step; every machine composes with the change as it…
mesh/repo-check pass: its merge-check.sh passed
A change could delete or gut its merge-check.sh and skip its own tests, and a branch cut before the script escaped them. Where the base branch holds one, its script, declared parts and toolchain run against the change's tree, and the verdict says when the change lacks or alters the check (novox/hq issue 310).
53 lines
2.1 KiB
Go
53 lines
2.1 KiB
Go
package builder
|
|
|
|
import (
|
|
"os"
|
|
"os/exec"
|
|
"path/filepath"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
// TestReplay310 is the replay of novox/hq issue 310, written with only what the build agent had before its
|
|
// fix, so mesh-lab's prover can lay it over the commit before: a pull request whose branch holds no
|
|
// merge-check.sh, into a main that holds one. Before the fix the check read the head's tree alone, found no
|
|
// script, and answered the repository's layer a warning — none of its tests run, and the forge took it.
|
|
// After it, main's script judges the change: with no artifact store to read the facts from here, the check
|
|
// goes on to run it and says it cannot, and never answers the warning.
|
|
func TestReplay310(t *testing.T) {
|
|
origin := t.TempDir()
|
|
git := func(args ...string) string {
|
|
t.Helper()
|
|
cmd := exec.Command("git", args...)
|
|
cmd.Dir = origin
|
|
cmd.Env = append(os.Environ(), "GIT_AUTHOR_NAME=t", "GIT_AUTHOR_EMAIL=t@example.org",
|
|
"GIT_COMMITTER_NAME=t", "GIT_COMMITTER_EMAIL=t@example.org")
|
|
out, err := cmd.CombinedOutput()
|
|
if err != nil {
|
|
t.Fatalf("git %v: %v\n%s", args, err, out)
|
|
}
|
|
return strings.TrimSpace(string(out))
|
|
}
|
|
git("init", "--quiet", "-b", "main")
|
|
if err := os.WriteFile(filepath.Join(origin, CheckScript), []byte("echo 'FAIL: the suite'; exit 1\n"), 0o755); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
git("add", "-A")
|
|
git("commit", "--quiet", "-m", "main holds its check")
|
|
git("checkout", "--quiet", "-b", "change")
|
|
git("rm", "--quiet", CheckScript)
|
|
git("commit", "--quiet", "-m", "the change holds none")
|
|
head := git("rev-parse", "HEAD")
|
|
git("checkout", "--quiet", "main")
|
|
|
|
v, err := Check(t.Context(), Command, CheckSpec{ID: "replay-310", Repository: origin, Ref: head, Owner: "novox",
|
|
Repo: "mesh-media-catalog", Number: 11, Base: "main"}, t.TempDir(), "", GitCredential{}, nil)
|
|
if err == nil && (v.Repo == nil || v.Repo.Verdict != "fail") {
|
|
t.Fatalf("a pull request without main's %s was answered %+v: none of its tests ran, and main's script "+
|
|
"did not judge it", CheckScript, v.Repo)
|
|
}
|
|
if err != nil && !strings.Contains(err.Error(), "artifact store") {
|
|
t.Fatalf("the check stopped before main's script could run: %v", err)
|
|
}
|
|
}
|