/apps/autodock_mgl.bak/autodock_mgl_1.125_i686-pc-linux-gnu/test/lib/python2.5/test/test_warnings.py

https://github.com/jackygrahamez/DrugDiscovery-Home · Python · 105 lines · 78 code · 18 blank · 9 comment · 10 complexity · d681e80c02afe0707277f87e58ea9e56 MD5 · raw file

  1. import warnings
  2. import os
  3. import unittest
  4. from test import test_support
  5. # The warnings module isn't easily tested, because it relies on module
  6. # globals to store configuration information. setUp() and tearDown()
  7. # preserve the current settings to avoid bashing them while running tests.
  8. # To capture the warning messages, a replacement for showwarning() is
  9. # used to save warning information in a global variable.
  10. class WarningMessage:
  11. "Holds results of latest showwarning() call"
  12. pass
  13. def showwarning(message, category, filename, lineno, file=None):
  14. msg.message = str(message)
  15. msg.category = category.__name__
  16. msg.filename = os.path.basename(filename)
  17. msg.lineno = lineno
  18. class TestModule(unittest.TestCase):
  19. def setUp(self):
  20. global msg
  21. msg = WarningMessage()
  22. self._filters = warnings.filters[:]
  23. self._showwarning = warnings.showwarning
  24. warnings.showwarning = showwarning
  25. self.ignored = [w[2].__name__ for w in self._filters
  26. if w[0]=='ignore' and w[1] is None and w[3] is None]
  27. def tearDown(self):
  28. warnings.filters = self._filters[:]
  29. warnings.showwarning = self._showwarning
  30. def test_warn_default_category(self):
  31. for i in range(4):
  32. text = 'multi %d' %i # Different text on each call
  33. warnings.warn(text)
  34. self.assertEqual(msg.message, text)
  35. self.assertEqual(msg.category, 'UserWarning')
  36. def test_warn_specific_category(self):
  37. text = 'None'
  38. for category in [DeprecationWarning, FutureWarning,
  39. PendingDeprecationWarning, RuntimeWarning,
  40. SyntaxWarning, UserWarning, Warning]:
  41. if category.__name__ in self.ignored:
  42. text = 'filtered out' + category.__name__
  43. warnings.warn(text, category)
  44. self.assertNotEqual(msg.message, text)
  45. else:
  46. text = 'unfiltered %s' % category.__name__
  47. warnings.warn(text, category)
  48. self.assertEqual(msg.message, text)
  49. self.assertEqual(msg.category, category.__name__)
  50. def test_filtering(self):
  51. warnings.filterwarnings("error", "", Warning, "", 0)
  52. self.assertRaises(UserWarning, warnings.warn, 'convert to error')
  53. warnings.resetwarnings()
  54. text = 'handle normally'
  55. warnings.warn(text)
  56. self.assertEqual(msg.message, text)
  57. self.assertEqual(msg.category, 'UserWarning')
  58. warnings.filterwarnings("ignore", "", Warning, "", 0)
  59. text = 'filtered out'
  60. warnings.warn(text)
  61. self.assertNotEqual(msg.message, text)
  62. warnings.resetwarnings()
  63. warnings.filterwarnings("error", "hex*", Warning, "", 0)
  64. self.assertRaises(UserWarning, warnings.warn, 'hex/oct')
  65. text = 'nonmatching text'
  66. warnings.warn(text)
  67. self.assertEqual(msg.message, text)
  68. self.assertEqual(msg.category, 'UserWarning')
  69. def test_options(self):
  70. # Uses the private _setoption() function to test the parsing
  71. # of command-line warning arguments
  72. self.assertRaises(warnings._OptionError,
  73. warnings._setoption, '1:2:3:4:5:6')
  74. self.assertRaises(warnings._OptionError,
  75. warnings._setoption, 'bogus::Warning')
  76. self.assertRaises(warnings._OptionError,
  77. warnings._setoption, 'ignore:2::4:-5')
  78. warnings._setoption('error::Warning::0')
  79. self.assertRaises(UserWarning, warnings.warn, 'convert to error')
  80. def test_main(verbose=None):
  81. # Obscure hack so that this test passes after reloads or repeated calls
  82. # to test_main (regrtest -R).
  83. if '__warningregistry__' in globals():
  84. del globals()['__warningregistry__']
  85. test_support.run_unittest(TestModule)
  86. if __name__ == "__main__":
  87. test_main(verbose=True)