diff --git a/test/db.py b/test/db.py index 5a97e83d..b6e45889 100644 --- a/test/db.py +++ b/test/db.py @@ -5,11 +5,12 @@ class DBTest(webtest.TestCase): dbname = 'postgres' - def setUpAll(self): + def setUp(self): + web.config._hasPooling = False webtest.setup_database(self.dbname) - web.query("CREATE TABLE person (name text, email text)") + web.query("CREATE TABLE person (name text unique, email text)") - def tearDownAll(self): + def tearDown(self): # there might be some error with the current connection, delete from a new connection webtest.setup_database(self.dbname) web.query('DROP TABLE person') @@ -18,6 +19,14 @@ def testUnicode(self): """Bug#177265: unicode queries throw errors""" web.select('person', where='name=$name', vars={'name': u'\xf4'}) + def testWrongQuery(self): + # It should be possible to run a correct query after getting an error from a wrong query. + try: + web.select('wrong_table') + except: + pass + web.select('person') + class SqliteTest(DBTest): dbname = "sqlite" diff --git a/web/db.py b/web/db.py index 386bab19..2da17b32 100644 --- a/web/db.py +++ b/web/db.py @@ -358,7 +358,7 @@ def db_execute(cur, sql_query, dorollback=True): except: if web.config.get('db_printing'): print >> web.debug, 'ERR:', str(sql_query) - if dorollback: rollback(care=False) + if dorollback and not web.ctx.db_transaction: web.ctx.db.rollback() raise if web.config.get('db_printing'):