From 97355c902b84dd4531c397cd94b727b71c9528a1 Mon Sep 17 00:00:00 2001 From: terminalchai Date: Wed, 18 Mar 2026 02:47:47 +0530 Subject: [PATCH] fix: reset TOML decoder between files --- pkg/yqlib/all_at_once_evaluator_test.go | 22 ++++++++++++++++++++++ pkg/yqlib/decoder_toml.go | 1 + 2 files changed, 23 insertions(+) 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 }