From 44e635fc27360c855400e7491769957db9b2efe5 Mon Sep 17 00:00:00 2001 From: Chris Chua Date: Tue, 4 Apr 2023 15:09:22 +0800 Subject: [PATCH 1/3] Update expectations_go18.go to accept WillReturnRows(nil) The addition of the resultset logic caused a nil pointer dereference panic whenever nil is used as an input. --- expectations_go18.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/expectations_go18.go b/expectations_go18.go index 767ebd4..ccdc2e1 100644 --- a/expectations_go18.go +++ b/expectations_go18.go @@ -16,7 +16,7 @@ func (e *ExpectedQuery) WillReturnRows(rows ...*Rows) *ExpectedQuery { sets := make([]*Rows, len(rows)) for i, r := range rows { sets[i] = r - if r.def != nil { + if r != nil && r.def != nil { defs++ } } From 645bbfbb7d8482db2b660b8ee976b5f22d59dfc5 Mon Sep 17 00:00:00 2001 From: Neenad Ingole Date: Mon, 12 Aug 2024 20:36:12 +0200 Subject: [PATCH 2/3] Add test for WillReturnRows function returns Nil --- expectations_test.go | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/expectations_test.go b/expectations_test.go index afda582..d99f1ab 100644 --- a/expectations_test.go +++ b/expectations_test.go @@ -101,3 +101,26 @@ func TestCustomValueConverterQueryScan(t *testing.T) { t.Error(err) } } + +func TestQueryWillReturnsNil(t *testing.T) { + t.Parallel() + + db, mock, err := New() + if err != nil { + t.Fatal(err) + } + defer db.Close() + + defer func() { + if err := recover(); err != nil { + t.Error(err) + } + }() + + mock.ExpectQuery("SELECT (.+) FROM users WHERE (.+)").WithArgs("test").WillReturnRows(nil) + query := "SELECT name, email FROM users WHERE name = ?" + _, err = mock.(*sqlmock).Query(query, []driver.Value{"test"}) + if err != nil { + t.Error(err) + } +} From f3575cd527c779d3294c415bb19afe52794c9581 Mon Sep 17 00:00:00 2001 From: Neenad Ingole Date: Mon, 12 Aug 2024 21:02:09 +0200 Subject: [PATCH 3/3] add missing closing curly brace --- expectations_test.go | 1 + 1 file changed, 1 insertion(+) diff --git a/expectations_test.go b/expectations_test.go index 0d1d5d1..ff9f842 100644 --- a/expectations_test.go +++ b/expectations_test.go @@ -145,4 +145,5 @@ func TestQueryWillReturnsNil(t *testing.T) { _, err = mock.(*sqlmock).Query(query, []driver.Value{"test"}) if err != nil { t.Error(err) + } }