1
0
mirror of https://github.com/DATA-DOG/go-sqlmock.git synced 2025-03-19 20:57:50 +02:00

Merge pull request #315 from IvoGoman/fix/invalidcsvstring

fixes csv parse errors being silently ignored
This commit is contained in:
wangxiaolei 2023-05-10 21:41:46 +08:00 committed by GitHub
commit 3476f31d8f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 2 deletions

View File

@ -4,6 +4,7 @@ import (
"bytes" "bytes"
"database/sql/driver" "database/sql/driver"
"encoding/csv" "encoding/csv"
"errors"
"fmt" "fmt"
"io" "io"
"strings" "strings"
@ -208,9 +209,12 @@ func (r *Rows) FromCSVString(s string) *Rows {
for { for {
res, err := csvReader.Read() res, err := csvReader.Read()
if err != nil || res == nil { if err != nil {
if errors.Is(err, io.EOF) {
break break
} }
panic(fmt.Sprintf("Parsing CSV string failed: %s", err.Error()))
}
row := make([]driver.Value, len(r.cols)) row := make([]driver.Value, len(r.cols))
for i, v := range res { for i, v := range res {

View File

@ -461,6 +461,15 @@ func TestCSVRowParser(t *testing.T) {
} }
} }
func TestCSVParserInvalidInput(t *testing.T) {
defer func() {
recover()
}()
_ = NewRows([]string{"col1", "col2"}).FromCSVString("a,\"NULL\"\"")
// shouldn't reach here
t.Error("expected panic from parsing invalid CSV")
}
func TestWrongNumberOfValues(t *testing.T) { func TestWrongNumberOfValues(t *testing.T) {
// Open new mock database // Open new mock database
db, mock, err := New() db, mock, err := New()