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"
"database/sql/driver"
"encoding/csv"
"errors"
"fmt"
"io"
"strings"
@ -208,8 +209,11 @@ func (r *Rows) FromCSVString(s string) *Rows {
for {
res, err := csvReader.Read()
if err != nil || res == nil {
break
if err != nil {
if errors.Is(err, io.EOF) {
break
}
panic(fmt.Sprintf("Parsing CSV string failed: %s", err.Error()))
}
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) {
// Open new mock database
db, mock, err := New()