Skip to content

Commit

Permalink
Decoder should store its own copy of the header
Browse files Browse the repository at this point in the history
  • Loading branch information
jszwec committed May 28, 2018
1 parent 7d00175 commit d0aa9ba
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 6 deletions.
4 changes: 4 additions & 0 deletions decoder.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,10 @@ func NewDecoder(r Reader, header ...string) (dec *Decoder, err error) {
}
}

h := make([]string, len(header))
copy(h, header)
header = h

m := make(map[string]int, len(header))
for i, h := range header {
m[h] = i
Expand Down
11 changes: 5 additions & 6 deletions decoder_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package csvutil
import (
"bytes"
"encoding/base64"
"encoding/csv"
"encoding/json"
"io"
"math"
Expand Down Expand Up @@ -725,7 +724,7 @@ string,"{""key"":""value""}"

for _, f := range fixtures {
t.Run(f.desc, func(t *testing.T) {
r, err := NewDecoder(csv.NewReader(strings.NewReader(f.in)), f.inheader...)
r, err := NewDecoder(newCSVReader(strings.NewReader(f.in)), f.inheader...)
if err != nil {
t.Fatal(err)
}
Expand Down Expand Up @@ -795,7 +794,7 @@ string,"{""key"":""value""}"
}

for _, f := range fixtures {
r, err := NewDecoder(csv.NewReader(strings.NewReader("string\ns")))
r, err := NewDecoder(newCSVReader(strings.NewReader("string\ns")))
if err != nil {
t.Fatal(err)
}
Expand All @@ -816,7 +815,7 @@ string,"{""key"":""value""}"
Col2 string `csv:"col2"`
}
data := []byte("1,1,1")
r, err := NewDecoder(csv.NewReader(bytes.NewReader(data)), "col1", "col2")
r, err := NewDecoder(newCSVReader(bytes.NewReader(data)), "col1", "col2")
if err != nil {
t.Fatal(err)
}
Expand Down Expand Up @@ -853,7 +852,7 @@ s,1,3.14,true
Foo int
}

dec, err := NewDecoder(csv.NewReader(bytes.NewReader(data)))
dec, err := NewDecoder(newCSVReader(bytes.NewReader(data)))
if err != nil {
t.Errorf("want err=nil; got %v", err)
}
Expand Down Expand Up @@ -899,7 +898,7 @@ s,1,3.14,true

t.Run("decode NaN", func(t *testing.T) {
data := []byte("F1,F2,F3,F4,F5\nNaN,nan,NAN,nAn,NaN")
dec, err := NewDecoder(csv.NewReader(bytes.NewReader(data)))
dec, err := NewDecoder(newCSVReader(bytes.NewReader(data)))
if err != nil {
t.Fatalf("want err=nil; got %v", err)
}
Expand Down

0 comments on commit d0aa9ba

Please sign in to comment.