Source code for zope.testing.cleanup

##############################################################################
#
# Copyright (c) 2001, 2002 Zope Foundation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#
##############################################################################
"""Provide a standard cleanup registry

Unit tests that change global data should include the `CleanUp` base
class, which provides simpler `setUp` and `tearDown` methods that call
global-data cleanup routines::

  class Test(CleanUp, unittest.TestCase):

      ....

If custom `setUp` or `tearDown` are needed, then the base routines should
be called, as in::

  def tearDown(self):
      super(Test, self).tearDown()
      ....

Cleanup routines for global data should be registered by passing them to
`addCleanup`::


  addCleanUp(pigRegistry._clear)

"""

_cleanups = []


[docs] def addCleanUp(func, args=(), kw={}): """Register a cleanup routines Pass a function to be called to cleanup global data. Optional argument tuple and keyword arguments may be passed. """ _cleanups.append((func, args, kw))
[docs] class CleanUp: """Mix-in class providing clean-up setUp and tearDown routines."""
[docs] def cleanUp(self): """Clean up global data.""" cleanUp()
setUp = tearDown = cleanUp
[docs] def cleanUp(): """Clean up global data.""" for func, args, kw in _cleanups: func(*args, **kw)
setUp = tearDown = cleanUp