summaryrefslogtreecommitdiff
path: root/src/mailman/database/sqlite.py
diff options
context:
space:
mode:
authorBarry Warsaw2012-07-23 10:40:53 -0400
committerBarry Warsaw2012-07-23 10:40:53 -0400
commit5598b9eea196e4085aa91aaf8a0cacaffa200355 (patch)
treed3685e9c193705ecee93bc573af960daff874e9e /src/mailman/database/sqlite.py
parentb2e4c6502c5ff4cdf9488be17556a6d39bbbde6b (diff)
downloadmailman-5598b9eea196e4085aa91aaf8a0cacaffa200355.tar.gz
mailman-5598b9eea196e4085aa91aaf8a0cacaffa200355.tar.zst
mailman-5598b9eea196e4085aa91aaf8a0cacaffa200355.zip
Diffstat (limited to 'src/mailman/database/sqlite.py')
-rw-r--r--src/mailman/database/sqlite.py24
1 files changed, 23 insertions, 1 deletions
diff --git a/src/mailman/database/sqlite.py b/src/mailman/database/sqlite.py
index 2677d0d71..4e5df55a5 100644
--- a/src/mailman/database/sqlite.py
+++ b/src/mailman/database/sqlite.py
@@ -26,6 +26,8 @@ __all__ = [
import os
+import shutil
+import tempfile
from urlparse import urlparse
@@ -33,6 +35,16 @@ from mailman.database.base import StormBaseDatabase
+class _TemporaryDB:
+ def __init__(self, database, tempdir):
+ self.database = database
+ self._tempdir = tempdir
+
+ def cleanup(self):
+ shutil.rmtree(self._tempdir)
+
+
+
class SQLiteDatabase(StormBaseDatabase):
"""Database class for SQLite."""
@@ -41,7 +53,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 +66,13 @@ class SQLiteDatabase(StormBaseDatabase):
# Ignore errors
if fd > 0:
os.close(fd)
+
+ @staticmethod
+ def _make_temporary():
+ from mailman.testing.helpers import configuration
+ tempdir = tempfile.mkdtemp()
+ url = 'sqlite:///' + os.path.join(tempdir, 'mailman.db')
+ database = SQLiteDatabase()
+ with configuration('database', url=url):
+ database.initialize()
+ return _TemporaryDB(database, tempdir)