123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- # 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')
|