cpython/Lib/test/test_warnings.py

54 lines
1.5 KiB
Python
Raw Normal View History

import warnings
import os
# 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):
filename = os.path.basename(filename)
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()