summaryrefslogtreecommitdiff
path: root/src/mailman/database/sqlite.py
diff options
context:
space:
mode:
authorBarry Warsaw2012-07-26 00:22:19 -0400
committerBarry Warsaw2012-07-26 00:22:19 -0400
commit6724d3688f5cf612f722a2d7504eeb50caf8dbe9 (patch)
tree5323a0b94824e7353569c4146b3e94f43aad98de /src/mailman/database/sqlite.py
parent01415190ab44e69a8f09a6411564a7cb288404e8 (diff)
parente08c2d6d9ef6c4e6d78c054cecd5829c5711617e (diff)
downloadmailman-6724d3688f5cf612f722a2d7504eeb50caf8dbe9.tar.gz
mailman-6724d3688f5cf612f722a2d7504eeb50caf8dbe9.tar.zst
mailman-6724d3688f5cf612f722a2d7504eeb50caf8dbe9.zip
Diffstat (limited to 'src/mailman/database/sqlite.py')
-rw-r--r--src/mailman/database/sqlite.py32
1 files changed, 30 insertions, 2 deletions
diff --git a/src/mailman/database/sqlite.py b/src/mailman/database/sqlite.py
index 2677d0d71..8415aa1ee 100644
--- a/src/mailman/database/sqlite.py
+++ b/src/mailman/database/sqlite.py
@@ -17,19 +17,25 @@
"""SQLite database support."""
-from __future__ import absolute_import, unicode_literals
+from __future__ import absolute_import, print_function, unicode_literals
__metaclass__ = type
__all__ = [
'SQLiteDatabase',
+ 'make_temporary',
]
import os
+import types
+import shutil
+import tempfile
+from functools import partial
from urlparse import urlparse
from mailman.database.base import StormBaseDatabase
+from mailman.testing.helpers import configuration
@@ -41,7 +47,7 @@ class SQLiteDatabase(StormBaseDatabase):
def _database_exists(self, store):
"""See `BaseDatabase`."""
table_query = 'select tbl_name from sqlite_master;'
- table_names = set(item[0] for item in
+ table_names = set(item[0] for item in
store.execute(table_query))
return 'version' in table_names
@@ -54,3 +60,25 @@ class SQLiteDatabase(StormBaseDatabase):
# Ignore errors
if fd > 0:
os.close(fd)
+
+
+
+# Test suite adapter for ITemporaryDatabase.
+
+def _cleanup(self, tempdir):
+ shutil.rmtree(tempdir)
+
+
+def make_temporary(database):
+ """Adapts by monkey patching an existing SQLite IDatabase."""
+ tempdir = tempfile.mkdtemp()
+ url = 'sqlite:///' + os.path.join(tempdir, 'mailman.db')
+ with configuration('database', url=url):
+ database.initialize()
+ database._cleanup = types.MethodType(
+ partial(_cleanup, tempdir=tempdir),
+ database)
+ # bool column values in SQLite must be integers.
+ database.FALSE = 0
+ database.TRUE = 1
+ return database