diff --git a/pkg/yqlib/all_at_once_evaluator_test.go b/pkg/yqlib/all_at_once_evaluator_test.go index 3567655d..64f0ce2f 100644 --- a/pkg/yqlib/all_at_once_evaluator_test.go +++ b/pkg/yqlib/all_at_once_evaluator_test.go @@ -54,3 +54,25 @@ func TestAllAtOnceEvaluateNodes(t *testing.T) { test.AssertResultComplex(t, tt.expected, resultsToString(t, list)) } } + +func TestTomlDecoderCanBeReinitializedAcrossDocuments(t *testing.T) { + decoder := NewTomlDecoder() + + firstDocuments, err := ReadDocuments(strings.NewReader("id = \"Foobar\"\n"), decoder) + if err != nil { + t.Fatalf("failed to read first TOML document: %v", err) + } + if firstDocuments.Len() != 1 { + t.Fatalf("expected first document count to be 1, got %d", firstDocuments.Len()) + } + test.AssertResult(t, "Foobar", firstDocuments.Front().Value.(*CandidateNode).Content[1].Value) + + secondDocuments, err := ReadDocuments(strings.NewReader("id = \"Barbar\"\n"), decoder) + if err != nil { + t.Fatalf("failed to read second TOML document: %v", err) + } + if secondDocuments.Len() != 1 { + t.Fatalf("expected second document count to be 1, got %d", secondDocuments.Len()) + } + test.AssertResult(t, "Barbar", secondDocuments.Front().Value.(*CandidateNode).Content[1].Value) +} diff --git a/pkg/yqlib/decoder_toml.go b/pkg/yqlib/decoder_toml.go index dd568bea..dac720bb 100644 --- a/pkg/yqlib/decoder_toml.go +++ b/pkg/yqlib/decoder_toml.go @@ -44,6 +44,7 @@ func (dec *tomlDecoder) Init(reader io.Reader) error { } dec.pendingComments = make([]string, 0) dec.firstContentSeen = false + dec.finished = false return nil }