1
0
mirror of https://github.com/golang/go synced 2024-09-30 22:18:32 -06:00

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
This commit is contained in:
Paul Borman 2011-10-17 11:10:39 -07:00 committed by Rob Pike
parent 64471ae762
commit eea86de656
2 changed files with 22 additions and 6 deletions

View File

@ -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

View File

@ -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) {