mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
encoding/json: implement Is on all errors
Allows users to check:
errors.Is(err, &UnmarshalTypeError{})
errors.Is(err, &UnmarshalFieldError{})
errors.Is(err, &InvalidUnmarshalError{})
errors.Is(err, &UnsupportedValueError{})
errors.Is(err, &MarshalerError{})
which is the recommended way of checking for kinds of errors.
SyntaxError.Is was implemented in CL 253037.
As and Unwrap relevant methods will be added in future CLs.
Change-Id: I1f8a503b8fdc0f3afdfe9669a91f3af8d960e028
GitHub-Last-Rev: 930cda5384
GitHub-Pull-Request: golang/go#41360
Reviewed-on: https://go-review.googlesource.com/c/go/+/254537
Run-TryBot: Emmanuel Odeke <emm.odeke@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com>
Trust: Emmanuel Odeke <emm.odeke@gmail.com>
This commit is contained in:
parent
b3ef90ec73
commit
95bb00d108
4 changed files with 84 additions and 1 deletions
|
|
@ -2572,3 +2572,34 @@ func TestUnmarshalMaxDepth(t *testing.T) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestInvalidUnmarshalErrorIs(t *testing.T) {
|
||||
err := fmt.Errorf("apackage: %w: failed to parse struct", &InvalidUnmarshalError{reflect.TypeOf("a")})
|
||||
if !errors.Is(err, &InvalidUnmarshalError{}) {
|
||||
t.Fatalf("%v should be unwrapped to a InvalidUnmarshalError", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestUnmarshalFieldErrorIs(t *testing.T) {
|
||||
err := fmt.Errorf("apackage: %w: failed to parse struct", &UnmarshalFieldError{
|
||||
Key: "foo",
|
||||
Type: reflect.TypeOf("a"),
|
||||
Field: reflect.StructField{Name: "b"},
|
||||
})
|
||||
if !errors.Is(err, &UnmarshalFieldError{}) {
|
||||
t.Fatalf("%v should be unwrapped to a UnmarshalFieldError", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestUnmarshalTypeErrorIs(t *testing.T) {
|
||||
err := fmt.Errorf("apackage: %w: failed to parse struct", &UnmarshalTypeError{
|
||||
Value: "foo",
|
||||
Type: reflect.TypeOf("a"),
|
||||
Offset: 1,
|
||||
Struct: "Foo",
|
||||
Field: "Bar",
|
||||
})
|
||||
if !errors.Is(err, &UnmarshalTypeError{}) {
|
||||
t.Fatalf("%v should be unwrapped to a UnmarshalTypeError", err)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue