mirror of
https://github.com/python/cpython.git
synced 2025-11-01 06:01:29 +00:00
gh-105539: Explict resource management for connection objects in sqlite3 tests (#108017)
- Use memory_database() helper - Move test utility functions to util.py - Add convenience memory database mixin - Add check() helper for closed connection tests
This commit is contained in:
parent
c9d83f93d8
commit
1344cfac43
9 changed files with 371 additions and 385 deletions
|
|
@ -28,7 +28,8 @@
|
|||
from test.support.os_helper import TESTFN, unlink
|
||||
from test.support.script_helper import assert_python_ok
|
||||
|
||||
from test.test_sqlite3.test_dbapi import memory_database
|
||||
from .util import memory_database
|
||||
from .util import MemoryDatabaseMixin
|
||||
|
||||
|
||||
TIMEOUT = LOOPBACK_TIMEOUT / 10
|
||||
|
|
@ -132,14 +133,14 @@ def test_locking(self):
|
|||
|
||||
def test_rollback_cursor_consistency(self):
|
||||
"""Check that cursors behave correctly after rollback."""
|
||||
con = sqlite.connect(":memory:")
|
||||
cur = con.cursor()
|
||||
cur.execute("create table test(x)")
|
||||
cur.execute("insert into test(x) values (5)")
|
||||
cur.execute("select 1 union select 2 union select 3")
|
||||
with memory_database() as con:
|
||||
cur = con.cursor()
|
||||
cur.execute("create table test(x)")
|
||||
cur.execute("insert into test(x) values (5)")
|
||||
cur.execute("select 1 union select 2 union select 3")
|
||||
|
||||
con.rollback()
|
||||
self.assertEqual(cur.fetchall(), [(1,), (2,), (3,)])
|
||||
con.rollback()
|
||||
self.assertEqual(cur.fetchall(), [(1,), (2,), (3,)])
|
||||
|
||||
def test_multiple_cursors_and_iternext(self):
|
||||
# gh-94028: statements are cleared and reset in cursor iternext.
|
||||
|
|
@ -218,10 +219,7 @@ def test_no_duplicate_rows_after_rollback_new_query(self):
|
|||
|
||||
|
||||
|
||||
class SpecialCommandTests(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.con = sqlite.connect(":memory:")
|
||||
self.cur = self.con.cursor()
|
||||
class SpecialCommandTests(MemoryDatabaseMixin, unittest.TestCase):
|
||||
|
||||
def test_drop_table(self):
|
||||
self.cur.execute("create table test(i)")
|
||||
|
|
@ -233,14 +231,8 @@ def test_pragma(self):
|
|||
self.cur.execute("insert into test(i) values (5)")
|
||||
self.cur.execute("pragma count_changes=1")
|
||||
|
||||
def tearDown(self):
|
||||
self.cur.close()
|
||||
self.con.close()
|
||||
|
||||
|
||||
class TransactionalDDL(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.con = sqlite.connect(":memory:")
|
||||
class TransactionalDDL(MemoryDatabaseMixin, unittest.TestCase):
|
||||
|
||||
def test_ddl_does_not_autostart_transaction(self):
|
||||
# For backwards compatibility reasons, DDL statements should not
|
||||
|
|
@ -268,9 +260,6 @@ def test_transactional_ddl(self):
|
|||
with self.assertRaises(sqlite.OperationalError):
|
||||
self.con.execute("select * from test")
|
||||
|
||||
def tearDown(self):
|
||||
self.con.close()
|
||||
|
||||
|
||||
class IsolationLevelFromInit(unittest.TestCase):
|
||||
CREATE = "create table t(t)"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue