errdefs: add tests error conversions
Signed-off-by: Stephen J Day <stephen.day@docker.com>
This commit is contained in:
parent
eedcbc64cc
commit
397f405f63
65
errdefs/grpc_test.go
Normal file
65
errdefs/grpc_test.go
Normal file
@ -0,0 +1,65 @@
|
||||
package errdefs
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"google.golang.org/grpc"
|
||||
"google.golang.org/grpc/codes"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
func TestGRPCRoundTrip(t *testing.T) {
|
||||
errShouldLeaveAlone := errors.New("unknown to package")
|
||||
|
||||
for _, testcase := range []struct {
|
||||
input error
|
||||
cause error
|
||||
str string
|
||||
}{
|
||||
{
|
||||
input: ErrAlreadyExists,
|
||||
cause: ErrAlreadyExists,
|
||||
},
|
||||
{
|
||||
input: ErrNotFound,
|
||||
cause: ErrNotFound,
|
||||
},
|
||||
{
|
||||
input: errors.Wrapf(ErrFailedPrecondition, "test test test"),
|
||||
cause: ErrFailedPrecondition,
|
||||
str: "test test test: failed precondition",
|
||||
},
|
||||
{
|
||||
input: grpc.Errorf(codes.Unavailable, "should be not available"),
|
||||
cause: ErrUnavailable,
|
||||
str: "should be not available: unavailable",
|
||||
},
|
||||
{
|
||||
input: errShouldLeaveAlone,
|
||||
cause: ErrUnknown,
|
||||
str: errShouldLeaveAlone.Error() + ": " + ErrUnknown.Error(),
|
||||
},
|
||||
} {
|
||||
t.Run(testcase.input.Error(), func(t *testing.T) {
|
||||
t.Logf("input: %v", testcase.input)
|
||||
gerr := ToGRPC(testcase.input)
|
||||
t.Logf("grpc: %v", gerr)
|
||||
ferr := FromGRPC(gerr)
|
||||
t.Logf("recovered: %v", ferr)
|
||||
|
||||
if errors.Cause(ferr) != testcase.cause {
|
||||
t.Fatalf("unexpected cause: %v != %v", errors.Cause(ferr), testcase.cause)
|
||||
}
|
||||
|
||||
expected := testcase.str
|
||||
if expected == "" {
|
||||
expected = testcase.cause.Error()
|
||||
}
|
||||
if ferr.Error() != expected {
|
||||
t.Fatalf("unexpected string: %q != %q", ferr.Error(), expected)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user