diff --git a/consumer/consumererror/permanenterror.go b/consumer/consumererror/permanenterror.go index e4d0950596e..935206f1a57 100644 --- a/consumer/consumererror/permanenterror.go +++ b/consumer/consumererror/permanenterror.go @@ -17,12 +17,17 @@ // error type/instance. package consumererror +import "errors" + // permanent is an error that will be always returned if its source // receives the same inputs. type permanent struct { err error } +// permanentError exists to test errors for "IsPermanent" +var permanentError = &permanent{} + // Permanent wraps an error to indicate that it is a permanent error, i.e.: an // error that will be always returned if its source receives the same inputs. func Permanent(err error) error { @@ -38,8 +43,7 @@ func (p permanent) Error() string { // that its sources receives the same input. func IsPermanent(err error) bool { if err != nil { - _, isPermanent := err.(permanent) - return isPermanent + return errors.As(err, permanentError) } return false } diff --git a/consumer/consumererror/permanenterror_test.go b/consumer/consumererror/permanenterror_test.go index 8674825fc57..3906ca08a57 100644 --- a/consumer/consumererror/permanenterror_test.go +++ b/consumer/consumererror/permanenterror_test.go @@ -16,6 +16,7 @@ package consumererror import ( "errors" + "fmt" "testing" "github.com/stretchr/testify/require" @@ -27,9 +28,12 @@ func TestPermanent(t *testing.T) { err = Permanent(err) require.True(t, IsPermanent(err)) + + err = fmt.Errorf("%w", err) + require.True(t, IsPermanent(err)) } func TestIsPermanent_NilError(t *testing.T) { var err error require.False(t, IsPermanent(err)) -} +} \ No newline at end of file