diff options
| author | Barry Warsaw | 2012-07-25 23:06:30 -0400 |
|---|---|---|
| committer | Barry Warsaw | 2012-07-25 23:06:30 -0400 |
| commit | b60f54fedab835f214f3c88e990ff3bb098e6cad (patch) | |
| tree | 3562482220236d9feac381c6626790db44ac1988 /src/mailman/database/factory.py | |
| parent | fc7e14405afd9a89ae1b6cc8cabd861ec4e72ee8 (diff) | |
| download | mailman-b60f54fedab835f214f3c88e990ff3bb098e6cad.tar.gz mailman-b60f54fedab835f214f3c88e990ff3bb098e6cad.tar.zst mailman-b60f54fedab835f214f3c88e990ff3bb098e6cad.zip | |
Diffstat (limited to 'src/mailman/database/factory.py')
| -rw-r--r-- | src/mailman/database/factory.py | 58 |
1 files changed, 6 insertions, 52 deletions
diff --git a/src/mailman/database/factory.py b/src/mailman/database/factory.py index 0ea2f4776..127c4aaeb 100644 --- a/src/mailman/database/factory.py +++ b/src/mailman/database/factory.py @@ -27,19 +27,15 @@ __all__ = [ ] -import os import types -import shutil -import tempfile -from functools import partial -from urlparse import urlsplit, urlunsplit +from zope.component import getAdapter from zope.interface import implementer from zope.interface.verify import verifyObject from mailman.config import config -from mailman.interfaces.database import IDatabase, IDatabaseFactory -from mailman.testing.helpers import configuration +from mailman.interfaces.database import ( + IDatabase, IDatabaseFactory, ITemporaryDatabase) from mailman.utilities.modules import call_name @@ -90,16 +86,6 @@ class DatabaseTestingFactory: -def _sqlite_cleanup(self, tempdir): - shutil.rmtree(tempdir) - - -def _postgresql_cleanup(self, database, tempdb_name): - database.store.rollback() - database.store.close() - config.db.store.execute('DROP DATABASE {0}'.format(tempdb_name)) - - @implementer(IDatabaseFactory) class DatabaseTemporaryFactory: """Create a temporary database for some of the migration tests.""" @@ -110,38 +96,6 @@ class DatabaseTemporaryFactory: database_class_name = config.database['class'] database = call_name(database_class_name) verifyObject(IDatabase, database) - if database.TAG == 'sqlite': - tempdir = tempfile.mkdtemp() - url = 'sqlite:///' + os.path.join(tempdir, 'mailman.db') - with configuration('database', url=url): - database.initialize() - database._cleanup = types.MethodType( - partial(_sqlite_cleanup, tempdir=tempdir), database) - # bool column values in SQLite must be integers. - database.FALSE = 0 - database.TRUE = 1 - elif database.TAG == 'postgres': - parts = urlsplit(config.database.url) - assert parts.scheme == 'postgres' - new_parts = list(parts) - new_parts[2] = '/mmtest' - url = urlunsplit(new_parts) - # Use the existing database connection to create a new testing - # database. - config.db.store.execute('ABORT;') - config.db.store.execute('CREATE DATABASE mmtest;') - with configuration('database', url=url): - database.initialize() - database._cleanup = types.MethodType( - partial(_postgresql_cleanup, - database=database, - tempdb_name='mmtest'), - database) - # bool column values in PostgreSQL. - database.FALSE = 'False' - database.TRUE = 'True' - else: - raise RuntimeError( - 'Unsupported test database: {0}'.format(database.TAG)) - # Don't load the migrations. - return database + adapted_database = getAdapter( + database, ITemporaryDatabase, database.TAG) + return adapted_database |
