summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAurélien Bompard2014-10-06 19:17:50 +0200
committerAurélien Bompard2014-10-06 19:17:50 +0200
commitb023009538019927b5fe67f129469ee8d4951f91 (patch)
tree5827acf4b9a16de0914e8b9db4740f3092a3bbf8
parent506b0fff2b4b1f068223d6e9cdfb254fd53bcdac (diff)
downloadmailman-b023009538019927b5fe67f129469ee8d4951f91.tar.gz
mailman-b023009538019927b5fe67f129469ee8d4951f91.tar.zst
mailman-b023009538019927b5fe67f129469ee8d4951f91.zip
Don't use a testing layer for database tests
-rw-r--r--src/mailman/database/tests/test_factory.py15
-rw-r--r--src/mailman/testing/layers.py55
2 files changed, 10 insertions, 60 deletions
diff --git a/src/mailman/database/tests/test_factory.py b/src/mailman/database/tests/test_factory.py
index 81febbde5..a87bca7be 100644
--- a/src/mailman/database/tests/test_factory.py
+++ b/src/mailman/database/tests/test_factory.py
@@ -32,7 +32,7 @@ from mock import Mock
from sqlalchemy import MetaData, Table, Column, Integer, Unicode
from mailman.config import config
-from mailman.testing.layers import DatabaseLayer
+from mailman.testing.layers import ConfigLayer
from mailman.database.factory import SchemaManager, _reset
from mailman.database.sqlite import SQLiteDatabase
from mailman.database.alembic import alembic_cfg
@@ -42,12 +42,15 @@ from mailman.database.model import Model
class TestSchemaManager(unittest.TestCase):
- layer = DatabaseLayer
+ layer = ConfigLayer
def setUp(self):
- config.db = SQLiteDatabase()
- config.db.initialize()
- config.db._reset = types.MethodType(_reset, config.db)
+ # Drop the existing database
+ Model.metadata.drop_all(config.db.engine)
+ md = MetaData()
+ md.reflect(bind=config.db.engine)
+ if "alembic_version" in md.tables:
+ md.tables["alembic_version"].drop(config.db.engine)
self.schema_mgr = SchemaManager(config.db)
def tearDown(self):
@@ -55,6 +58,8 @@ class TestSchemaManager(unittest.TestCase):
version = Model.metadata.tables["version"]
version.drop(config.db.engine, checkfirst=True)
Model.metadata.remove(version)
+ # Restore a virgin DB
+ Model.metadata.create_all(config.db.engine)
def _table_exists(self, tablename):
diff --git a/src/mailman/testing/layers.py b/src/mailman/testing/layers.py
index c1346b29f..99852e135 100644
--- a/src/mailman/testing/layers.py
+++ b/src/mailman/testing/layers.py
@@ -315,61 +315,6 @@ class RESTLayer(SMTPLayer):
-class DatabaseLayer:
- """Layer for database tests"""
-
- var_dir = None
-
- @classmethod
- def _drop_all_tables(cls):
- Model.metadata.drop_all(config.db.engine)
- md = MetaData()
- md.reflect(bind=config.db.engine)
- if "alembic_version" in md.tables:
- md.tables["alembic_version"].drop(config.db.engine)
-
- @classmethod
- def setUp(cls):
- # Set up the basic configuration stuff. Turn off path creation.
- config.create_paths = False
- if not event.subscribers:
- # only if not yet initialized by another layer
- initialize.initialize_1(INHIBIT_CONFIG_FILE)
- # Don't initialize the database.
- cls.var_dir = tempfile.mkdtemp()
- test_config = dedent("""
- [mailman]
- layout: testing
- [paths.testing]
- var_dir: {0}
- [devmode]
- testing: yes
- """.format(cls.var_dir))
- # Read the testing config and push it.
- test_config += resource_string('mailman.testing', 'testing.cfg')
- config.create_paths = True
- config.push('test config', test_config)
- # Write the configuration file for subprocesses and set up the config
- # object to pass that properly on the -C option.
- config_file = os.path.join(cls.var_dir, 'test.cfg')
- with open(config_file, 'w') as fp:
- fp.write(test_config)
- print(file=fp)
- config.filename = config_file
-
- @classmethod
- def tearDown(cls):
- assert cls.var_dir is not None, 'Layer not set up'
- shutil.rmtree(cls.var_dir)
- config.pop('test config')
- cls.var_dir = None
-
- @classmethod
- def testTearDown(cls):
- cls._drop_all_tables()
-
-
-
def is_testing():
"""Return a 'testing' flag for use with the predictable factories.