A builder's store tests first ran in the pull request's merge check, a review round late. These fail on main: a try asks the repository's own check alone, its outcome sets no status and registers nothing, an unknown ref is refused before anything is asked, and the answer carries the failing lines.
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)
|
|
}
|
|
}
|