mirror of https://github.com/golang/go.git
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
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue