mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
Merge c837473a0f7eb902ec7a876e8e2ec8eaf369107c into c86c93ca2951338115159dcdd20711603044e1f1
This commit is contained in:
commit
662dfd5d20
@ -241,6 +241,7 @@ var (
|
|||||||
type EtcdError struct {
|
type EtcdError struct {
|
||||||
code codes.Code
|
code codes.Code
|
||||||
desc string
|
desc string
|
||||||
|
wrappedError error
|
||||||
}
|
}
|
||||||
|
|
||||||
// Code returns grpc/codes.Code.
|
// Code returns grpc/codes.Code.
|
||||||
@ -253,6 +254,10 @@ func (e EtcdError) Error() string {
|
|||||||
return e.desc
|
return e.desc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (e EtcdError) Unwrap() error {
|
||||||
|
return e.wrappedError
|
||||||
|
}
|
||||||
|
|
||||||
func Error(err error) error {
|
func Error(err error) error {
|
||||||
if err == nil {
|
if err == nil {
|
||||||
return nil
|
return nil
|
||||||
@ -268,7 +273,7 @@ func Error(err error) error {
|
|||||||
} else {
|
} else {
|
||||||
desc = verr.Error()
|
desc = verr.Error()
|
||||||
}
|
}
|
||||||
return EtcdError{code: ev.Code(), desc: desc}
|
return EtcdError{code: ev.Code(), desc: desc, wrappedError: err}
|
||||||
}
|
}
|
||||||
|
|
||||||
func ErrorDesc(err error) string {
|
func ErrorDesc(err error) string {
|
||||||
|
|||||||
@ -15,6 +15,7 @@
|
|||||||
package rpctypes
|
package rpctypes
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"google.golang.org/grpc/codes"
|
"google.golang.org/grpc/codes"
|
||||||
@ -40,3 +41,20 @@ func TestConvert(t *testing.T) {
|
|||||||
t.Fatalf("expected them to be equal, got %v / %v", ev2.Code(), e3.(EtcdError).Code())
|
t.Fatalf("expected them to be equal, got %v / %v", ev2.Code(), e3.(EtcdError).Code())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestComparingWrappedError(t *testing.T) {
|
||||||
|
errTest := errors.New("test error")
|
||||||
|
e1 := Error(ErrGRPCEmptyKey)
|
||||||
|
e2 := Error(status.Error(codes.InvalidArgument, "etcdserver: key is not provided"))
|
||||||
|
e3 := Error(errTest)
|
||||||
|
|
||||||
|
if !errors.Is(e1, ErrGRPCEmptyKey) {
|
||||||
|
t.Fatalf("expected %v to be an ErrGRPCEmptyKey wrapped error", e1)
|
||||||
|
}
|
||||||
|
if !errors.Is(e2, ErrGRPCEmptyKey) {
|
||||||
|
t.Fatalf("expected %v to be an ErrGRPCEmptyKey wrapped error", e1)
|
||||||
|
}
|
||||||
|
if !errors.Is(e3, errTest) {
|
||||||
|
t.Fatalf("expected %v to be an errTest wrapped error", e3)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user