//go:build integration package main import ( "fmt" "strings" "testing" "time" ) func TestAVerdictCarriesAProbesFindingsInBrief(t *testing.T) { var found []string for i := 0; i < 689; i++ { found = append(found, fmt.Sprintf("delivery d-%012x has been checking for 13h, past its bound of 45m", i)) } run := doctorRun{Run: "run-1", Probes: []probeVerdict{{ID: "D14", Verdict: "failed", Found: found}, {ID: "D1", Verdict: "passed"}}} answer, err := verdictAnswer(run, time.Now(), "") if err != nil { t.Fatal(err) } brief := answer["run"].(doctorRun).Probes[0] if len(brief.Found) != overviewFindings || brief.FoundCount != 689 || !strings.Contains(brief.More, "probe=D14") { t.Fatalf("the verdict carries %d findings of D14, count %d, more %q", len(brief.Found), brief.FoundCount, brief.More) } if len(run.Probes[0].Found) != 689 { t.Fatal("the overview cut the run it was made from") } whole, err := verdictAnswer(run, time.Now(), "d14") if err != nil { t.Fatal(err) } if p := whole["run"].(doctorRun).Probes; len(p) != 1 || len(p[0].Found) != 689 || p[0].More != "" { t.Fatalf("doctor probe=D14 answered %+v", p) } if _, err := verdictAnswer(run, time.Now(), "D99"); err == nil { t.Fatal("a probe the run does not have was answered") } if !strings.Contains(doctorText(answer), "probe=D14` gives them all") { t.Fatalf("the text does not say how to read them all:\n%s", doctorText(answer)) } }