modify empty table decode

This commit is contained in:
Louis Lombard 2025-09-08 10:08:18 +02:00 committed by Mike Farah
parent 6d7aa384c4
commit 35d338cc24
2 changed files with 38 additions and 7 deletions

View File

@ -282,13 +282,13 @@ func (dec *tomlDecoder) processTable(currentNode *toml.Node) (bool, error) {
tableValue = dec.parser.Expression()
// next expression is not table data, so we are done
if tableValue.Kind != toml.KeyValue {
log.Debug("got an empty table, returning")
return true, nil
}
runAgainstCurrentExp, err = dec.decodeKeyValuesIntoMap(tableNodeValue, tableValue)
if err != nil && !errors.Is(err, io.EOF) {
return false, err
log.Debug("got an empty table")
runAgainstCurrentExp = true
} else {
runAgainstCurrentExp, err = dec.decodeKeyValuesIntoMap(tableNodeValue, tableValue)
if err != nil && !errors.Is(err, io.EOF) {
return false, err
}
}
}

View File

@ -23,6 +23,7 @@ street = "first street"
[owner]
name = "Tom Preston-Werner"
`
var expectedTableArrayBeforeOwners = `owner:
addresses:
- street: first street
@ -67,6 +68,29 @@ var emptyTable = `
var emptyTableExpected = "dependencies: {}\n"
var multipleEmptyTables = `
[firstEmptyTable]
[firstTableWithContent]
key = "value"
[secondEmptyTable]
[thirdEmptyTable]
[secondTableWithContent]
key = "value"
[fourthEmptyTable]
[fifthEmptyTable]
`
var expectedMultipleEmptyTables = `firstEmptyTable: {}
firstTableWithContent:
key: value
secondEmptyTable: {}
thirdEmptyTable: {}
secondTableWithContent:
key: value
fourthEmptyTable: {}
fifthEmptyTable: {}
`
var sampleWithHeader = `
[servers]
@ -238,6 +262,13 @@ var tomlScenarios = []formatScenario{
expected: expectedSampleWithHeader,
scenarioType: "decode",
},
{
description: "Parse: multiple empty tables",
skipDoc: true,
input: multipleEmptyTables,
expected: expectedMultipleEmptyTables,
scenarioType: "decode",
},
}
func testTomlScenario(t *testing.T, s formatScenario) {