in tests.go [39:105]
func (s *server) runTests() {
if err := s.healthCheck(context.Background()); err != nil {
stdlog.Fatal(err)
}
failed := false
for i, t := range tests {
stdlog.Printf("testing case %d (%q)...\n", i, t.name)
resp, err := compileAndRun(context.Background(), &request{Body: t.prog, WithVet: t.withVet})
if err != nil {
stdlog.Fatal(err)
}
if t.wantEvents != nil {
if !reflect.DeepEqual(resp.Events, t.wantEvents) {
stdlog.Printf("resp.Events = %q, want %q", resp.Events, t.wantEvents)
failed = true
}
continue
}
if t.errors != "" {
if resp.Errors != t.errors {
stdlog.Printf("resp.Errors = %q, want %q", resp.Errors, t.errors)
failed = true
}
continue
}
if resp.Errors != "" {
stdlog.Printf("resp.Errors = %q, want %q", resp.Errors, t.errors)
failed = true
continue
}
if resp.VetErrors != t.wantVetErrors {
stdlog.Printf("resp.VetErrs = %q, want %q", resp.VetErrors, t.wantVetErrors)
failed = true
continue
}
if t.withVet && (resp.VetErrors != "") == resp.VetOK {
stdlog.Printf("resp.VetErrs & VetOK inconsistent; VetErrs = %q; VetOK = %v", resp.VetErrors, resp.VetOK)
failed = true
continue
}
if len(resp.Events) == 0 {
stdlog.Printf("unexpected output: %q, want %q", "", t.want)
failed = true
continue
}
var b strings.Builder
for _, e := range resp.Events {
b.WriteString(e.Message)
}
if t.wantFunc != nil {
if err := t.wantFunc(b.String()); err != nil {
stdlog.Printf("%v\n", err)
failed = true
}
} else {
if !strings.Contains(b.String(), t.want) {
stdlog.Printf("unexpected output: %q, want %q", b.String(), t.want)
failed = true
}
}
}
if failed {
stdlog.Fatalf("FAILED")
}
fmt.Println("OK")
}