diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2022-05-21 16:06:12 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-21 16:06:12 (GMT) |
commit | e5d8dbdd304935dbd0631ee9605efb501332f792 (patch) | |
tree | 5030c44e602aa6286164e28e288fad9f0cefdf47 /Lib/test/test_sqlite3 | |
parent | f9d6c59917435980fbe1b58c57257c45bfed2244 (diff) | |
download | cpython-e5d8dbdd304935dbd0631ee9605efb501332f792.zip cpython-e5d8dbdd304935dbd0631ee9605efb501332f792.tar.gz cpython-e5d8dbdd304935dbd0631ee9605efb501332f792.tar.bz2 |
Clean up the sqlite3 tests (GH-93056)
Remove helper managed_connect(). Use memory_database() or
contextlib.closing() + addCleanup(unlink) instead.
Diffstat (limited to 'Lib/test/test_sqlite3')
-rw-r--r-- | Lib/test/test_sqlite3/test_dbapi.py | 46 | ||||
-rw-r--r-- | Lib/test/test_sqlite3/test_regression.py | 10 |
2 files changed, 23 insertions, 33 deletions
diff --git a/Lib/test/test_sqlite3/test_dbapi.py b/Lib/test/test_sqlite3/test_dbapi.py index 744c4ad..0be4042 100644 --- a/Lib/test/test_sqlite3/test_dbapi.py +++ b/Lib/test/test_sqlite3/test_dbapi.py @@ -36,18 +36,6 @@ from os import SEEK_SET, SEEK_CUR, SEEK_END from test.support.os_helper import TESTFN, TESTFN_UNDECODABLE, unlink, temp_dir, FakePath -# Helper for tests using TESTFN -@contextlib.contextmanager -def managed_connect(*args, in_mem=False, **kwargs): - cx = sqlite.connect(*args, **kwargs) - try: - yield cx - finally: - cx.close() - if not in_mem: - unlink(TESTFN) - - # Helper for temporary memory databases def memory_database(*args, **kwargs): cx = sqlite.connect(":memory:", *args, **kwargs) @@ -331,7 +319,7 @@ class ModuleTests(unittest.TestCase): @unittest.skipIf(sqlite.sqlite_version_info <= (3, 7, 16), "Requires SQLite 3.7.16 or newer") def test_extended_error_code_on_exception(self): - with managed_connect(":memory:", in_mem=True) as con: + with memory_database() as con: with con: con.execute("create table t(t integer check(t > 0))") errmsg = "constraint failed" @@ -389,7 +377,7 @@ class ConnectionTests(unittest.TestCase): def test_failed_open(self): YOU_CANNOT_OPEN_THIS = "/foo/bar/bla/23534/mydb.db" with self.assertRaises(sqlite.OperationalError): - con = sqlite.connect(YOU_CANNOT_OPEN_THIS) + sqlite.connect(YOU_CANNOT_OPEN_THIS) def test_close(self): self.cx.close() @@ -653,7 +641,9 @@ class OpenTests(unittest.TestCase): """ Checks that we can successfully connect to a database using an object that is PathLike, i.e. has __fspath__(). """ path = FakePath(TESTFN) - with managed_connect(path) as cx: + self.addCleanup(unlink, path) + self.assertFalse(os.path.exists(path)) + with contextlib.closing(sqlite.connect(path)) as cx: self.assertTrue(os.path.exists(path)) cx.execute(self._sql) @@ -663,23 +653,26 @@ class OpenTests(unittest.TestCase): def test_open_with_undecodable_path(self): path = TESTFN_UNDECODABLE self.addCleanup(unlink, path) - with managed_connect(path, in_mem=True) as cx: + self.assertFalse(os.path.exists(path)) + with contextlib.closing(sqlite.connect(path)) as cx: self.assertTrue(os.path.exists(path)) cx.execute(self._sql) def test_open_uri(self): path = TESTFN + self.addCleanup(unlink, path) uri = "file:" + urllib.parse.quote(os.fsencode(path)) self.assertFalse(os.path.exists(path)) - with managed_connect(uri, uri=True) as cx: + with contextlib.closing(sqlite.connect(uri, uri=True)) as cx: self.assertTrue(os.path.exists(path)) cx.execute(self._sql) def test_open_unquoted_uri(self): path = TESTFN + self.addCleanup(unlink, path) uri = "file:" + path self.assertFalse(os.path.exists(path)) - with managed_connect(uri, uri=True) as cx: + with contextlib.closing(sqlite.connect(uri, uri=True)) as cx: self.assertTrue(os.path.exists(path)) cx.execute(self._sql) @@ -695,7 +688,7 @@ class OpenTests(unittest.TestCase): sqlite.connect(path).close() self.assertTrue(os.path.exists(path)) # Cannot modify new DB - with managed_connect(uri, uri=True) as cx: + with contextlib.closing(sqlite.connect(uri, uri=True)) as cx: with self.assertRaises(sqlite.OperationalError): cx.execute(self._sql) @@ -704,14 +697,12 @@ class OpenTests(unittest.TestCase): @unittest.skipUnless(TESTFN_UNDECODABLE, "only works if there are undecodable paths") def test_open_undecodable_uri(self): path = TESTFN_UNDECODABLE + self.addCleanup(unlink, path) uri = "file:" + urllib.parse.quote(path) self.assertFalse(os.path.exists(path)) - try: - with managed_connect(uri, uri=True, in_mem=True) as cx: - self.assertTrue(os.path.exists(path)) - cx.execute(self._sql) - finally: - unlink(path) + with contextlib.closing(sqlite.connect(uri, uri=True)) as cx: + self.assertTrue(os.path.exists(path)) + cx.execute(self._sql) def test_factory_database_arg(self): def factory(database, *args, **kwargs): @@ -722,12 +713,11 @@ class OpenTests(unittest.TestCase): for database in (TESTFN, os.fsencode(TESTFN), FakePath(TESTFN), FakePath(os.fsencode(TESTFN))): database_arg = None - with sqlite.connect(database, factory=factory): - pass + sqlite.connect(database, factory=factory).close() self.assertEqual(database_arg, database) def test_database_keyword(self): - with sqlite.connect(database=":memory:") as cx: + with contextlib.closing(sqlite.connect(database=":memory:")) as cx: self.assertEqual(type(cx), sqlite.Connection) diff --git a/Lib/test/test_sqlite3/test_regression.py b/Lib/test/test_sqlite3/test_regression.py index 19bb84b..0b727ce 100644 --- a/Lib/test/test_sqlite3/test_regression.py +++ b/Lib/test/test_sqlite3/test_regression.py @@ -28,7 +28,7 @@ import functools from test import support from unittest.mock import patch -from test.test_sqlite3.test_dbapi import memory_database, managed_connect, cx_limit +from test.test_sqlite3.test_dbapi import memory_database, cx_limit class RegressionTests(unittest.TestCase): @@ -422,7 +422,7 @@ class RegressionTests(unittest.TestCase): self.assertEqual(val, b'') def test_table_lock_cursor_replace_stmt(self): - with managed_connect(":memory:", in_mem=True) as con: + with memory_database() as con: cur = con.cursor() cur.execute("create table t(t)") cur.executemany("insert into t values(?)", @@ -433,7 +433,7 @@ class RegressionTests(unittest.TestCase): con.commit() def test_table_lock_cursor_dealloc(self): - with managed_connect(":memory:", in_mem=True) as con: + with memory_database() as con: con.execute("create table t(t)") con.executemany("insert into t values(?)", ((v,) for v in range(5))) @@ -444,7 +444,7 @@ class RegressionTests(unittest.TestCase): con.commit() def test_table_lock_cursor_non_readonly_select(self): - with managed_connect(":memory:", in_mem=True) as con: + with memory_database() as con: con.execute("create table t(t)") con.executemany("insert into t values(?)", ((v,) for v in range(5))) @@ -459,7 +459,7 @@ class RegressionTests(unittest.TestCase): con.commit() def test_executescript_step_through_select(self): - with managed_connect(":memory:", in_mem=True) as con: + with memory_database() as con: values = [(v,) for v in range(5)] with con: con.execute("create table t(t)") |