1package test
 2
 3import (
 4	"fmt"
 5	"testing"
 6)
 7
 8const (
 9	RecorderFailNow int = iota
10	RecorderFatal
11	RecorderFatalf
12)
13
14type recorder struct {
15	testing.TB
16	fail   func(string)
17	fatal  func(string)
18	failed bool
19}
20
21func (r *recorder) Error(args ...any) {
22	r.Helper()
23	r.failed = true
24	r.fail(fmt.Sprint(args...))
25}
26
27func (r *recorder) Errorf(format string, args ...any) {
28	r.Helper()
29	r.failed = true
30	r.fail(fmt.Sprintf(format, args...))
31}
32
33func (r *recorder) Fail() {
34	r.Helper()
35	r.failed = true
36}
37
38func (r *recorder) FailNow() {
39	r.Helper()
40	r.failed = true
41	panic(RecorderFailNow)
42}
43
44func (r *recorder) Failed() bool {
45	return r.failed
46}
47
48func (r *recorder) Fatal(args ...any) {
49	r.Helper()
50	r.failed = true
51	r.fatal(fmt.Sprint(args...))
52	panic(RecorderFatal)
53}
54
55func (r *recorder) Fatalf(format string, args ...any) {
56	r.Helper()
57	r.failed = true
58	r.fatal(fmt.Sprintf(format, args...))
59	panic(RecorderFatalf)
60}
61
62func (r *recorder) Helper() {
63	r.TB.Helper()
64}