25 lines
646 B
Go
25 lines
646 B
Go
package mq
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"testing"
|
|
)
|
|
|
|
func TestPermanentHandlerErrorClassification(t *testing.T) {
|
|
cause := errors.New("invalid inbound command")
|
|
if got := Permanent(nil); got != nil {
|
|
t.Fatalf("nil permanent error = %v, want nil", got)
|
|
}
|
|
permanent := Permanent(cause)
|
|
if !errors.Is(permanent, cause) {
|
|
t.Fatal("permanent error lost its cause")
|
|
}
|
|
if !IsPermanent(permanent) || !IsPermanent(fmt.Errorf("handler: %w", permanent)) {
|
|
t.Fatal("wrapped permanent handler error must reject delivery")
|
|
}
|
|
if IsPermanent(cause) || IsPermanent(nil) {
|
|
t.Fatal("transient or absent handler error must not reject delivery")
|
|
}
|
|
}
|