test_ok1/py/misc/testing/test_warn.py

50 lines
1.5 KiB
Python

import py
from py.__.misc.warn import WarningPlugin
mypath = py.magic.autopath()
class TestWarningPlugin:
def setup_method(self, method):
self.bus = py._com.PyPlugins()
self.wb = WarningPlugin(self.bus)
self.bus.register(self)
self.warnings = []
def pyevent_WARNING(self, warning):
self.warnings.append(warning)
def test_event_generation(self):
self.wb.warn("hello")
assert len(self.warnings) == 1
def test_location(self):
self.wb.warn("again")
warning = self.warnings[0]
lno = self.test_location.im_func.func_code.co_firstlineno + 1
assert warning.lineno == lno
assert warning.path == mypath
locstr = "%s:%d: " %(mypath, lno+1,)
assert repr(warning).startswith(locstr)
assert str(warning) == warning.msg
def test_stacklevel(self):
def f():
self.wb.warn("x", stacklevel=2)
# 3
# 4
f()
lno = self.test_stacklevel.im_func.func_code.co_firstlineno + 5
warning = self.warnings[0]
assert warning.lineno == lno
def test_forwarding_to_warnings_module(self):
py.test.deprecated_call(self.wb.warn, "x")
def test_apiwarn(self):
self.wb.apiwarn("3.0", "xxx")
warning = self.warnings[0]
assert warning.msg == "xxx (since version 3.0)"
def test_default():
from py.__.misc.warn import APIWARN
assert py._com.pyplugins.isregistered(APIWARN.im_self)