@@ -211,6 +211,40 @@ stuff: 1
211211 }
212212}
213213
214+ func TestDecodeYAMLSeparatorValidation (t * testing.T ) {
215+ s := NewYAMLToJSONDecoder (bytes .NewReader ([]byte (`---
216+ stuff: 1
217+ --- # Make sure termination happen with inline comment
218+ stuff: 2
219+ ---
220+ stuff: 3
221+ --- Make sure uncommented content results YAMLSyntaxError
222+
223+ ` )))
224+ obj := generic {}
225+ if err := s .Decode (& obj ); err != nil {
226+ t .Fatalf ("unexpected error: %v" , err )
227+ }
228+ if fmt .Sprintf ("%#v" , obj ) != `yaml.generic{"stuff":1}` {
229+ t .Errorf ("unexpected object: %#v" , obj )
230+ }
231+ obj = generic {}
232+ if err := s .Decode (& obj ); err != nil {
233+ t .Fatalf ("unexpected error: %v" , err )
234+ }
235+ if fmt .Sprintf ("%#v" , obj ) != `yaml.generic{"stuff":2}` {
236+ t .Errorf ("unexpected object: %#v" , obj )
237+ }
238+ obj = generic {}
239+ err := s .Decode (& obj )
240+ if err == nil {
241+ t .Fatalf ("expected YamlSyntaxError, got nil instead" )
242+ }
243+ if _ , ok := err .(YAMLSyntaxError ); ! ok {
244+ t .Fatalf ("unexpected error: %v" , err )
245+ }
246+ }
247+
214248func TestDecodeBrokenYAML (t * testing.T ) {
215249 s := NewYAMLOrJSONDecoder (bytes .NewReader ([]byte (`---
216250stuff: 1
@@ -282,6 +316,10 @@ func TestYAMLOrJSONDecoder(t *testing.T) {
282316 {"foo" : "bar" },
283317 {"baz" : "biz" },
284318 }},
319+ {"---\n foo: bar\n --- # with Comment\n baz: biz" , 100 , false , false , []generic {
320+ {"foo" : "bar" },
321+ {"baz" : "biz" },
322+ }},
285323 {"foo: bar\n ---\n " , 100 , false , false , []generic {
286324 {"foo" : "bar" },
287325 }},
0 commit comments