Skip to content

Commit 3ca1e6a

Browse files
authored
Fix python multiline EOF error (#309)
1 parent b505416 commit 3ca1e6a

File tree

3 files changed

+26
-6
lines changed

3 files changed

+26
-6
lines changed

ini_test.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1562,3 +1562,26 @@ func TestPythonMultiline(t *testing.T) {
15621562
testData.Value3,
15631563
)
15641564
}
1565+
1566+
func TestPythonMultiline_EOF(t *testing.T) {
1567+
if runtime.GOOS == "windows" {
1568+
t.Skip("Skipping testing on Windows")
1569+
}
1570+
1571+
path := filepath.Join("testdata", "multiline_eof.ini")
1572+
f, err := LoadSources(LoadOptions{
1573+
AllowPythonMultilineValues: true,
1574+
ReaderBufferSize: 64 * 1024,
1575+
}, path)
1576+
require.NoError(t, err)
1577+
require.NotNil(t, f)
1578+
assert.Len(t, f.Sections(), 1)
1579+
1580+
defaultSection := f.Section("")
1581+
assert.NotNil(t, f.Section(""))
1582+
1583+
var testData testData
1584+
err = defaultSection.MapTo(&testData)
1585+
require.NoError(t, err)
1586+
assert.Equal(t, "some text here\n\tsome more text here 2", testData.Value1)
1587+
}

parser.go

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -304,12 +304,7 @@ func (p *parser) readPythonMultilines(line string, bufferSize int) (string, erro
304304

305305
for {
306306
peekData, peekErr := peekBuffer.ReadBytes('\n')
307-
if peekErr != nil {
308-
if peekErr == io.EOF {
309-
p.debug("readPythonMultilines: io.EOF, peekData: %q, line: %q", string(peekData), line)
310-
return line, nil
311-
}
312-
307+
if peekErr != nil && peekErr != io.EOF {
313308
p.debug("readPythonMultilines: failed to peek with error: %v", peekErr)
314309
return "", peekErr
315310
}

testdata/multiline_eof.ini

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
value1 = some text here
2+
some more text here 2

0 commit comments

Comments
 (0)