| Viewing file:  test_suppression.py (5.95 KB)      -rw-r--r-- Select action/file-type:
 
  (+) |  (+) |  (+) | Code (+) | Session (+) |  (+) | SDB (+) |  (+) |  (+) |  (+) |  (+) |  (+) | 
 
# Copyright (c) Twisted Matrix Laboratories.# See LICENSE for details.
 
 """
 Tests for warning suppression features of Trial.
 """
 
 from __future__ import division, absolute_import
 
 import unittest as pyunit
 
 from twisted.python.reflect import namedAny
 from twisted.trial import unittest
 from twisted.trial.test import suppression
 
 
 class SuppressionMixin(object):
 """
 Tests for the warning suppression features of
 L{twisted.trial.unittest.SynchronousTestCase}.
 """
 def runTests(self, suite):
 suite.run(pyunit.TestResult())
 
 
 def _load(self, cls, methodName):
 """
 Return a new L{unittest.TestSuite} with a single test method in it.
 
 @param cls: A L{TestCase} subclass defining a test method.
 
 @param methodName: The name of the test method from C{cls}.
 """
 return pyunit.TestSuite([cls(methodName)])
 
 
 def _assertWarnings(self, warnings, which):
 """
 Assert that a certain number of warnings with certain messages were
 emitted in a certain order.
 
 @param warnings: A list of emitted warnings, as returned by
 C{flushWarnings}.
 
 @param which: A list of strings giving warning messages that should
 appear in C{warnings}.
 
 @raise self.failureException: If the warning messages given by C{which}
 do not match the messages in the warning information in C{warnings},
 or if they do not appear in the same order.
 """
 self.assertEqual(
 [warning['message'] for warning in warnings],
 which)
 
 
 def test_setUpSuppression(self):
 """
 Suppressions defined by the test method being run are applied to any
 warnings emitted while running the C{setUp} fixture.
 """
 self.runTests(
 self._load(self.TestSetUpSuppression, "testSuppressMethod"))
 warningsShown = self.flushWarnings([
 self.TestSetUpSuppression._emit])
 self._assertWarnings(
 warningsShown,
 [suppression.CLASS_WARNING_MSG, suppression.MODULE_WARNING_MSG,
 suppression.CLASS_WARNING_MSG, suppression.MODULE_WARNING_MSG])
 
 
 def test_tearDownSuppression(self):
 """
 Suppressions defined by the test method being run are applied to any
 warnings emitted while running the C{tearDown} fixture.
 """
 self.runTests(
 self._load(self.TestTearDownSuppression, "testSuppressMethod"))
 warningsShown = self.flushWarnings([
 self.TestTearDownSuppression._emit])
 self._assertWarnings(
 warningsShown,
 [suppression.CLASS_WARNING_MSG, suppression.MODULE_WARNING_MSG,
 suppression.CLASS_WARNING_MSG, suppression.MODULE_WARNING_MSG])
 
 
 def test_suppressMethod(self):
 """
 A suppression set on a test method prevents warnings emitted by that
 test method which the suppression matches from being emitted.
 """
 self.runTests(
 self._load(self.TestSuppression, "testSuppressMethod"))
 warningsShown = self.flushWarnings([
 self.TestSuppression._emit])
 self._assertWarnings(
 warningsShown,
 [suppression.CLASS_WARNING_MSG, suppression.MODULE_WARNING_MSG])
 
 
 def test_suppressClass(self):
 """
 A suppression set on a L{SynchronousTestCase} subclass prevents warnings
 emitted by any test methods defined on that class which match the
 suppression from being emitted.
 """
 self.runTests(
 self._load(self.TestSuppression, "testSuppressClass"))
 warningsShown = self.flushWarnings([
 self.TestSuppression._emit])
 self.assertEqual(
 warningsShown[0]['message'], suppression.METHOD_WARNING_MSG)
 self.assertEqual(
 warningsShown[1]['message'], suppression.MODULE_WARNING_MSG)
 self.assertEqual(len(warningsShown), 2)
 
 
 def test_suppressModule(self):
 """
 A suppression set on a module prevents warnings emitted by any test
 mewthods defined in that module which match the suppression from being
 emitted.
 """
 self.runTests(
 self._load(self.TestSuppression2, "testSuppressModule"))
 warningsShown = self.flushWarnings([
 self.TestSuppression._emit])
 self.assertEqual(
 warningsShown[0]['message'], suppression.METHOD_WARNING_MSG)
 self.assertEqual(
 warningsShown[1]['message'], suppression.CLASS_WARNING_MSG)
 self.assertEqual(len(warningsShown), 2)
 
 
 def test_overrideSuppressClass(self):
 """
 The suppression set on a test method completely overrides a suppression
 with wider scope; if it does not match a warning emitted by that test
 method, the warning is emitted, even if a wider suppression matches.
 """
 self.runTests(
 self._load(self.TestSuppression, "testOverrideSuppressClass"))
 warningsShown = self.flushWarnings([
 self.TestSuppression._emit])
 self.assertEqual(
 warningsShown[0]['message'], suppression.METHOD_WARNING_MSG)
 self.assertEqual(
 warningsShown[1]['message'], suppression.CLASS_WARNING_MSG)
 self.assertEqual(
 warningsShown[2]['message'], suppression.MODULE_WARNING_MSG)
 self.assertEqual(len(warningsShown), 3)
 
 
 
 class SynchronousSuppressionTests(SuppressionMixin, unittest.SynchronousTestCase):
 """
 @see: L{twisted.trial.test.test_tests}
 """
 TestSetUpSuppression = namedAny(
 'twisted.trial.test.suppression.SynchronousTestSetUpSuppression')
 TestTearDownSuppression = namedAny(
 'twisted.trial.test.suppression.SynchronousTestTearDownSuppression')
 TestSuppression = namedAny(
 'twisted.trial.test.suppression.SynchronousTestSuppression')
 TestSuppression2 = namedAny(
 'twisted.trial.test.suppression.SynchronousTestSuppression2')
 
 |