Skip to content

Commit b25ae78

Browse files
authored
fix: reset TOML decoder state between files (#2634)
* fix: reset TOML decoder between files * test: fix TOML regression fixture spelling
1 parent b151522 commit b25ae78

2 files changed

Lines changed: 23 additions & 0 deletions

File tree

pkg/yqlib/all_at_once_evaluator_test.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,3 +54,25 @@ func TestAllAtOnceEvaluateNodes(t *testing.T) {
5454
test.AssertResultComplex(t, tt.expected, resultsToString(t, list))
5555
}
5656
}
57+
58+
func TestTomlDecoderCanBeReinitializedAcrossDocuments(t *testing.T) {
59+
decoder := NewTomlDecoder()
60+
61+
firstDocuments, err := ReadDocuments(strings.NewReader("id = \"Foobar\"\n"), decoder)
62+
if err != nil {
63+
t.Fatalf("failed to read first TOML document: %v", err)
64+
}
65+
if firstDocuments.Len() != 1 {
66+
t.Fatalf("expected first document count to be 1, got %d", firstDocuments.Len())
67+
}
68+
test.AssertResult(t, "Foobar", firstDocuments.Front().Value.(*CandidateNode).Content[1].Value)
69+
70+
secondDocuments, err := ReadDocuments(strings.NewReader("id = \"Banana\"\n"), decoder)
71+
if err != nil {
72+
t.Fatalf("failed to read second TOML document: %v", err)
73+
}
74+
if secondDocuments.Len() != 1 {
75+
t.Fatalf("expected second document count to be 1, got %d", secondDocuments.Len())
76+
}
77+
test.AssertResult(t, "Banana", secondDocuments.Front().Value.(*CandidateNode).Content[1].Value)
78+
}

pkg/yqlib/decoder_toml.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ func (dec *tomlDecoder) Init(reader io.Reader) error {
4444
}
4545
dec.pendingComments = make([]string, 0)
4646
dec.firstContentSeen = false
47+
dec.finished = false
4748
return nil
4849
}
4950

0 commit comments

Comments
 (0)