diff options
| author | Brad Fitzpatrick <bradfitz@golang.org> | 2012-03-06 14:10:58 -0800 |
|---|---|---|
| committer | Brad Fitzpatrick <bradfitz@golang.org> | 2012-03-06 14:10:58 -0800 |
| commit | 48eacd90a8ad54baf8c8037cb8d753e31e2d4bfd (patch) | |
| tree | fb70cdfe7e807ad93cb264efcd65994583de828a /src/pkg/database/sql/sql_test.go | |
| parent | 97b13acb6704d5ae2b641d7d8343424ce9156931 (diff) | |
| download | go-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.go | 15 |
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) } } |
