package link import ( "encoding/json" "strings" "testing" "time" ) // The start of a try names no repository and no commit (novox/hq issue 686): the forge's holder writes // mesh/merge-gate pending on the open pull request whose head a start names, and nothing on the forge moves // for a try. A pull request's check still names both. func TestATrysStartNamesNoCommitTheForgeCouldMatch(t *testing.T) { sha := strings.Repeat("c0ffee", 7)[:40] at := time.Date(2026, 10, 14, 0, 0, 0, 0, time.UTC) try := BuildRequest{ID: "build-1", Repository: "https://forge/novox/a.git", Ref: sha, Check: &CheckRequest{Owner: "novox", Repo: "a", Try: true}} body, _ := json.Marshal(startOf(try, "ace", 1, at)) if strings.Contains(string(body), sha) || strings.Contains(string(body), "novox/a") { t.Fatalf("a try's start names what the forge matches a pull request by: %s", body) } if s := startOf(try, "ace", 2, at); s.ID != "build-1" || s.On != "ace" || !s.Try || s.Delivery != 2 || s.At == "" { t.Fatalf("a try's start lost what the queue reads: %+v", s) } pull := try pull.Check = &CheckRequest{Owner: "novox", Repo: "a", Number: 7} if s := startOf(pull, "ace", 1, at); s.Ref != sha || s.Repository == "" || s.Try { t.Fatalf("a pull request's check's start: %+v", s) } } // An id that is a pattern never passes for a build's id. func TestAnIdThatIsAPatternIsNoBuildId(t *testing.T) { if !SafeBuildID("build-20261014T000000-1a2b") || SafeBuildID("x.>") || SafeBuildID("*") || SafeBuildID("") { t.Fatal("an id that is a pattern passes for a build's id") } }