suppression.py 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. # -*- test-case-name: twisted.trial.test.test_tests -*-
  2. # Copyright (c) Twisted Matrix Laboratories.
  3. # See LICENSE for details.
  4. """
  5. Test cases used to make sure that warning suppression works at the module,
  6. method, and class levels.
  7. See the L{twisted.trial.test.test_tests} module docstring for details about how
  8. this code is arranged.
  9. """
  10. from __future__ import division, absolute_import
  11. import warnings
  12. from twisted.trial import unittest, util
  13. METHOD_WARNING_MSG = "method warning message"
  14. CLASS_WARNING_MSG = "class warning message"
  15. MODULE_WARNING_MSG = "module warning message"
  16. class MethodWarning(Warning):
  17. pass
  18. class ClassWarning(Warning):
  19. pass
  20. class ModuleWarning(Warning):
  21. pass
  22. class EmitMixin(object):
  23. """
  24. Mixin for emiting a variety of warnings.
  25. """
  26. def _emit(self):
  27. warnings.warn(METHOD_WARNING_MSG, MethodWarning)
  28. warnings.warn(CLASS_WARNING_MSG, ClassWarning)
  29. warnings.warn(MODULE_WARNING_MSG, ModuleWarning)
  30. class SuppressionMixin(EmitMixin):
  31. suppress = [util.suppress(message=CLASS_WARNING_MSG)]
  32. def testSuppressMethod(self):
  33. self._emit()
  34. testSuppressMethod.suppress = [util.suppress(message=METHOD_WARNING_MSG)]
  35. def testSuppressClass(self):
  36. self._emit()
  37. def testOverrideSuppressClass(self):
  38. self._emit()
  39. testOverrideSuppressClass.suppress = []
  40. class SetUpSuppressionMixin(object):
  41. def setUp(self):
  42. self._emit()
  43. class TearDownSuppressionMixin(object):
  44. def tearDown(self):
  45. self._emit()
  46. class TestSuppression2Mixin(EmitMixin):
  47. def testSuppressModule(self):
  48. self._emit()
  49. suppress = [util.suppress(message=MODULE_WARNING_MSG)]
  50. class SynchronousTestSuppression(SuppressionMixin, unittest.SynchronousTestCase):
  51. pass
  52. class SynchronousTestSetUpSuppression(SetUpSuppressionMixin, SynchronousTestSuppression):
  53. pass
  54. class SynchronousTestTearDownSuppression(TearDownSuppressionMixin, SynchronousTestSuppression):
  55. pass
  56. class SynchronousTestSuppression2(TestSuppression2Mixin, unittest.SynchronousTestCase):
  57. pass
  58. class AsynchronousTestSuppression(SuppressionMixin, unittest.TestCase):
  59. pass
  60. class AsynchronousTestSetUpSuppression(SetUpSuppressionMixin, AsynchronousTestSuppression):
  61. pass
  62. class AsynchronousTestTearDownSuppression(TearDownSuppressionMixin, AsynchronousTestSuppression):
  63. pass
  64. class AsynchronousTestSuppression2(TestSuppression2Mixin, unittest.TestCase):
  65. pass