Skip to content

Commit 0966b4d

Browse files
authored
Merge pull request #18970 from mmorel-35/testifier/pkg
fix: use testify instead of t.Fatal or t.Error in pkg package (part 1)
2 parents a4e744a + 0a71106 commit 0966b4d

15 files changed

+103
-207
lines changed

pkg/adt/interval_tree_test.go

+13-33
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ import (
1818
"math/rand"
1919
"reflect"
2020
"testing"
21+
22+
"github.com/stretchr/testify/require"
2123
)
2224

2325
// TestIntervalTreeInsert tests interval tree insertion.
@@ -53,9 +55,7 @@ func TestIntervalTreeInsert(t *testing.T) {
5355

5456
tr := ivt.(*intervalTree)
5557
visits := tr.visitLevel()
56-
if !reflect.DeepEqual(expected, visits) {
57-
t.Fatalf("level order expected %v, got %v", expected, visits)
58-
}
58+
require.Truef(t, reflect.DeepEqual(expected, visits), "level order expected %v, got %v", expected, visits)
5959
}
6060

6161
// TestIntervalTreeSelfBalanced ensures range tree is self-balanced after inserting ranges to the tree.
@@ -107,13 +107,9 @@ func TestIntervalTreeSelfBalanced(t *testing.T) {
107107

108108
tr := ivt.(*intervalTree)
109109
visits := tr.visitLevel()
110-
if !reflect.DeepEqual(expected, visits) {
111-
t.Fatalf("level order expected %v, got %v", expected, visits)
112-
}
110+
require.Truef(t, reflect.DeepEqual(expected, visits), "level order expected %v, got %v", expected, visits)
113111

114-
if visits[len(visits)-1].depth != 3 {
115-
t.Fatalf("expected self-balanced tree with last level 3, but last level got %d", visits[len(visits)-1].depth)
116-
}
112+
require.Equalf(t, 3, visits[len(visits)-1].depth, "expected self-balanced tree with last level 3, but last level got %d", visits[len(visits)-1].depth)
117113
}
118114

119115
// TestIntervalTreeDelete ensures delete operation maintains red-black tree properties.
@@ -214,15 +210,11 @@ func TestIntervalTreeDelete(t *testing.T) {
214210
{root: NewInt64Interval(953, 954), color: red, left: newInt64EmptyInterval(), right: newInt64EmptyInterval(), depth: 4},
215211
}
216212
visitsBeforeDelete := tr.visitLevel()
217-
if !reflect.DeepEqual(expectedBeforeDelete, visitsBeforeDelete) {
218-
t.Fatalf("level order after insertion expected %v, got %v", expectedBeforeDelete, visitsBeforeDelete)
219-
}
213+
require.Truef(t, reflect.DeepEqual(expectedBeforeDelete, visitsBeforeDelete), "level order after insertion expected %v, got %v", expectedBeforeDelete, visitsBeforeDelete)
220214

221215
// delete the node "514"
222216
range514 := NewInt64Interval(514, 515)
223-
if deleted := tr.Delete(NewInt64Interval(514, 515)); !deleted {
224-
t.Fatalf("range %v not deleted", range514)
225-
}
217+
require.Truef(t, tr.Delete(NewInt64Interval(514, 515)), "range %v not deleted", range514)
226218

227219
expectedAfterDelete514 := []visitedInterval{
228220
{root: NewInt64Interval(510, 511), color: black, left: NewInt64Interval(82, 83), right: NewInt64Interval(830, 831), depth: 0},
@@ -246,15 +238,11 @@ func TestIntervalTreeDelete(t *testing.T) {
246238
{root: NewInt64Interval(953, 954), color: red, left: newInt64EmptyInterval(), right: newInt64EmptyInterval(), depth: 4},
247239
}
248240
visitsAfterDelete514 := tr.visitLevel()
249-
if !reflect.DeepEqual(expectedAfterDelete514, visitsAfterDelete514) {
250-
t.Fatalf("level order after deleting '514' expected %v, got %v", expectedAfterDelete514, visitsAfterDelete514)
251-
}
241+
require.Truef(t, reflect.DeepEqual(expectedAfterDelete514, visitsAfterDelete514), "level order after deleting '514' expected %v, got %v", expectedAfterDelete514, visitsAfterDelete514)
252242

253243
// delete the node "11"
254244
range11 := NewInt64Interval(11, 12)
255-
if deleted := tr.Delete(NewInt64Interval(11, 12)); !deleted {
256-
t.Fatalf("range %v not deleted", range11)
257-
}
245+
require.Truef(t, tr.Delete(NewInt64Interval(11, 12)), "range %v not deleted", range11)
258246

259247
expectedAfterDelete11 := []visitedInterval{
260248
{root: NewInt64Interval(510, 511), color: black, left: NewInt64Interval(383, 384), right: NewInt64Interval(830, 831), depth: 0},
@@ -277,9 +265,7 @@ func TestIntervalTreeDelete(t *testing.T) {
277265
{root: NewInt64Interval(953, 954), color: red, left: newInt64EmptyInterval(), right: newInt64EmptyInterval(), depth: 4},
278266
}
279267
visitsAfterDelete11 := tr.visitLevel()
280-
if !reflect.DeepEqual(expectedAfterDelete11, visitsAfterDelete11) {
281-
t.Fatalf("level order after deleting '11' expected %v, got %v", expectedAfterDelete11, visitsAfterDelete11)
282-
}
268+
require.Truef(t, reflect.DeepEqual(expectedAfterDelete11, visitsAfterDelete11), "level order after deleting '11' expected %v, got %v", expectedAfterDelete11, visitsAfterDelete11)
283269
}
284270

285271
func TestIntervalTreeIntersects(t *testing.T) {
@@ -323,9 +309,7 @@ func TestIntervalTreeStab(t *testing.T) {
323309
ivt.Insert(NewStringInterval("0", "3"), 0)
324310

325311
tr := ivt.(*intervalTree)
326-
if tr.root.max.Compare(StringComparable("8")) != 0 {
327-
t.Fatalf("wrong root max got %v, expected 8", tr.root.max)
328-
}
312+
require.Equalf(t, 0, tr.root.max.Compare(StringComparable("8")), "wrong root max got %v, expected 8", tr.root.max)
329313
if x := len(ivt.Stab(NewStringPoint("0"))); x != 3 {
330314
t.Errorf("got %d, expected 3", x)
331315
}
@@ -381,12 +365,8 @@ func TestIntervalTreeRandom(t *testing.T) {
381365
for ab := range ivs {
382366
for xy := range ivs {
383367
v := xy.x + int64(rand.Intn(int(xy.y-xy.x)))
384-
if slen := len(ivt.Stab(NewInt64Point(v))); slen == 0 {
385-
t.Fatalf("expected %v stab non-zero for [%+v)", v, xy)
386-
}
387-
if !ivt.Intersects(NewInt64Point(v)) {
388-
t.Fatalf("did not get %d as expected for [%+v)", v, xy)
389-
}
368+
require.NotEmptyf(t, ivt.Stab(NewInt64Point(v)), "expected %v stab non-zero for [%+v)", v, xy)
369+
require.Truef(t, ivt.Intersects(NewInt64Point(v)), "did not get %d as expected for [%+v)", v, xy)
390370
}
391371
if !ivt.Delete(NewInt64Interval(ab.x, ab.y)) {
392372
t.Errorf("did not delete %v as expected", ab)

pkg/crc/crc_test.go

+8-9
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,16 @@ import (
88
"hash/crc32"
99
"reflect"
1010
"testing"
11+
12+
"github.com/stretchr/testify/require"
1113
)
1214

1315
// TestHash32 tests that Hash32 provided by this package can take an initial
1416
// crc and behaves exactly the same as the standard one in the following calls.
1517
func TestHash32(t *testing.T) {
1618
stdhash := crc32.New(crc32.IEEETable)
17-
if _, err := stdhash.Write([]byte("test data")); err != nil {
18-
t.Fatalf("unexpected write error: %v", err)
19-
}
19+
_, err := stdhash.Write([]byte("test data"))
20+
require.NoErrorf(t, err, "unexpected write error: %v", err)
2021
// create a new hash with stdhash.Sum32() as initial crc
2122
hash := New(stdhash.Sum32(), crc32.IEEETable)
2223

@@ -38,12 +39,10 @@ func TestHash32(t *testing.T) {
3839
}
3940

4041
// write something
41-
if _, err := stdhash.Write([]byte("test data")); err != nil {
42-
t.Fatalf("unexpected write error: %v", err)
43-
}
44-
if _, err := hash.Write([]byte("test data")); err != nil {
45-
t.Fatalf("unexpected write error: %v", err)
46-
}
42+
_, err = stdhash.Write([]byte("test data"))
43+
require.NoErrorf(t, err, "unexpected write error: %v", err)
44+
_, err = hash.Write([]byte("test data"))
45+
require.NoErrorf(t, err, "unexpected write error: %v", err)
4746
wsum32 = stdhash.Sum32()
4847
if g := hash.Sum32(); g != wsum32 {
4948
t.Errorf("Sum32 after write = %d, want %d", g, wsum32)

pkg/expect/expect_test.go

+30-80
Original file line numberDiff line numberDiff line change
@@ -29,27 +29,17 @@ import (
2929

3030
func TestExpectFunc(t *testing.T) {
3131
ep, err := NewExpect("echo", "hello world")
32-
if err != nil {
33-
t.Fatal(err)
34-
}
32+
require.NoError(t, err)
3533
wstr := "hello world\r\n"
3634
l, eerr := ep.ExpectFunc(context.Background(), func(a string) bool { return len(a) > 10 })
37-
if eerr != nil {
38-
t.Fatal(eerr)
39-
}
40-
if l != wstr {
41-
t.Fatalf(`got "%v", expected "%v"`, l, wstr)
42-
}
43-
if cerr := ep.Close(); cerr != nil {
44-
t.Fatal(cerr)
45-
}
35+
require.NoError(t, eerr)
36+
require.Equalf(t, l, wstr, `got "%v", expected "%v"`, l, wstr)
37+
require.NoError(t, ep.Close())
4638
}
4739

4840
func TestExpectFuncTimeout(t *testing.T) {
4941
ep, err := NewExpect("tail", "-f", "/dev/null")
50-
if err != nil {
51-
t.Fatal(err)
52-
}
42+
require.NoError(t, err)
5343
go func() {
5444
// It's enough to have "talkative" process to stuck in the infinite loop of reading
5545
for {
@@ -66,21 +56,15 @@ func TestExpectFuncTimeout(t *testing.T) {
6656

6757
require.ErrorIs(t, err, context.DeadlineExceeded)
6858

69-
if err = ep.Stop(); err != nil {
70-
t.Fatal(err)
71-
}
72-
73-
err = ep.Close()
74-
require.ErrorContains(t, err, "unexpected exit code [143]")
59+
require.NoError(t, ep.Stop())
60+
require.ErrorContains(t, ep.Close(), "unexpected exit code [143]")
7561
require.Equal(t, 143, ep.exitCode)
7662
}
7763

7864
func TestExpectFuncExitFailure(t *testing.T) {
7965
// tail -x should not exist and return a non-zero exit code
8066
ep, err := NewExpect("tail", "-x")
81-
if err != nil {
82-
t.Fatal(err)
83-
}
67+
require.NoError(t, err)
8468

8569
ctx, cancel := context.WithTimeout(context.Background(), 500*time.Millisecond)
8670
defer cancel()
@@ -95,9 +79,7 @@ func TestExpectFuncExitFailure(t *testing.T) {
9579
func TestExpectFuncExitFailureStop(t *testing.T) {
9680
// tail -x should not exist and return a non-zero exit code
9781
ep, err := NewExpect("tail", "-x")
98-
if err != nil {
99-
t.Fatal(err)
100-
}
82+
require.NoError(t, err)
10183

10284
ctx, cancel := context.WithTimeout(context.Background(), 500*time.Millisecond)
10385
defer cancel()
@@ -109,81 +91,50 @@ func TestExpectFuncExitFailureStop(t *testing.T) {
10991
exitCode, err := ep.ExitCode()
11092
require.Equal(t, 1, exitCode)
11193
require.NoError(t, err)
112-
113-
if err = ep.Stop(); err != nil {
114-
t.Fatal(err)
115-
}
116-
err = ep.Close()
117-
require.ErrorContains(t, err, "unexpected exit code [1]")
94+
require.NoError(t, ep.Stop())
95+
require.ErrorContains(t, ep.Close(), "unexpected exit code [1]")
11896
exitCode, err = ep.ExitCode()
11997
require.Equal(t, 1, exitCode)
12098
require.NoError(t, err)
12199
}
122100

123101
func TestEcho(t *testing.T) {
124102
ep, err := NewExpect("echo", "hello world")
125-
if err != nil {
126-
t.Fatal(err)
127-
}
103+
require.NoError(t, err)
128104
ctx := context.Background()
129105
l, eerr := ep.ExpectWithContext(ctx, ExpectedResponse{Value: "world"})
130-
if eerr != nil {
131-
t.Fatal(eerr)
132-
}
106+
require.NoError(t, eerr)
133107
wstr := "hello world"
134-
if l[:len(wstr)] != wstr {
135-
t.Fatalf(`got "%v", expected "%v"`, l, wstr)
136-
}
137-
if cerr := ep.Close(); cerr != nil {
138-
t.Fatal(cerr)
139-
}
140-
if _, eerr = ep.ExpectWithContext(ctx, ExpectedResponse{Value: "..."}); eerr == nil {
141-
t.Fatalf("expected error on closed expect process")
142-
}
108+
require.Equalf(t, l[:len(wstr)], wstr, `got "%v", expected "%v"`, l, wstr)
109+
require.NoError(t, ep.Close())
110+
_, eerr = ep.ExpectWithContext(ctx, ExpectedResponse{Value: "..."})
111+
require.Errorf(t, eerr, "expected error on closed expect process")
143112
}
144113

145114
func TestLineCount(t *testing.T) {
146115
ep, err := NewExpect("printf", "1\n2\n3")
147-
if err != nil {
148-
t.Fatal(err)
149-
}
116+
require.NoError(t, err)
150117
wstr := "3"
151118
l, eerr := ep.ExpectWithContext(context.Background(), ExpectedResponse{Value: wstr})
152-
if eerr != nil {
153-
t.Fatal(eerr)
154-
}
155-
if l != wstr {
156-
t.Fatalf(`got "%v", expected "%v"`, l, wstr)
157-
}
158-
if ep.LineCount() != 3 {
159-
t.Fatalf("got %d, expected 3", ep.LineCount())
160-
}
161-
if cerr := ep.Close(); cerr != nil {
162-
t.Fatal(cerr)
163-
}
119+
require.NoError(t, eerr)
120+
require.Equalf(t, l, wstr, `got "%v", expected "%v"`, l, wstr)
121+
require.Equalf(t, 3, ep.LineCount(), "got %d, expected 3", ep.LineCount())
122+
require.NoError(t, ep.Close())
164123
}
165124

166125
func TestSend(t *testing.T) {
167126
ep, err := NewExpect("tr", "a", "b")
168-
if err != nil {
169-
t.Fatal(err)
170-
}
171-
if err := ep.Send("a\r"); err != nil {
172-
t.Fatal(err)
173-
}
174-
if _, err := ep.ExpectWithContext(context.Background(), ExpectedResponse{Value: "b"}); err != nil {
175-
t.Fatal(err)
176-
}
177-
if err := ep.Stop(); err != nil {
178-
t.Fatal(err)
179-
}
127+
require.NoError(t, err)
128+
err = ep.Send("a\r")
129+
require.NoError(t, err)
130+
_, err = ep.ExpectWithContext(context.Background(), ExpectedResponse{Value: "b"})
131+
require.NoError(t, err)
132+
require.NoError(t, ep.Stop())
180133
}
181134

182135
func TestSignal(t *testing.T) {
183136
ep, err := NewExpect("sleep", "100")
184-
if err != nil {
185-
t.Fatal(err)
186-
}
137+
require.NoError(t, err)
187138
ep.Signal(os.Interrupt)
188139
donec := make(chan struct{})
189140
go func() {
@@ -267,8 +218,7 @@ func TestResponseMatchRegularExpr(t *testing.T) {
267218
require.Error(t, err)
268219
}
269220

270-
cerr := ep.Close()
271-
require.NoError(t, cerr)
221+
require.NoError(t, ep.Close())
272222
})
273223
}
274224
}

pkg/flags/flag_test.go

+4-6
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import (
1919
"strings"
2020
"testing"
2121

22+
"github.com/stretchr/testify/require"
2223
"go.uber.org/zap/zaptest"
2324
)
2425

@@ -41,9 +42,8 @@ func TestSetFlagsFromEnv(t *testing.T) {
4142
"a": "",
4243
"b": "bar",
4344
} {
44-
if got := fs.Lookup(f).Value.String(); got != want {
45-
t.Fatalf("flag %q=%q, want %q", f, got, want)
46-
}
45+
got := fs.Lookup(f).Value.String()
46+
require.Equalf(t, want, got, "flag %q=%q, want %q", f, got, want)
4747
}
4848

4949
// now read the env and verify flags were updated as expected
@@ -85,7 +85,5 @@ func TestSetFlagsFromEnvParsingError(t *testing.T) {
8585
break
8686
}
8787
}
88-
if err != nil {
89-
t.Fatalf("unexpected error %v", err)
90-
}
88+
require.NoErrorf(t, err, "unexpected error %v", err)
9189
}

pkg/flags/strings_test.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ package flags
1717
import (
1818
"reflect"
1919
"testing"
20+
21+
"github.com/stretchr/testify/require"
2022
)
2123

2224
func TestStringsValue(t *testing.T) {
@@ -30,8 +32,6 @@ func TestStringsValue(t *testing.T) {
3032
}
3133
for i := range tests {
3234
ss := []string(*NewStringsValue(tests[i].s))
33-
if !reflect.DeepEqual(tests[i].exp, ss) {
34-
t.Fatalf("#%d: expected %q, got %q", i, tests[i].exp, ss)
35-
}
35+
require.Truef(t, reflect.DeepEqual(tests[i].exp, ss), "#%d: expected %q, got %q", i, tests[i].exp, ss)
3636
}
3737
}

pkg/flags/uint32_test.go

+2-3
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import (
1919
"testing"
2020

2121
"github.com/stretchr/testify/assert"
22+
"github.com/stretchr/testify/require"
2223
)
2324

2425
func TestUint32Value(t *testing.T) {
@@ -101,9 +102,7 @@ func TestUint32FromFlag(t *testing.T) {
101102
t.Run(tc.name, func(t *testing.T) {
102103
fs := flag.NewFlagSet("etcd", flag.ContinueOnError)
103104
fs.Var(NewUint32Value(tc.defaultVal), flagName, "Maximum concurrent streams that each client can open at a time.")
104-
if err := fs.Parse(tc.arguments); err != nil {
105-
t.Fatalf("Unexpected error: %v\n", err)
106-
}
105+
require.NoError(t, fs.Parse(tc.arguments))
107106
actualMaxStream := Uint32FromFlag(fs, flagName)
108107
assert.Equal(t, tc.expectedVal, actualMaxStream)
109108
})

0 commit comments

Comments
 (0)