@@ -16,8 +16,8 @@ import (
16
16
// a.IsError(err1, err2) // fail
17
17
// a.IsError(errors.Join(err1, err2), err1) // success
18
18
// a.IsError(errors.Join(err1, err2), err2) // success
19
- func (a * Assertion ) IsError (err , target error , message ... any ) error {
20
- return isError (a .T , false , err , target , message ... )
19
+ func (a * Assertion ) IsError (err , expected error , message ... any ) error {
20
+ return isError (a .T , false , err , expected , message ... )
21
21
}
22
22
23
23
// IsErrorNow tests whether the error matches the target or not. It'll set the result to fail and
@@ -31,19 +31,61 @@ func (a *Assertion) IsError(err, target error, message ...any) error {
31
31
// a.IsErrorNow(err1, err1) // success
32
32
// a.IsErrorNow(err1, err2) // fail
33
33
// // never runs
34
- func (a * Assertion ) IsErrorNow (err , target error , message ... any ) error {
35
- return isError (a .T , true , err , target , message ... )
34
+ func (a * Assertion ) IsErrorNow (err , expected error , message ... any ) error {
35
+ return isError (a .T , true , err , expected , message ... )
36
+ }
37
+
38
+ // NotIsError tests whether the error matches the target or not. It'll set the result to fail if
39
+ // the error matches to the target error, and it doesn't stop the execution.
40
+ //
41
+ // a := assert.New(t)
42
+ // err1 := errors.New("error 1")
43
+ // err2 := errors.New("error 2")
44
+ // err3 := errors.New("error 3")
45
+ // a.NotIsError(err1, err2) // success
46
+ // a.NotIsError(err1, err1) // fail
47
+ // a.NotIsError(errors.Join(err1, err2), err3) // success
48
+ // a.NotIsError(errors.Join(err1, err2), err1) // fail
49
+ // a.NotIsError(errors.Join(err1, err2), err2) // fail
50
+ func (a * Assertion ) NotIsError (err , unexpected error , message ... any ) error {
51
+ return notIsError (a .T , false , err , unexpected , message ... )
52
+ }
53
+
54
+ // NotIsErrorNow tests whether the error matches the target or not. It'll set the result to fail
55
+ // and stop the execution if the error matches to the target error.
56
+ //
57
+ // a := assert.New(t)
58
+ // err1 := errors.New("error 1")
59
+ // err2 := errors.New("error 2")
60
+ // err3 := errors.new("error 3")
61
+ // a.NotIsErrorNow(errors.Join(err1, err2), err3) // success
62
+ // a.NotIsErrorNow(err1, err2) // fail
63
+ // a.NotIsErrorNow(err1, err1) // fail and terminate
64
+ // // never runs
65
+ func (a * Assertion ) NotIsErrorNow (err , unexpected error , message ... any ) error {
66
+ return notIsError (a .T , true , err , unexpected , message ... )
36
67
}
37
68
38
69
// isError tests whether the error matches the target or not.
39
- func isError (t * testing.T , failedNow bool , err , target error , message ... any ) error {
70
+ func isError (t * testing.T , failedNow bool , err , expected error , message ... any ) error {
40
71
t .Helper ()
41
72
42
73
return test (
43
74
t ,
44
- func () bool { return errors .Is (err , target ) },
75
+ func () bool { return errors .Is (err , expected ) },
76
+ failedNow ,
77
+ fmt .Sprintf (defaultErrMessageIsError , expected , err ),
78
+ message ... ,
79
+ )
80
+ }
81
+
82
+ // isError tests whether the error does not match the target error or not.
83
+ func notIsError (t * testing.T , failedNow bool , err , unexpected error , message ... any ) error {
84
+ return test (
85
+ t ,
86
+ func () bool { return ! errors .Is (err , unexpected ) },
45
87
failedNow ,
46
- fmt .Sprintf (defaultErrMessageIsError , target , err ),
88
+ fmt .Sprintf (defaultErrMessageNotIsError , unexpected ),
47
89
message ... ,
48
90
)
49
91
}
0 commit comments