summaryrefslogtreecommitdiffstats
path: root/dependencies/pkg/mod/github.com/pkg/errors@v0.9.1/go113_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'dependencies/pkg/mod/github.com/pkg/errors@v0.9.1/go113_test.go')
-rw-r--r--dependencies/pkg/mod/github.com/pkg/errors@v0.9.1/go113_test.go178
1 files changed, 178 insertions, 0 deletions
diff --git a/dependencies/pkg/mod/github.com/pkg/errors@v0.9.1/go113_test.go b/dependencies/pkg/mod/github.com/pkg/errors@v0.9.1/go113_test.go
new file mode 100644
index 0000000..4ea37e6
--- /dev/null
+++ b/dependencies/pkg/mod/github.com/pkg/errors@v0.9.1/go113_test.go
@@ -0,0 +1,178 @@
+// +build go1.13
+
+package errors
+
+import (
+ stderrors "errors"
+ "fmt"
+ "reflect"
+ "testing"
+)
+
+func TestErrorChainCompat(t *testing.T) {
+ err := stderrors.New("error that gets wrapped")
+ wrapped := Wrap(err, "wrapped up")
+ if !stderrors.Is(wrapped, err) {
+ t.Errorf("Wrap does not support Go 1.13 error chains")
+ }
+}
+
+func TestIs(t *testing.T) {
+ err := New("test")
+
+ type args struct {
+ err error
+ target error
+ }
+ tests := []struct {
+ name string
+ args args
+ want bool
+ }{
+ {
+ name: "with stack",
+ args: args{
+ err: WithStack(err),
+ target: err,
+ },
+ want: true,
+ },
+ {
+ name: "with message",
+ args: args{
+ err: WithMessage(err, "test"),
+ target: err,
+ },
+ want: true,
+ },
+ {
+ name: "with message format",
+ args: args{
+ err: WithMessagef(err, "%s", "test"),
+ target: err,
+ },
+ want: true,
+ },
+ {
+ name: "std errors compatibility",
+ args: args{
+ err: fmt.Errorf("wrap it: %w", err),
+ target: err,
+ },
+ want: true,
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ if got := Is(tt.args.err, tt.args.target); got != tt.want {
+ t.Errorf("Is() = %v, want %v", got, tt.want)
+ }
+ })
+ }
+}
+
+type customErr struct {
+ msg string
+}
+
+func (c customErr) Error() string { return c.msg }
+
+func TestAs(t *testing.T) {
+ var err = customErr{msg: "test message"}
+
+ type args struct {
+ err error
+ target interface{}
+ }
+ tests := []struct {
+ name string
+ args args
+ want bool
+ }{
+ {
+ name: "with stack",
+ args: args{
+ err: WithStack(err),
+ target: new(customErr),
+ },
+ want: true,
+ },
+ {
+ name: "with message",
+ args: args{
+ err: WithMessage(err, "test"),
+ target: new(customErr),
+ },
+ want: true,
+ },
+ {
+ name: "with message format",
+ args: args{
+ err: WithMessagef(err, "%s", "test"),
+ target: new(customErr),
+ },
+ want: true,
+ },
+ {
+ name: "std errors compatibility",
+ args: args{
+ err: fmt.Errorf("wrap it: %w", err),
+ target: new(customErr),
+ },
+ want: true,
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ if got := As(tt.args.err, tt.args.target); got != tt.want {
+ t.Errorf("As() = %v, want %v", got, tt.want)
+ }
+
+ ce := tt.args.target.(*customErr)
+ if !reflect.DeepEqual(err, *ce) {
+ t.Errorf("set target error failed, target error is %v", *ce)
+ }
+ })
+ }
+}
+
+func TestUnwrap(t *testing.T) {
+ err := New("test")
+
+ type args struct {
+ err error
+ }
+ tests := []struct {
+ name string
+ args args
+ want error
+ }{
+ {
+ name: "with stack",
+ args: args{err: WithStack(err)},
+ want: err,
+ },
+ {
+ name: "with message",
+ args: args{err: WithMessage(err, "test")},
+ want: err,
+ },
+ {
+ name: "with message format",
+ args: args{err: WithMessagef(err, "%s", "test")},
+ want: err,
+ },
+ {
+ name: "std errors compatibility",
+ args: args{err: fmt.Errorf("wrap: %w", err)},
+ want: err,
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ if err := Unwrap(tt.args.err); !reflect.DeepEqual(err, tt.want) {
+ t.Errorf("Unwrap() error = %v, want %v", err, tt.want)
+ }
+ })
+ }
+}