[py-svn] commit/pytest: hpk42: enhance debug tracing: print trace tags at the end of message and forget about "prefix".

Bitbucket commits-noreply at bitbucket.org
Thu Jul 14 19:12:13 CEST 2011


1 new changeset in pytest:

http://bitbucket.org/hpk42/pytest/changeset/6247ce817d98/
changeset:   6247ce817d98
user:        hpk42
date:        2011-07-14 19:11:50
summary:     enhance debug tracing: print trace tags at the end of message and forget about "prefix".
Always log to "pytestdebug.log" if "--debug" option is given.
also move related code to pytest_helpconfig plugin.
affected #:  7 files (1.8 KB)

--- a/_pytest/config.py	Thu Jul 14 11:46:32 2011 -0500
+++ b/_pytest/config.py	Thu Jul 14 19:11:50 2011 +0200
@@ -8,8 +8,6 @@
 def pytest_cmdline_parse(pluginmanager, args):
     config = Config(pluginmanager)
     config.parse(args)
-    if config.option.debug:
-        config.trace.root.setwriter(sys.stderr.write)
     return config
 
 def pytest_unconfigure(config):
@@ -334,6 +332,7 @@
         # Note that this can only be called once per testing process.
         assert not hasattr(self, 'args'), (
                 "can only parse cmdline args at most once per Config object")
+        self._origargs = args
         self._preparse(args)
         self._parser.hints.extend(self.pluginmanager._hints)
         args = self._parser.parse_setoption(args, self.option)


--- a/_pytest/core.py	Thu Jul 14 11:46:32 2011 -0500
+++ b/_pytest/core.py	Thu Jul 14 19:11:50 2011 +0200
@@ -16,11 +16,10 @@
  "junitxml resultlog doctest").split()
 
 class TagTracer:
-    def __init__(self, prefix="[pytest] "):
+    def __init__(self):
         self._tag2proc = {}
         self.writer = None
         self.indent = 0
-        self.prefix = prefix
 
     def get(self, name):
         return TagTracerSub(self, (name,))
@@ -30,7 +29,7 @@
             if args:
                 indent = "  " * self.indent
                 content = " ".join(map(str, args))
-                self.writer("%s%s%s\n" %(self.prefix, indent, content))
+                self.writer("%s%s [%s]\n" %(indent, content, ":".join(tags)))
         try:
             self._tag2proc[tags](tags, args)
         except KeyError:


--- a/_pytest/helpconfig.py	Thu Jul 14 11:46:32 2011 -0500
+++ b/_pytest/helpconfig.py	Thu Jul 14 19:11:50 2011 +0200
@@ -1,7 +1,7 @@
 """ version info, help messages, tracing configuration.  """
 import py
 import pytest
-import inspect, sys
+import os, inspect, sys
 from _pytest.core import varnames
 
 def pytest_addoption(parser):
@@ -18,7 +18,29 @@
                help="trace considerations of conftest.py files."),
     group.addoption('--debug',
                action="store_true", dest="debug", default=False,
-               help="generate and show internal debugging information.")
+               help="store internal tracing debug information in 'pytestdebug.log'.")
+
+
+def pytest_cmdline_parse(__multicall__):
+    config = __multicall__.execute()
+    if config.option.debug:
+        path = os.path.abspath("pytestdebug.log")
+        f = open(path, 'w')
+        config._debugfile = f
+        f.write("versions pytest-%s, py-%s, python-%s\ncwd=%s\nargs=%s\n\n" %(
+            pytest.__version__, py.__version__, ".".join(map(str, sys.version_info)),
+            os.getcwd(), config._origargs))
+        config.trace.root.setwriter(f.write)
+        sys.stderr.write("writing pytestdebug information to %s\n" % path)
+    return config
+
+ at pytest.mark.trylast
+def pytest_unconfigure(config):
+    if hasattr(config, '_debugfile'):
+        config._debugfile.close()
+        sys.stderr.write("wrote pytestdebug information to %s\n" %
+            config._debugfile.name)
+        config.trace.root.setwriter(None)
 
 
 def pytest_cmdline_main(config):


--- a/testing/test_config.py	Thu Jul 14 11:46:32 2011 -0500
+++ b/testing/test_config.py	Thu Jul 14 19:11:50 2011 +0200
@@ -88,7 +88,7 @@
         config.trace.root.setwriter(l.append)
         config.trace("hello")
         assert len(l) == 1
-        assert l[0] == "[pytest] hello\n"
+        assert l[0] == "hello [config]\n"
 
     def test_config_getvalue_honours_conftest(self, testdir):
         testdir.makepyfile(conftest="x=1")


--- a/testing/test_core.py	Thu Jul 14 11:46:32 2011 -0500
+++ b/testing/test_core.py	Thu Jul 14 19:11:50 2011 +0200
@@ -586,17 +586,17 @@
 class TestTracer:
     def test_simple(self):
         from _pytest.core import TagTracer
-        rootlogger = TagTracer("[my] ")
+        rootlogger = TagTracer()
         log = rootlogger.get("pytest")
         log("hello")
         l = []
         rootlogger.setwriter(l.append)
         log("world")
         assert len(l) == 1
-        assert l[0] == "[my] world\n"
+        assert l[0] == "world [pytest]\n"
         sublog = log.get("collection")
         sublog("hello")
-        assert l[1] == "[my] hello\n"
+        assert l[1] == "hello [pytest:collection]\n"
 
     def test_indent(self):
         from _pytest.core import TagTracer
@@ -616,7 +616,7 @@
         log.root.indent -= 1
         log("last")
         assert len(l) == 7
-        names = [x.rstrip()[len(rootlogger.prefix):] for x in l]
+        names = [x[:x.rfind(' [')] for x in l]
         assert names == ['hello', '  line1', '  line2',
                      '    line3', '    line4', '  line5', 'last']
 


--- a/testing/test_helpconfig.py	Thu Jul 14 11:46:32 2011 -0500
+++ b/testing/test_helpconfig.py	Thu Jul 14 19:11:50 2011 +0200
@@ -62,3 +62,17 @@
         "*using*pytest*py*",
         "*active plugins*",
     ])
+
+def test_debug(testdir, monkeypatch):
+    result = testdir.runpytest("--debug")
+    assert result.ret == 0
+    p = testdir.tmpdir.join("pytestdebug.log")
+    assert "pytest_sessionstart" in p.read()
+
+def test_PYTEST_DEBUG(testdir, monkeypatch):
+    monkeypatch.setenv("PYTEST_DEBUG", "1")
+    result = testdir.runpytest()
+    assert result.ret == 0
+    result.stderr.fnmatch_lines([
+        "*registered*PluginManager*"
+    ])


--- a/testing/test_terminal.py	Thu Jul 14 11:46:32 2011 -0500
+++ b/testing/test_terminal.py	Thu Jul 14 19:11:50 2011 +0200
@@ -524,21 +524,6 @@
     ])
     assert result.ret == 0
 
-def test_debug(testdir, monkeypatch):
-    result = testdir.runpytest("--debug")
-    result.stderr.fnmatch_lines([
-        "*pytest_sessionstart*session*",
-    ])
-    assert result.ret == 0
-
-def test_PYTEST_DEBUG(testdir, monkeypatch):
-    monkeypatch.setenv("PYTEST_DEBUG", "1")
-    result = testdir.runpytest()
-    assert result.ret == 0
-    result.stderr.fnmatch_lines([
-        "*registered*PluginManager*"
-    ])
-
 
 class TestGenericReporting:
     """ this test class can be subclassed with a different option

Repository URL: https://bitbucket.org/hpk42/pytest/

--

This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.



More information about the pytest-commit mailing list