aboutsummaryrefslogtreecommitdiff
path: root/src/encoding/json/v2_decode_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/encoding/json/v2_decode_test.go')
-rw-r--r--src/encoding/json/v2_decode_test.go28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/encoding/json/v2_decode_test.go b/src/encoding/json/v2_decode_test.go
index 28c57ec8bf..26b4448721 100644
--- a/src/encoding/json/v2_decode_test.go
+++ b/src/encoding/json/v2_decode_test.go
@@ -2363,6 +2363,34 @@ func TestUnmarshalTypeError(t *testing.T) {
}
}
+func TestUnmarshalTypeErrorMessage(t *testing.T) {
+ err := &UnmarshalTypeError{
+ Value: "number 5",
+ Type: reflect.TypeFor[int](),
+ Offset: 1234,
+ Struct: "Root",
+ }
+
+ for _, tt := range []struct {
+ field string
+ want string
+ }{
+ {"", "json: cannot unmarshal number 5 into Go struct field Root. of type int"},
+ {"1", "json: cannot unmarshal number 5 into Root.1 of type int"},
+ {"foo", "json: cannot unmarshal number 5 into Go struct field Root.foo of type int"},
+ {"foo.1", "json: cannot unmarshal number 5 into Root.foo.1 of type int"},
+ {"foo.bar", "json: cannot unmarshal number 5 into Go struct field Root.foo.bar of type int"},
+ {"foo.bar.1", "json: cannot unmarshal number 5 into Root.foo.bar.1 of type int"},
+ {"foo.bar.baz", "json: cannot unmarshal number 5 into Go struct field Root.foo.bar.baz of type int"},
+ } {
+ err.Field = tt.field
+ got := err.Error()
+ if got != tt.want {
+ t.Errorf("Error:\n\tgot: %v\n\twant: %v", got, tt.want)
+ }
+ }
+}
+
func TestUnmarshalSyntax(t *testing.T) {
var x any
tests := []struct {