summaryrefslogtreecommitdiff
path: root/src/mailman/testing
diff options
context:
space:
mode:
authorBarry Warsaw2011-04-01 18:56:17 -0400
committerBarry Warsaw2011-04-01 18:56:17 -0400
commitcd18f50624f33a9556492168933d5fe088d51a04 (patch)
treecf9f9176e040f8af5b39240c0cd97c2b48c29952 /src/mailman/testing
parent477d81701e0e3ef166b786de9ec9bc1f148eaffe (diff)
parent33ad44bc97f08df71f227f6f2a006e770a75c353 (diff)
downloadmailman-cd18f50624f33a9556492168933d5fe088d51a04.tar.gz
mailman-cd18f50624f33a9556492168933d5fe088d51a04.tar.zst
mailman-cd18f50624f33a9556492168933d5fe088d51a04.zip
Diffstat (limited to 'src/mailman/testing')
-rw-r--r--src/mailman/testing/__init__.py39
-rw-r--r--src/mailman/testing/layers.py18
2 files changed, 49 insertions, 8 deletions
diff --git a/src/mailman/testing/__init__.py b/src/mailman/testing/__init__.py
index e69de29bb..84182e1f1 100644
--- a/src/mailman/testing/__init__.py
+++ b/src/mailman/testing/__init__.py
@@ -0,0 +1,39 @@
+# Copyright (C) 2011 by the Free Software Foundation, Inc.
+#
+# This file is part of GNU Mailman.
+#
+# GNU Mailman is free software: you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation, either version 3 of the License, or (at your option)
+# any later version.
+#
+# GNU Mailman is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+# more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# GNU Mailman. If not, see <http://www.gnu.org/licenses/>.
+
+"""Set up testing.
+
+This is used as an interface to buildout.cfg's [test] section.
+zope.testrunner supports an initialization variable. It is set to import and
+run the following test initialization method.
+"""
+
+from __future__ import absolute_import, unicode_literals
+
+__metaclass__ = type
+__all__ = [
+ 'initialize',
+ ]
+
+
+
+def initialize(root_directory):
+ """Initialize the test infrastructure."""
+ from mailman.testing import layers
+ layers.MockAndMonkeyLayer.testing_mode = True
+ layers.ConfigLayer.enable_stderr();
+ layers.ConfigLayer.set_root_directory(root_directory)
diff --git a/src/mailman/testing/layers.py b/src/mailman/testing/layers.py
index 353dd9edd..2e765ea3e 100644
--- a/src/mailman/testing/layers.py
+++ b/src/mailman/testing/layers.py
@@ -48,7 +48,6 @@ from mailman.core.logging import get_handler
from mailman.interfaces.domain import IDomainManager
from mailman.testing.helpers import TestableMaster, reset_the_world
from mailman.testing.mta import ConnectionCountingController
-from mailman.utilities.datetime import factory
from mailman.utilities.string import expand
@@ -60,17 +59,20 @@ NL = '\n'
class MockAndMonkeyLayer:
"""Layer for mocking and monkey patching for testing."""
- @classmethod
- def setUp(cls):
- factory.testing_mode = True
+ # Set this to True to enable predictable datetimes, uids, etc.
+ testing_mode = False
- @classmethod
- def tearDown(cls):
- factory.testing_mode = False
+ # A registration of all testing factories, for resetting between tests.
+ _resets = []
@classmethod
def testTearDown(cls):
- factory.reset()
+ for reset in cls._resets:
+ reset()
+
+ @classmethod
+ def register_reset(cls, reset):
+ cls._resets.append(reset)