1
0
mirror of https://github.com/DATA-DOG/go-sqlmock.git synced 2025-03-17 20:48:01 +02:00

fixes csv parse errors being silently ignored

This commit is contained in:
Ivo Gosemann 2023-05-04 19:19:09 +02:00
parent 44e746a20e
commit a1ad26d110
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,8 +209,11 @@ 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 {
break if errors.Is(err, io.EOF) {
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))

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()