summaryrefslogtreecommitdiff
path: root/src/mailman/testing/layers.py
diff options
context:
space:
mode:
authorAurélien Bompard2014-10-03 17:08:11 +0200
committerAurélien Bompard2014-10-03 17:08:11 +0200
commit19850b6abd93a27fe22f80b20b8c7ba9bcb24205 (patch)
tree008578f25fc5eb0652175cac2a96508be108c86e /src/mailman/testing/layers.py
parent7806170485eafd3b8c8fdd3943a48dff1a8fd92d (diff)
downloadmailman-19850b6abd93a27fe22f80b20b8c7ba9bcb24205.tar.gz
mailman-19850b6abd93a27fe22f80b20b8c7ba9bcb24205.tar.zst
mailman-19850b6abd93a27fe22f80b20b8c7ba9bcb24205.zip
Diffstat (limited to 'src/mailman/testing/layers.py')
-rw-r--r--src/mailman/testing/layers.py30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/mailman/testing/layers.py b/src/mailman/testing/layers.py
index 3d2a50782..304f9a891 100644
--- a/src/mailman/testing/layers.py
+++ b/src/mailman/testing/layers.py
@@ -47,6 +47,7 @@ import tempfile
from lazr.config import as_boolean
from pkg_resources import resource_string
+from sqlalchemy import MetaData
from textwrap import dedent
from zope.component import getUtility
@@ -54,6 +55,7 @@ from mailman.config import config
from mailman.core import initialize
from mailman.core.initialize import INHIBIT_CONFIG_FILE
from mailman.core.logging import get_handler
+from mailman.database.model import Model
from mailman.database.transaction import transaction
from mailman.interfaces.domain import IDomainManager
from mailman.testing.helpers import (
@@ -310,6 +312,34 @@ class RESTLayer(SMTPLayer):
+class DatabaseLayer(MockAndMonkeyLayer):
+ """Layer for database tests"""
+
+ @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
+ initialize.initialize_1(INHIBIT_CONFIG_FILE)
+ # Don't initialize the database.
+
+ @classmethod
+ def tearDown(cls):
+ cls._drop_all_tables()
+
+ @classmethod
+ def testTearDown(cls):
+ cls._drop_all_tables()
+
+
+
def is_testing():
"""Return a 'testing' flag for use with the predictable factories.