From 2c0b330ad92e30934f411d5e790a20a87049f72b Mon Sep 17 00:00:00 2001 From: andig Date: Mon, 4 May 2026 21:13:23 +0200 Subject: [PATCH] chore: upgrade yaml (#29052) --- go.mod | 4 +--- go.sum | 4 ++-- tests/config-aux.spec.ts | 4 +--- util/error.go | 19 ++++++++----------- util/error_test.go | 26 ++++++++++++++++++++++++++ 5 files changed, 38 insertions(+), 19 deletions(-) create mode 100644 util/error_test.go diff --git a/go.mod b/go.mod index 299af00b5..b99d68df2 100644 --- a/go.mod +++ b/go.mod @@ -106,7 +106,7 @@ require ( gitlab.com/bboehmke/sunny v0.16.0 go.bug.st/serial v1.6.4 go.uber.org/mock v0.6.0 - go.yaml.in/yaml/v4 v4.0.0-rc.4 + go.yaml.in/yaml/v4 v4.0.0-rc.4.0.20260501213337-dee8e44820ca golang.org/x/crypto v0.50.0 golang.org/x/crypto/x509roots/fallback v0.0.0-20260409153322-03ca0dcccbd3 golang.org/x/exp v0.0.0-20260410095643-746e56fc9e2f @@ -268,5 +268,3 @@ tool ( replace github.com/grid-x/modbus => github.com/evcc-io/modbus v0.0.0-20250501165638-8b6f1fbdb7ea replace github.com/lorenzodonini/ocpp-go => github.com/evcc-io/ocpp-go v0.0.0-20251212212612-b7f92ee0443b - -replace go.yaml.in/yaml/v4 => go.yaml.in/yaml/v4 v4.0.0-rc.3 diff --git a/go.sum b/go.sum index 3b233b55a..68ed65b9e 100644 --- a/go.sum +++ b/go.sum @@ -826,8 +826,8 @@ go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= -go.yaml.in/yaml/v4 v4.0.0-rc.3 h1:3h1fjsh1CTAPjW7q/EMe+C8shx5d8ctzZTrLcs/j8Go= -go.yaml.in/yaml/v4 v4.0.0-rc.3/go.mod h1:aZqd9kCMsGL7AuUv/m/PvWLdg5sjJsZ4oHDEnfPPfY0= +go.yaml.in/yaml/v4 v4.0.0-rc.4.0.20260501213337-dee8e44820ca h1:I8isjG8ZtUoRJcHD9KtucGO8/R/cKWX4pr7I0DI+FiQ= +go.yaml.in/yaml/v4 v4.0.0-rc.4.0.20260501213337-dee8e44820ca/go.mod h1:aZqd9kCMsGL7AuUv/m/PvWLdg5sjJsZ4oHDEnfPPfY0= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= diff --git a/tests/config-aux.spec.ts b/tests/config-aux.spec.ts index 95fb3a7a2..427c2a2f1 100644 --- a/tests/config-aux.spec.ts +++ b/tests/config-aux.spec.ts @@ -179,9 +179,7 @@ energy: await expect(restResult).toContainText("Status: unknown"); await restResult.getByRole("link", { name: "validate" }).click(); await expect(restResult).toContainText("Status: failed"); - await expect(restResult).toContainText( - "yaml: line 2: mapping values are not allowed in this context" - ); + await expect(restResult).toContainText("mapping values are not allowed in this context"); await expect(editor.locator(".line-numbers.error")).toHaveCount(1); // invalid field error diff --git a/util/error.go b/util/error.go index ae78b4c94..a35d19f26 100644 --- a/util/error.go +++ b/util/error.go @@ -16,6 +16,7 @@ func ErrorAsJson(err error) any { URI string `json:"uri,omitempty"` }{ Error: err.Error(), + Line: yamlErrorLine(err), } if ae, ok := errors.AsType[*api.ErrLoginRequired](err); ok { @@ -26,16 +27,12 @@ func ErrorAsJson(err error) any { res.URI = ue.URL().String() } - var ( - ype *yaml.ParserError - yue *yaml.UnmarshalError - ) - switch { - case errors.As(err, &ype): - res.Line = ype.Line - case errors.As(err, &yue): - res.Line = yue.Line - } - return res } + +func yamlErrorLine(err error) int { + if err, ok := errors.AsType[*yaml.LoadError](err); ok { + return err.Mark.Line + } + return 0 +} diff --git a/util/error_test.go b/util/error_test.go new file mode 100644 index 000000000..b62222d83 --- /dev/null +++ b/util/error_test.go @@ -0,0 +1,26 @@ +package util + +import ( + "testing" + + "github.com/stretchr/testify/require" + "go.yaml.in/yaml/v4" +) + +func TestYamlFloat(t *testing.T) { + b := `example: 55.7351` + var res map[string]string + require.NoError(t, yaml.Unmarshal([]byte(b), &res)) +} + +func TestYamlError(t *testing.T) { + b := `block: + data: foo + - mapped` + + var res map[string]any + err := yaml.Unmarshal([]byte(b), &res) + + require.Error(t, err) + require.Equal(t, 3, yamlErrorLine(err)) +}