Commit eea86de6 authored by Paul Borman's avatar Paul Borman Committed by Rob Pike

csv: fix issue 2366 - overly aggressive TrimLeadingSpace

Address the issue coalescing two records together when TrimLeadingSpace
is set to true.

The input

        a,b,
        c,d,e

Would result with a singled a,b,c,d,e record.
With TrailingComma set to true it should give two records.
With TrailingComma set to false it should be an error.

Fixes #2366.

R=golang-dev, go.peter.90, r
CC=golang-dev
https://golang.org/cl/5284046
parent 64471ae7
......@@ -267,7 +267,7 @@ func (r *Reader) parseField() (haveField bool, delim int, err os.Error) {
}
if r.TrimLeadingSpace {
for unicode.IsSpace(rune) {
for rune != '\n' && unicode.IsSpace(rune) {
rune, err = r.readRune()
if err != nil {
return false, 0, err
......@@ -355,7 +355,7 @@ func (r *Reader) parseField() (haveField bool, delim int, err os.Error) {
c := r.column
rune, err = r.readRune()
if r.TrimLeadingSpace {
for unicode.IsSpace(rune) {
for rune != '\n' && unicode.IsSpace(rune) {
rune, err = r.readRune()
if err != nil {
break
......
......@@ -127,10 +127,9 @@ field"`,
Output: [][]string{{`a""b`, `c`}},
},
{
Name: "BadDoubleQuotes",
Input: `a""b,c`,
Output: [][]string{{`a""b`, `c`}},
Error: `bare " in non-quoted-field`, Line: 1, Column: 1,
Name: "BadDoubleQuotes",
Input: `a""b,c`,
Error: `bare " in non-quoted-field`, Line: 1, Column: 1,
},
{
Name: "TrimQuote",
......@@ -231,6 +230,23 @@ x,,,
{"", "", "", ""},
},
},
{
Name: "Issue 2366",
TrailingComma: true,
TrimLeadingSpace: true,
Input: "a,b,\nc,d,e",
Output: [][]string{
{"a", "b", ""},
{"c", "d", "e"},
},
},
{
Name: "Issue 2366a",
TrailingComma: false,
TrimLeadingSpace: true,
Input: "a,b,\nc,d,e",
Error: "extra delimiter at end of line",
},
}
func TestRead(t *testing.T) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment