1
1
package err2_test
2
2
3
3
import (
4
+ "errors"
4
5
"fmt"
5
6
"io"
6
7
"os"
7
8
"runtime"
8
9
"testing"
9
10
10
11
"github.com/lainio/err2"
11
- "github.com/lainio/err2/internal/test "
12
+ "github.com/lainio/err2/internal/require "
12
13
"github.com/lainio/err2/try"
13
14
)
14
15
15
16
const errStringInThrow = "this is an ERROR"
16
17
17
- func throw () (string , error ) {
18
- return "" , fmt .Errorf (errStringInThrow )
19
- }
18
+ var (
19
+ errToTest = errors .New (errStringInThrow )
20
+ )
21
+
22
+ func throw () (string , error ) { return "" , errToTest }
23
+ func noThrow () (string , error ) { return "test" , nil }
24
+ func noErr () error { return nil }
20
25
21
26
func twoStrNoThrow () (string , string , error ) { return "test" , "test" , nil }
22
27
func intStrNoThrow () (int , string , error ) { return 1 , "test" , nil }
23
28
func boolIntStrNoThrow () (bool , int , string , error ) { return true , 1 , "test" , nil }
24
- func noThrow () (string , error ) { return "test" , nil }
25
-
26
- func noErr () error {
27
- return nil
28
- }
29
29
30
30
func TestTry_noError (t * testing.T ) {
31
31
t .Parallel ()
@@ -62,9 +62,9 @@ func TestHandle_noerrHandler(t *testing.T) {
62
62
var err error
63
63
var handlerCalled bool
64
64
defer func () {
65
- test . Require (t , handlerCalled )
65
+ require . That (t , handlerCalled )
66
66
}()
67
- // This is the handler we are thesting !
67
+ // This is the handler we are testing !
68
68
defer err2 .Handle (& err , func (noerr bool ) {
69
69
handlerCalled = noerr
70
70
})
@@ -77,16 +77,16 @@ func TestHandle_noerrHandler(t *testing.T) {
77
77
var err error
78
78
var handlerCalled bool
79
79
defer func () {
80
- test . Require (t , handlerCalled )
80
+ require . That (t , handlerCalled )
81
81
}()
82
82
defer err2 .Handle (& err , func (err error ) error {
83
83
// this should not be called, so lets try to fuckup things...
84
84
handlerCalled = false
85
- test . Require (t , false )
85
+ require . That (t , false )
86
86
return err
87
87
})
88
88
89
- // This is the handler we are thesting !
89
+ // This is the handler we are testing !
90
90
defer err2 .Handle (& err , func (noerr bool ) {
91
91
handlerCalled = noerr
92
92
})
@@ -99,18 +99,20 @@ func TestHandle_noerrHandler(t *testing.T) {
99
99
var err error
100
100
var handlerCalled bool
101
101
defer func () {
102
- test . Require (t , ! handlerCalled )
102
+ require . ThatNot (t , handlerCalled )
103
103
}()
104
+
105
+ // This is the handler we are testing!
104
106
defer err2 .Handle (& err , func (err error ) error {
107
+ require .ThatNot (t , handlerCalled )
105
108
handlerCalled = false
106
- test . Require (t , true , "error should be handled" )
109
+ require . That (t , true , "error should be handled" )
107
110
return err
108
111
})
109
112
110
- // This is the handler we are thesting!
111
- defer err2 .Handle (& err , func (noerr bool ) {
112
- test .Require (t , noerr )
113
- handlerCalled = noerr
113
+ // This is the handler we are testing! AND it's not called in error.
114
+ defer err2 .Handle (& err , func (bool ) {
115
+ require .That (t , false , "when error this is not called" )
114
116
})
115
117
116
118
try .To1 (throw ())
@@ -122,29 +124,35 @@ func TestHandle_noerrHandler(t *testing.T) {
122
124
err error
123
125
finalAnnotatedErr = fmt .Errorf ("err: %v" , errStringInThrow )
124
126
handlerCalled bool
127
+ callCount int
125
128
)
126
129
defer func () {
127
- test .Require (t , ! handlerCalled )
128
- test .RequireEqual (t , err .Error (), finalAnnotatedErr .Error ())
130
+ require .ThatNot (t , handlerCalled )
131
+ require .Equal (t , callCount , 2 )
132
+ require .Equal (t , err .Error (), finalAnnotatedErr .Error ())
129
133
}()
130
134
131
- // This is the handler we are thesting!
135
+ // This is the handler we are testing! AND it's not called in error.
132
136
defer err2 .Handle (& err , func (noerr bool ) {
133
- test . Require (t , false , "if error occurs/reset, this cannot happen" )
137
+ require . That (t , false , "if error occurs/reset, this cannot happen" )
134
138
handlerCalled = noerr
135
139
})
136
140
137
141
// important! test that our handler doesn't change the current error
138
142
// and it's not nil
139
143
defer err2 .Handle (& err , func (er error ) error {
140
- test .Require (t , er != nil , "er val: " , er , err )
144
+ require .That (t , er != nil , "er val: " , er , err )
145
+ require .Equal (t , callCount , 1 , "this is called in sencond" )
146
+ callCount ++
141
147
return er
142
148
})
143
149
144
150
defer err2 .Handle (& err , func (err error ) error {
145
151
// this should not be called, so lets try to fuckup things...
152
+ require .Equal (t , callCount , 0 , "this is called in first" )
153
+ callCount ++
146
154
handlerCalled = false
147
- test . Require (t , err != nil )
155
+ require . That (t , err != nil )
148
156
return finalAnnotatedErr
149
157
})
150
158
try .To1 (throw ())
@@ -155,17 +163,17 @@ func TestHandle_noerrHandler(t *testing.T) {
155
163
var err error
156
164
var handlerCalled bool
157
165
defer func () {
158
- test . Require (t , handlerCalled )
166
+ require . That (t , handlerCalled )
159
167
}()
160
168
161
- // This is the handler we are thesting !
169
+ // This is the handler we are testing !
162
170
defer err2 .Handle (& err , func (noerr bool ) {
163
- test . Require (t , noerr )
171
+ require . That (t , noerr )
164
172
handlerCalled = noerr
165
173
})
166
174
167
175
defer err2 .Handle (& err , func (err error ) error {
168
- test . Require (t , false , "no error to handle!" )
176
+ require . That (t , false , "no error to handle!" )
169
177
// this should not be called, so lets try to fuckup things...
170
178
handlerCalled = false // see first deferred function
171
179
return err
@@ -178,26 +186,27 @@ func TestHandle_noerrHandler(t *testing.T) {
178
186
var err error
179
187
var handlerCalled bool
180
188
defer func () {
181
- test . Require (t , handlerCalled )
189
+ require . That (t , handlerCalled )
182
190
}()
183
191
184
- // This is the handler we are thesting !
192
+ // This is the handler we are testing !
185
193
defer err2 .Handle (& err , func (noerr bool ) {
186
- test .Require (t , noerr )
194
+ require .That (t , true )
195
+ require .That (t , noerr )
187
196
handlerCalled = noerr
188
197
})
189
198
190
199
defer err2 .Handle (& err )
191
200
192
201
defer err2 .Handle (& err , func (err error ) error {
193
- test . Require (t , false , "no error to handle!" )
202
+ require . That (t , false , "no error to handle!" )
194
203
// this should not be called, so lets try to fuckup things...
195
204
handlerCalled = false // see first deferred function
196
205
return err
197
206
})
198
207
199
208
defer err2 .Handle (& err , func (err error ) error {
200
- test . Require (t , false , "no error to handle!" )
209
+ require . That (t , false , "no error to handle!" )
201
210
// this should not be called, so lets try to fuckup things...
202
211
handlerCalled = false // see first deferred function
203
212
return err
@@ -210,20 +219,20 @@ func TestHandle_noerrHandler(t *testing.T) {
210
219
var err error
211
220
var noerrHandlerCalled , errHandlerCalled bool
212
221
defer func () {
213
- test . Require (t , noerrHandlerCalled )
214
- test . Require (t , errHandlerCalled )
222
+ require . That (t , noerrHandlerCalled )
223
+ require . That (t , errHandlerCalled )
215
224
}()
216
225
217
- // This is the handler we are thesting !
226
+ // This is the handler we are testing !
218
227
defer err2 .Handle (& err , func (noerr bool ) {
219
- test . Require (t , true ) // we are here, for debugging
220
- test . Require (t , noerr )
228
+ require . That (t , true ) // we are here, for debugging
229
+ require . That (t , noerr )
221
230
noerrHandlerCalled = noerr
222
231
})
223
232
224
233
// this is the err handler that -- RESETS -- the error to nil
225
234
defer err2 .Handle (& err , func (err error ) error {
226
- test . Require (t , err != nil ) // helps fast debugging
235
+ require . That (t , err != nil ) // helps fast debugging
227
236
228
237
// this should not be called, so lets try to fuckup things...
229
238
noerrHandlerCalled = false // see first deferred function
@@ -233,7 +242,7 @@ func TestHandle_noerrHandler(t *testing.T) {
233
242
})
234
243
235
244
defer err2 .Handle (& err , func (err error ) error {
236
- test . Require (t , err != nil ) // helps fast debugging
245
+ require . That (t , err != nil ) // helps fast debugging
237
246
// this should not be called, so lets try to fuckup things...
238
247
noerrHandlerCalled = false // see first deferred function
239
248
@@ -248,27 +257,28 @@ func TestHandle_noerrHandler(t *testing.T) {
248
257
var err error
249
258
var handlerCalled bool
250
259
defer func () {
251
- test . Require (t , handlerCalled )
260
+ require . That (t , handlerCalled )
252
261
}()
253
262
254
263
defer err2 .Handle (& err )
255
264
defer err2 .Handle (& err )
256
265
257
266
defer err2 .Handle (& err , func (err error ) error {
258
- test . Require (t , false , "no error to handle!" )
267
+ require . That (t , false , "no error to handle!" )
259
268
// this should not be called, so lets try to fuckup things...
260
269
handlerCalled = false // see first deferred function
261
270
return err
262
271
})
263
272
264
- // This is the handler we are thesting !
273
+ // This is the handler we are testing !
265
274
defer err2 .Handle (& err , func (noerr bool ) {
266
- test .Require (t , noerr )
275
+ require .That (t , true , "this must be called" )
276
+ require .That (t , noerr )
267
277
handlerCalled = noerr
268
278
})
269
279
270
280
defer err2 .Handle (& err , func (err error ) error {
271
- test . Require (t , false , "no error to handle!" )
281
+ require . That (t , false , "no error to handle!" )
272
282
// this should not be called, so lets try to fuckup things...
273
283
handlerCalled = false // see first deferred function
274
284
return err
@@ -338,7 +348,7 @@ func TestPanickingCatchAll(t *testing.T) {
338
348
t .Run (tt .name , func (t * testing.T ) {
339
349
t .Parallel ()
340
350
defer func () {
341
- test . Require (t , recover () == nil , "panics should NOT carry on" )
351
+ require . That (t , recover () == nil , "panics should NOT carry on" )
342
352
}()
343
353
tt .args .f ()
344
354
})
@@ -382,7 +392,7 @@ func TestPanickingCarryOn_Handle(t *testing.T) {
382
392
t .Run (tt .name , func (t * testing.T ) {
383
393
t .Parallel ()
384
394
defer func () {
385
- test . Require (t , recover () != nil , "panics should went thru when not our errors" )
395
+ require . That (t , recover () != nil , "panics should went thru when not our errors" )
386
396
}()
387
397
tt .args .f ()
388
398
})
@@ -508,12 +518,12 @@ func TestPanicking_Handle(t *testing.T) {
508
518
defer func () {
509
519
r := recover ()
510
520
if tt .wants == nil {
511
- test . Require (t , r != nil , "wants err, then panic" )
521
+ require . That (t , r != nil , "wants err, then panic" )
512
522
}
513
523
}()
514
524
err := tt .args .f ()
515
525
if err != nil {
516
- test . RequireEqual (t , err .Error (), tt .wants .Error ())
526
+ require . Equal (t , err .Error (), tt .wants .Error ())
517
527
}
518
528
})
519
529
}
@@ -554,7 +564,7 @@ func TestPanicking_Catch(t *testing.T) {
554
564
t .Run (tt .name , func (t * testing.T ) {
555
565
t .Parallel ()
556
566
defer func () {
557
- test . Require (t , recover () == nil , "panics should NOT carry on" )
567
+ require . That (t , recover () == nil , "panics should NOT carry on" )
558
568
}()
559
569
tt .args .f ()
560
570
})
@@ -573,7 +583,7 @@ func TestCatch_Error(t *testing.T) {
573
583
func Test_TryOutError (t * testing.T ) {
574
584
t .Parallel ()
575
585
defer err2 .Catch (func (err error ) error {
576
- test . RequireEqual (t , err .Error (), "fails: test: this is an ERROR" ,
586
+ require . Equal (t , err .Error (), "fails: test: this is an ERROR" ,
577
587
"=> we should catch right error str here" )
578
588
return err
579
589
})
@@ -583,7 +593,7 @@ func Test_TryOutError(t *testing.T) {
583
593
// let's test try.Out1() and it's throw capabilities here, even try.To1()
584
594
// is the preferred way.
585
595
retVal = try .Out1 (noThrow ()).Handle ().Val1
586
- test . Require (t , retVal == "test" , "if no error happens, we get value" )
596
+ require . Equal (t , retVal , "test" , "if no error happens, we get value" )
587
597
588
598
_ = try .Out1 (throw ()).Handle ("fails: %v" , retVal ).Val1
589
599
t .Fail () // If everything works in Handle we are never here.
@@ -615,11 +625,11 @@ func TestCatch_Panic(t *testing.T) {
615
625
func TestSetErrorTracer (t * testing.T ) {
616
626
t .Parallel ()
617
627
w := err2 .ErrorTracer ()
618
- test . Require (t , w == nil , "error tracer should be nil" )
628
+ require . That (t , w == nil , "error tracer should be nil" )
619
629
var w1 io.Writer
620
630
err2 .SetErrorTracer (w1 )
621
631
w = err2 .ErrorTracer ()
622
- test . Require (t , w == nil , "error tracer should be nil" )
632
+ require . That (t , w == nil , "error tracer should be nil" )
623
633
}
624
634
625
635
func ExampleCatch_withFmt () {
0 commit comments