summaryrefslogtreecommitdiff
path: root/Lib/test/test_warnings.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/test_warnings.py')
-rw-r--r--Lib/test/test_warnings.py53
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()