package main import ( "testing" "github.com/novox/mesh-controller/internal/builder" "github.com/novox/mesh-controller/internal/link" ) // **A pull request into a release branch reaches the check as one** (novox/hq ADR 0358): the build seat hands the // check the release branch and, beside it, the trunk each repository is read at when it has no branch of that name; // and it hands the check the judge cache the build agent declares (MESH_JUDGE_CACHE), never a path of its own. func TestTheBuildSeatHandsTheCheckItsReleaseBranch(t *testing.T) { spec := checkSpecOf(link.BuildRequest{ID: "b", Repository: "r", Ref: "abc", Check: &link.CheckRequest{ Owner: "novox", Repo: "mesh-catalog", Base: "feat/57", Release: "feat/57", Beside: map[string]link.CheckedOut{"mesh-host": {Repository: "h", Ref: "feat/57", Else: "main"}}}}) if spec.Release != "feat/57" || spec.Beside["mesh-host"].Ref != "feat/57" || spec.Beside["mesh-host"].Else != "main" { t.Fatalf("the check was handed release %q and mesh-host %+v", spec.Release, spec.Beside["mesh-host"]) } t.Setenv("MESH_JUDGE_CACHE", "/var/lib/mesh/build-agent/judge-cache") if got := judgeCache(); got != "/var/lib/mesh/build-agent/judge-cache" { t.Fatalf("the judge cache the manifest declares is read as %q", got) } t.Setenv("MESH_JUDGE_CACHE", "") if got := judgeCache(); got != "" { t.Fatalf("with no judge cache declared, %q is used", got) } } // The siblings a check is asked to read reach the build seat's spec and, as read, the outcome (novox/hq ADR 0382). func TestTheSiblingsAnAskNamesReachTheSpecAndTheOutcome(t *testing.T) { spec := checkSpecOf(link.BuildRequest{Check: &link.CheckRequest{Owner: "novox", Repo: "mesh-host", Base: "main", Siblings: []link.CheckSibling{{Repository: "novox/mesh-controller", Number: 346, Head: "a", Base: "main", Dir: "mesh-controller"}}, SiblingsUnknown: "why"}}) if len(spec.Siblings) != 1 || spec.Siblings[0] != (builder.Sibling{Repository: "novox/mesh-controller", Number: 346, Head: "a", Base: "main", Dir: "mesh-controller"}) || spec.SiblingsUnknown != "why" { t.Fatalf("the spec reads %+v", spec) } out := siblingsOut([]builder.JudgedSibling{{Repository: "novox/mesh-controller", Number: 346, Head: "a", Base: "main", BaseCommit: "b"}}) if len(out) != 1 || out[0].BaseCommit != "b" || out[0].Number != 346 { t.Fatalf("the outcome reads %+v", out) } if plain := checkSpecOf(link.BuildRequest{Check: &link.CheckRequest{Owner: "o", Repo: "r"}}); plain.Siblings != nil { t.Fatalf("a request that names none has siblings %+v", plain.Siblings) } }