diff options
Diffstat (limited to 'libgo/go/database/sql/fakedb_test.go')
-rw-r--r-- | libgo/go/database/sql/fakedb_test.go | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/libgo/go/database/sql/fakedb_test.go b/libgo/go/database/sql/fakedb_test.go index a993fd46ede..8cbbb29a7c2 100644 --- a/libgo/go/database/sql/fakedb_test.go +++ b/libgo/go/database/sql/fakedb_test.go @@ -89,7 +89,10 @@ type fakeConn struct { stmtsMade int stmtsClosed int numPrepare int - bad bool + + // bad connection tests; see isBad() + bad bool + stickyBad bool } func (c *fakeConn) incrStat(v *int) { @@ -243,13 +246,15 @@ func (db *fakeDB) columnType(table, column string) (typ string, ok bool) { } func (c *fakeConn) isBad() bool { - // if not simulating bad conn, do nothing - if !c.bad { + if c.stickyBad { + return true + } else if c.bad { + // alternate between bad conn and not bad conn + c.db.badConn = !c.db.badConn + return c.db.badConn + } else { return false } - // alternate between bad conn and not bad conn - c.db.badConn = !c.db.badConn - return c.db.badConn } func (c *fakeConn) Begin() (driver.Tx, error) { @@ -466,7 +471,7 @@ func (c *fakeConn) Prepare(query string) (driver.Stmt, error) { panic("nil c.db; conn = " + fmt.Sprintf("%#v", c)) } - if hookPrepareBadConn != nil && hookPrepareBadConn() { + if c.stickyBad || (hookPrepareBadConn != nil && hookPrepareBadConn()) { return nil, driver.ErrBadConn } @@ -529,7 +534,7 @@ func (s *fakeStmt) Exec(args []driver.Value) (driver.Result, error) { return nil, errClosed } - if hookExecBadConn != nil && hookExecBadConn() { + if s.c.stickyBad || (hookExecBadConn != nil && hookExecBadConn()) { return nil, driver.ErrBadConn } @@ -613,7 +618,7 @@ func (s *fakeStmt) Query(args []driver.Value) (driver.Rows, error) { return nil, errClosed } - if hookQueryBadConn != nil && hookQueryBadConn() { + if s.c.stickyBad || (hookQueryBadConn != nil && hookQueryBadConn()) { return nil, driver.ErrBadConn } |