mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
encoding/json: add cases to TestUnmarshal for fatal syntactic errors
The presence of a syntax error in the input immediately unmarshaling before unmarshaling into the underlying value. Otherwise, semantic errors are generally lazily reported and allow unmarshaling to continue on. Change-Id: Icf1cfc684e415312d9c8bf739c396ede15299d7d Reviewed-on: https://go-review.googlesource.com/c/go/+/642295 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Ian Lance Taylor <iant@google.com> Auto-Submit: Joseph Tsai <joetsai@digital-static.net> Reviewed-by: Michael Knyszek <mknyszek@google.com>
This commit is contained in:
parent
7bb192a1c5
commit
47a56b2b6d
1 changed files with 17 additions and 0 deletions
|
|
@ -1170,6 +1170,23 @@ var unmarshalTests = []struct {
|
||||||
N Number `json:",string"`
|
N Number `json:",string"`
|
||||||
}{"5"},
|
}{"5"},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// Verify that syntactic errors are immediately fatal,
|
||||||
|
// while semantic errors are lazily reported
|
||||||
|
// (i.e., allow processing to continue).
|
||||||
|
{
|
||||||
|
CaseName: Name(""),
|
||||||
|
in: `[1,2,true,4,5}`,
|
||||||
|
ptr: new([]int),
|
||||||
|
err: &SyntaxError{msg: "invalid character '}' after array element", Offset: 14},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
CaseName: Name(""),
|
||||||
|
in: `[1,2,true,4,5]`,
|
||||||
|
ptr: new([]int),
|
||||||
|
out: []int{1, 2, 0, 4, 5},
|
||||||
|
err: &UnmarshalTypeError{Value: "bool", Type: reflect.TypeFor[int](), Offset: 9},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestMarshal(t *testing.T) {
|
func TestMarshal(t *testing.T) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue