@@ -32,19 +32,19 @@ import (
32
32
"sync/atomic"
33
33
"testing"
34
34
"time"
35
+
36
+ "github.com/stretchr/testify/assert"
37
+ "github.com/stretchr/testify/require"
35
38
)
36
39
37
40
func TestDo (t * testing.T ) {
38
41
g := NewGroup [string , string ]()
39
42
v , err , _ := g .Do ("key" , func () (string , error ) {
40
43
return "bar" , nil
41
44
})
42
- if got , want := fmt .Sprintf ("%v (%T)" , v , v ), "bar (string)" ; got != want {
43
- t .Errorf ("Do = %v; want %v" , got , want )
44
- }
45
- if err != nil {
46
- t .Errorf ("Do error = %v" , err )
47
- }
45
+
46
+ assert .Equal (t , "bar (string)" , fmt .Sprintf ("%v (%T)" , v , v ), "incorrect Do value" )
47
+ assert .NoError (t , err , "got Do error" )
48
48
}
49
49
50
50
func TestDoErr (t * testing.T ) {
@@ -53,12 +53,9 @@ func TestDoErr(t *testing.T) {
53
53
v , err , _ := g .Do ("key" , func () (string , error ) {
54
54
return "" , someErr
55
55
})
56
- if err != someErr {
57
- t .Errorf ("Do error = %v; want someErr %v" , err , someErr )
58
- }
59
- if v != "" {
60
- t .Errorf ("unexpected non-nil value %#v" , v )
61
- }
56
+
57
+ assert .ErrorIs (t , err , someErr , "incorrect Do error" )
58
+ assert .Empty (t , v , "unexpected non-empty value" )
62
59
}
63
60
64
61
func TestDoDupSuppress (t * testing.T ) {
@@ -88,23 +85,20 @@ func TestDoDupSuppress(t *testing.T) {
88
85
defer wg2 .Done ()
89
86
wg1 .Done ()
90
87
v , err , _ := g .Do ("key" , fn )
91
- if err != nil {
92
- t .Errorf ("Do error: %v" , err )
88
+ if ! assert .NoError (t , err , "unexpected Do error" ) {
93
89
return
94
90
}
95
- if s := v ; s != "bar" {
96
- t .Errorf ("Do = %T %v; want %q" , v , v , "bar" )
97
- }
91
+
92
+ assert .Equal (t , "bar" , v , "unexpected Do value" )
98
93
}()
99
94
}
100
95
wg1 .Wait ()
101
96
// At least one goroutine is in fn now and all of them have at
102
97
// least reached the line before the Do.
103
98
c <- "bar"
104
99
wg2 .Wait ()
105
- if got := atomic .LoadInt32 (& calls ); got <= 0 || got >= n {
106
- t .Errorf ("number of calls = %d; want over 0 and less than %d" , got , n )
107
- }
100
+ got := atomic .LoadInt32 (& calls )
101
+ assert .True (t , got > 0 && got < n , "number of calls not between 0 and %d" , n )
108
102
}
109
103
110
104
// Test singleflight behaves correctly after Do panic.
@@ -137,11 +131,9 @@ func TestPanicDo(t *testing.T) {
137
131
138
132
select {
139
133
case <- done :
140
- if panicCount != n {
141
- t .Errorf ("Expect %d panic, but got %d" , n , panicCount )
142
- }
134
+ assert .Equal (t , int32 (n ), panicCount , "unexpected number of panics" )
143
135
case <- time .After (time .Second ):
144
- t . Fatalf ( "Do hangs" )
136
+ require . Fail ( t , "Do hangs" )
145
137
}
146
138
}
147
139
@@ -159,9 +151,7 @@ func TestGoexitDo(t *testing.T) {
159
151
go func () {
160
152
var err error
161
153
defer func () {
162
- if err != nil {
163
- t .Errorf ("Error should be nil, but got: %v" , err )
164
- }
154
+ assert .NoError (t , err )
165
155
if atomic .AddInt32 (& waited , - 1 ) == 0 {
166
156
close (done )
167
157
}
@@ -173,7 +163,7 @@ func TestGoexitDo(t *testing.T) {
173
163
select {
174
164
case <- done :
175
165
case <- time .After (time .Second ):
176
- t . Fatalf ( "Do hangs" )
166
+ require . Fail ( t , "Do hangs" )
177
167
}
178
168
}
179
169
@@ -202,9 +192,8 @@ func randKeys(b *testing.B, count, length uint) []string {
202
192
key := make ([]byte , length )
203
193
204
194
for i := range uint (count ) {
205
- if _ , err := io .ReadFull (rand .Reader , key ); err != nil {
206
- b .Fatalf ("Failed to generate random key %d of %d of length %d: %s" , i + 1 , count , length , err )
207
- }
195
+ _ , err := io .ReadFull (rand .Reader , key )
196
+ require .NoError (b , err , "Failed to generate random key %d of %d length %d" , i + 1 , count , length )
208
197
keys = append (keys , string (key ))
209
198
}
210
199
return keys
0 commit comments