diff options
Diffstat (limited to 'Lib/test/test_warnings.py')
-rw-r--r-- | Lib/test/test_warnings.py | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/Lib/test/test_warnings.py b/Lib/test/test_warnings.py new file mode 100644 index 0000000000..9cd3c30e29 --- /dev/null +++ b/Lib/test/test_warnings.py @@ -0,0 +1,53 @@ +import warnings + +# The warnings module isn't easily tested, because it relies on module +# globals to store configuration information. We need to extract the +# current settings to avoid bashing them while running tests. + +_filters = [] +_showwarning = None + +def showwarning(message, category, filename, lineno, file=None): + i = filename.find("Lib/") + filename = filename[i:] + print "%s:%s: %s: %s" % (filename, lineno, category.__name__, message) + +def monkey(): + global _filters, _showwarning + _filters = warnings.filters[:] + _showwarning = warnings.showwarning + warnings.showwarning = showwarning + +def unmonkey(): + warnings.filters = _filters[:] + warnings.showwarning = _showwarning + +def test(): + for item in warnings.filters: + print (item[0], item[1] is None, item[2].__name__, item[3] is None, + item[4]) + hello = "hello world" + for i in range(4): + warnings.warn(hello) + warnings.warn(hello, UserWarning) + warnings.warn(hello, DeprecationWarning) + for i in range(3): + warnings.warn(hello) + warnings.filterwarnings("error", "", Warning, "", 0) + try: + warnings.warn(hello) + except Exception, msg: + print "Caught", msg.__class__.__name__ + ":", msg + else: + print "No exception" + warnings.resetwarnings() + try: + warnings.filterwarnings("booh", "", Warning, "", 0) + except Exception, msg: + print "Caught", msg.__class__.__name__ + ":", msg + else: + print "No exception" + +monkey() +test() +unmonkey() |