func()

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")
}