mirror of
https://github.com/protocolbuffers/protobuf-go.git
synced 2024-12-29 12:17:48 +00:00
internal/errors: fix New in eliding prefix
Change-Id: I59c4c03f4115bfe6c4377924fadfd664245e878f Reviewed-on: https://go-review.googlesource.com/c/164277 Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
This commit is contained in:
parent
71c6603a26
commit
e09920e4f8
@ -116,7 +116,7 @@ func (invalidUTF8Error) InvalidUTF8() bool { return true }
|
||||
// returns an error that has a "proto" prefix.
|
||||
func New(f string, x ...interface{}) error {
|
||||
for i := 0; i < len(x); i++ {
|
||||
if e, ok := x[i].(prefixError); ok {
|
||||
if e, ok := x[i].(*prefixError); ok {
|
||||
x[i] = e.s // avoid "proto: " prefix when chaining
|
||||
}
|
||||
}
|
||||
|
@ -7,6 +7,7 @@ package errors
|
||||
import (
|
||||
"errors"
|
||||
"reflect"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
@ -91,3 +92,24 @@ type customRequiredNotSetError struct{}
|
||||
|
||||
func (customRequiredNotSetError) Error() string { return "required field not set" }
|
||||
func (customRequiredNotSetError) RequiredNotSet() bool { return true }
|
||||
|
||||
func TestNewPrefix(t *testing.T) {
|
||||
e1 := New("abc")
|
||||
got := e1.Error()
|
||||
if !strings.HasPrefix(got, "proto:") {
|
||||
t.Errorf("missing \"proto:\" prefix in %q", got)
|
||||
}
|
||||
if !strings.Contains(got, "abc") {
|
||||
t.Errorf("missing text \"abc\" in %q", got)
|
||||
}
|
||||
|
||||
e2 := New("%v", e1)
|
||||
got = e2.Error()
|
||||
if !strings.HasPrefix(got, "proto:") {
|
||||
t.Errorf("missing \"proto:\" prefix in %q", got)
|
||||
}
|
||||
// Test to make sure prefix is removed from the embedded error.
|
||||
if strings.Contains(strings.TrimPrefix(got, "proto:"), "proto:") {
|
||||
t.Errorf("prefix \"proto:\" not elided in embedded error: %q", got)
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user