[py-svn] r63916 - in py/trunk/py/log: . testing
hpk at codespeak.net
hpk at codespeak.net
Thu Apr 9 23:04:52 CEST 2009
Author: hpk
Date: Thu Apr 9 23:04:51 2009
New Revision: 63916
Modified:
py/trunk/py/log/testing/test_warning.py
py/trunk/py/log/warning.py
Log:
KISS: remove interaction of warnings with plugin mechanism, it's not needed.
Modified: py/trunk/py/log/testing/test_warning.py
==============================================================================
--- py/trunk/py/log/testing/test_warning.py (original)
+++ py/trunk/py/log/testing/test_warning.py Thu Apr 9 23:04:51 2009
@@ -1,48 +1,28 @@
import py
-from py.__.log.warning import WarningPlugin
mypath = py.magic.autopath()
-class TestWarningPlugin:
- def setup_method(self, method):
- self.pluginmanager = py._com.Registry()
- self.wb = WarningPlugin(self.pluginmanager)
- self.pluginmanager.register(self)
- self.warnings = []
+def test_forwarding_to_warnings_module():
+ py.test.deprecated_call(py.log._apiwarn, "1.3", "..")
- 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():
- assert py._com.comregistry.isregistered(py.log._apiwarn.im_self)
+def test_apiwarn_functional():
+ capture = py.io.StdCapture()
+ py.log._apiwarn("x.y.z", "something")
+ out, err = capture.reset()
+ print "out", out
+ print "err", err
+ assert err.find("x.y.z") != -1
+ lno = test_apiwarn_functional.func_code.co_firstlineno + 2
+ exp = "%s:%s" % (mypath, lno)
+ assert err.find(exp) != -1
+
+def test_stacklevel():
+ def f():
+ py.log._apiwarn("x", "some", stacklevel=2)
+ # 3
+ # 4
+ capture = py.io.StdCapture()
+ f()
+ out, err = capture.reset()
+ lno = test_stacklevel.func_code.co_firstlineno + 6
+ warning = str(err)
+ assert warning.find(":%s" % lno) != -1
Modified: py/trunk/py/log/warning.py
==============================================================================
--- py/trunk/py/log/warning.py (original)
+++ py/trunk/py/log/warning.py Thu Apr 9 23:04:51 2009
@@ -10,60 +10,45 @@
def __str__(self):
return self.msg
-# XXX probably only apiwarn() + py._com.comregistry forwarding
-# warn_explicit is actually needed
+def _apiwarn(startversion, msg, stacklevel=1):
+ # below is mostly COPIED from python2.4/warnings.py's def warn()
+ # Get context information
+ msg = "%s (since version %s)" %(msg, startversion)
+ warn(msg, stacklevel=stacklevel+1)
-class WarningPlugin(object):
- def __init__(self, bus):
- self.pluginmanager = bus
- bus.register(self)
-
- def pyevent__WARNING(self, warning):
- # forward to python warning system
- py.std.warnings.warn_explicit(warning, category=Warning,
- filename=str(warning.path),
- lineno=warning.lineno,
- registry=py.std.warnings.__dict__.setdefault(
- "__warningsregistry__", {})
- )
-
- def apiwarn(self, startversion, msg, stacklevel=1):
- # below is mostly COPIED from python2.4/warnings.py's def warn()
- # Get context information
- msg = "%s (since version %s)" %(msg, startversion)
- self.warn(msg, stacklevel=stacklevel+1)
+def warn(msg, stacklevel=1):
+ try:
+ caller = sys._getframe(stacklevel)
+ except ValueError:
+ globals = sys.__dict__
+ lineno = 1
+ else:
+ globals = caller.f_globals
+ lineno = caller.f_lineno
+ if '__name__' in globals:
+ module = globals['__name__']
+ else:
+ module = "<string>"
+ filename = globals.get('__file__')
+ if filename:
+ fnl = filename.lower()
+ if fnl.endswith(".pyc") or fnl.endswith(".pyo"):
+ filename = filename[:-1]
+ else:
+ if module == "__main__":
+ try:
+ filename = sys.argv[0]
+ except AttributeError:
+ # embedded interpreters don't have sys.argv, see bug #839151
+ filename = '__main__'
+ if not filename:
+ filename = module
+ path = py.path.local(filename)
+ warning = Warning(msg, path, lineno)
+ py.std.warnings.warn_explicit(warning, category=Warning,
+ filename=str(warning.path),
+ lineno=warning.lineno,
+ registry=py.std.warnings.__dict__.setdefault(
+ "__warningsregistry__", {})
+ )
- def warn(self, msg, stacklevel=1):
- try:
- caller = sys._getframe(stacklevel)
- except ValueError:
- globals = sys.__dict__
- lineno = 1
- else:
- globals = caller.f_globals
- lineno = caller.f_lineno
- if '__name__' in globals:
- module = globals['__name__']
- else:
- module = "<string>"
- filename = globals.get('__file__')
- if filename:
- fnl = filename.lower()
- if fnl.endswith(".pyc") or fnl.endswith(".pyo"):
- filename = filename[:-1]
- else:
- if module == "__main__":
- try:
- filename = sys.argv[0]
- except AttributeError:
- # embedded interpreters don't have sys.argv, see bug #839151
- filename = '__main__'
- if not filename:
- filename = module
- path = py.path.local(filename)
- warning = Warning(msg, path, lineno)
- self.pluginmanager.call_each("pyevent__WARNING", warning)
-
-# singleton api warner for py lib
-apiwarner = WarningPlugin(py._com.comregistry)
-_apiwarn = apiwarner.apiwarn
More information about the pytest-commit
mailing list