@@ -16,8 +16,8 @@ import (
1616// a.IsError(err1, err2) // fail
1717// a.IsError(errors.Join(err1, err2), err1) // success
1818// 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 ... )
2121}
2222
2323// 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 {
3131// a.IsErrorNow(err1, err1) // success
3232// a.IsErrorNow(err1, err2) // fail
3333// // 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 ... )
3667}
3768
3869// 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 {
4071 t .Helper ()
4172
4273 return test (
4374 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 ) },
4587 failedNow ,
46- fmt .Sprintf (defaultErrMessageIsError , target , err ),
88+ fmt .Sprintf (defaultErrMessageNotIsError , unexpected ),
4789 message ... ,
4890 )
4991}
0 commit comments