aboutsummaryrefslogtreecommitdiff
path: root/src/pkg/database/sql/sql_test.go
diff options
context:
space:
mode:
authorBrad Fitzpatrick <bradfitz@golang.org>2012-03-06 14:10:58 -0800
committerBrad Fitzpatrick <bradfitz@golang.org>2012-03-06 14:10:58 -0800
commit48eacd90a8ad54baf8c8037cb8d753e31e2d4bfd (patch)
treefb70cdfe7e807ad93cb264efcd65994583de828a /src/pkg/database/sql/sql_test.go
parent97b13acb6704d5ae2b641d7d8343424ce9156931 (diff)
downloadgo-48eacd90a8ad54baf8c8037cb8d753e31e2d4bfd.tar.xz
database/sql: fix typo bug resulting in double-Prepare
Bug reported by Blake Mizerany found while writing his new Postgres driver. R=golang-dev, blake.mizerany CC=golang-dev https://golang.org/cl/5754057
Diffstat (limited to 'src/pkg/database/sql/sql_test.go')
-rw-r--r--src/pkg/database/sql/sql_test.go15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/pkg/database/sql/sql_test.go b/src/pkg/database/sql/sql_test.go
index c985a10bee..e6b92a941b 100644
--- a/src/pkg/database/sql/sql_test.go
+++ b/src/pkg/database/sql/sql_test.go
@@ -47,9 +47,19 @@ func closeDB(t *testing.T, db *DB) {
}
}
+// numPrepares assumes that db has exactly 1 idle conn and returns
+// its count of calls to Prepare
+func numPrepares(t *testing.T, db *DB) int {
+ if n := len(db.freeConn); n != 1 {
+ t.Fatalf("free conns = %d; want 1", n)
+ }
+ return db.freeConn[0].(*fakeConn).numPrepare
+}
+
func TestQuery(t *testing.T) {
db := newTestDB(t, "people")
defer closeDB(t, db)
+ prepares0 := numPrepares(t, db)
rows, err := db.Query("SELECT|people|age,name|")
if err != nil {
t.Fatalf("Query: %v", err)
@@ -83,7 +93,10 @@ func TestQuery(t *testing.T) {
// And verify that the final rows.Next() call, which hit EOF,
// also closed the rows connection.
if n := len(db.freeConn); n != 1 {
- t.Errorf("free conns after query hitting EOF = %d; want 1", n)
+ t.Fatalf("free conns after query hitting EOF = %d; want 1", n)
+ }
+ if prepares := numPrepares(t, db) - prepares0; prepares != 1 {
+ t.Errorf("executed %d Prepare statements; want 1", prepares)
}
}