So the release branch carries what main gained; parts 2 and 3 follow on this branch. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
32 lines
1.4 KiB
Go
32 lines
1.4 KiB
Go
package main
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/novox/mesh-controller/internal/builder"
|
|
)
|
|
|
|
// A try's outcome, as the build seat says it in the build's log (novox/hq issue 686): the repository's own
|
|
// check's verdict, how long it took, and each line naming what failed.
|
|
func TestATrysOutcomeNamesWhatFailed(t *testing.T) {
|
|
tried := triedOf(builder.CheckVerdict{Verdict: "pass", Summary: "the change touches no module", Took: 303 * time.Second,
|
|
Head: "c0ffee", Trunk: "ca3f43c", Gate: &builder.Layer{Verdict: "pass"},
|
|
Repo: &builder.Layer{Verdict: "fail", Summary: "its merge-check.sh failed: TestX",
|
|
Failed: "--- FAIL: TestX (0.01s)\n x_test.go:12: got 1, want 2"}})
|
|
if tried.Verdict != "fail" || tried.Took != "5m3s" || len(tried.Failed) != 2 || tried.Trunk != "ca3f43c" ||
|
|
tried.Summary != "its merge-check.sh failed: TestX" {
|
|
t.Fatalf("a failed try: %+v", tried)
|
|
}
|
|
// A head that does not merge fails both layers: the check's own word.
|
|
conflict := triedOf(builder.CheckVerdict{Verdict: "fail", Summary: "does not merge", Gate: &builder.Layer{Verdict: "fail"},
|
|
Repo: &builder.Layer{Verdict: "fail", Summary: "does not merge"}})
|
|
if conflict.Verdict != "fail" || conflict.Summary != "does not merge" {
|
|
t.Fatalf("a try that does not merge: %+v", conflict)
|
|
}
|
|
// No verdict is an error, never a pass.
|
|
if none := triedOf(builder.CheckVerdict{}); none.Verdict != "error" {
|
|
t.Fatalf("a try with no verdict: %+v", none)
|
|
}
|
|
}
|