~barry/mailman/events-and-web

« back to all changes in this revision

Viewing changes to src/mailman/testing/layers.py

  • Committer: Barry Warsaw
  • Date: 2012-04-22 21:33:33 UTC
  • mfrom: (7150.1.11 transactions)
  • Revision ID: barry@list.org-20120422213333-3skjqsjktooesgsl
Several non-functional improvements to the code base.

Reduce the explicit use of the config.db global by introducing two new
helpers:
 - A new transaction() context manager which will commit the transaction on
   successful exit, otherwise it will abort the transaction
 - A new dbconnection decorator which calls the decorated method with the
   Storm store object as the first argument (after self).  This can be used
   instead of config.db.store.

By reducing the explicit use of this global, we have a better chance of
refactoring it away in the future.  Still TODO: runner.py and lmtp.py.

Be explicit about the `store` attribute on the IDatabase interface.

More consistent use of __future__ imports.

Remove an obsolete command line script.

Show diffs side-by-side

added added

removed removed

Lines of Context:
25
25
# eventually get rid of the zope.test* dependencies and use something like
26
26
# testresources or some such.
27
27
 
28
 
from __future__ import absolute_import, unicode_literals
 
28
from __future__ import absolute_import, print_function, unicode_literals
29
29
 
30
30
__metaclass__ = type
31
31
__all__ = [
56
56
from mailman.core import initialize
57
57
from mailman.core.initialize import INHIBIT_CONFIG_FILE
58
58
from mailman.core.logging import get_handler
 
59
from mailman.database.transaction import transaction
59
60
from mailman.interfaces.domain import IDomainManager
60
61
from mailman.testing.helpers import (
61
62
    TestableMaster, get_lmtp_client, reset_the_world)
176
177
        config_file = os.path.join(cls.var_dir, 'test.cfg')
177
178
        with open(config_file, 'w') as fp:
178
179
            fp.write(test_config)
179
 
            print >> fp
 
180
            print(file=fp)
180
181
        config.filename = config_file
181
182
 
182
183
    @classmethod
189
190
    @classmethod
190
191
    def testSetUp(cls):
191
192
        # Add an example domain.
192
 
        getUtility(IDomainManager).add(
193
 
            'example.com', 'An example domain.',
194
 
            'http://lists.example.com', 'postmaster@example.com')
195
 
        config.db.commit()
 
193
        with transaction():
 
194
            getUtility(IDomainManager).add(
 
195
                'example.com', 'An example domain.',
 
196
                'http://lists.example.com', 'postmaster@example.com')
196
197
 
197
198
    @classmethod
198
199
    def testTearDown(cls):