errdefs: add tests error conversions

Signed-off-by: Stephen J Day <stephen.day@docker.com>
This commit is contained in:
Stephen J Day 2017-06-29 17:07:15 -07:00
parent eedcbc64cc
commit 397f405f63
No known key found for this signature in database
GPG Key ID: 67B3DED84EDC823F

65
errdefs/grpc_test.go Normal file
View 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)
}
})
}
}