File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -3,6 +3,7 @@ package main
33import (
44 "bytes"
55 "errors"
6+ "fmt"
67 "io"
78
89 "github.com/siderolabs/talos/pkg/machinery/resources/network"
@@ -28,8 +29,11 @@ func validateConfig(data []byte) error {
2829 return err
2930 }
3031
31- if err := dec .Decode (new (any )); ! errors .Is (err , io .EOF ) {
32+ switch err := dec .Decode (new (any )); {
33+ case err == nil :
3234 return errors .New ("unexpected extra YAML document" )
35+ case ! errors .Is (err , io .EOF ):
36+ return fmt .Errorf ("unexpected extra YAML document: %w" , err )
3337 }
3438
3539 return nil
Original file line number Diff line number Diff line change @@ -83,6 +83,7 @@ func TestValidateConfigInvalid(t *testing.T) {
8383 {"bad enum value" , "addresses:\n - address: 1.2.3.4/32\n family: inet5\n " },
8484 {"bad IP" , "externalIPs:\n - not-an-ip\n " },
8585 {"extra document" , validNetworkConfig + "---\n externalIPs: []\n " },
86+ {"malformed extra document" , validNetworkConfig + "---\n key: [\n invalid" },
8687 } {
8788 t .Run (tt .name , func (t * testing.T ) {
8889 if err := validateConfig ([]byte (tt .config )); err == nil {
@@ -102,3 +103,15 @@ func TestValidateConfigUnknownFieldError(t *testing.T) {
102103 t .Fatalf ("error should mention the unknown field, got: %v" , err )
103104 }
104105}
106+
107+ func TestValidateConfigMalformedExtraDocumentError (t * testing.T ) {
108+ err := validateConfig ([]byte (validNetworkConfig + "---\n key: [\n invalid" ))
109+ if err == nil {
110+ t .Fatal ("expected error, got nil" )
111+ }
112+
113+ // The underlying parser error must be preserved for diagnostics.
114+ if ! strings .Contains (err .Error (), "yaml" ) {
115+ t .Fatalf ("error should preserve the parser error, got: %v" , err )
116+ }
117+ }
You can’t perform that action at this time.
0 commit comments