mirror of
https://github.com/golang/go
synced 2024-11-18 17:54:57 -07: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:
parent
64471ae762
commit
eea86de656
@ -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
|
||||
|
@ -129,7 +129,6 @@ field"`,
|
||||
{
|
||||
Name: "BadDoubleQuotes",
|
||||
Input: `a""b,c`,
|
||||
Output: [][]string{{`a""b`, `c`}},
|
||||
Error: `bare " in non-quoted-field`, Line: 1, Column: 1,
|
||||
},
|
||||
{
|
||||
@ -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) {
|
||||
|
Loading…
Reference in New Issue
Block a user