google/go-jsonnet

false-positive in YAML stream detection

yugui opened this issue · 0 comments

yugui commented

It seems like that go-jsonnet detects a false-positive YAML stream when std.parseYaml parses a YAML document that contains --- in data. It is also an inconsistent behavior with the C++ version.

How to reproduce

Suppose that we have the next test.jsonnet:

std.parseYaml('foo---: bar')

This is not a YAML stream, and it is not far from the example shown in the std library reference. So I expect this input produces the next result:

{
   "foo---": "bar"
}

The C++ implementation actually produces this expected result. However, go-jsonnet produces the next output.

$ jsonnet -v
Jsonnet commandline interpreter (Go implementation) v0.19.1
$ jsonnet test.jsonnet
[
   {
      "foo---": "bar"
   }
]

I believe this is because builtinParseYAML (builtins.go#L1375) detects YAML streams too loosely.