[py-svn] r61992 - py/branch/pytestplugin/py/test/plugin
hpk at codespeak.net
hpk at codespeak.net
Wed Feb 18 09:59:07 CET 2009
Author: hpk
Date: Wed Feb 18 09:59:04 2009
New Revision: 61992
Modified:
py/branch/pytestplugin/py/test/plugin/pytest_pocoo.py
py/branch/pytestplugin/py/test/plugin/pytest_terminal.py
py/branch/pytestplugin/py/test/plugin/pytest_xfail.py
Log:
strike unneccessary stats class and event sink
Modified: py/branch/pytestplugin/py/test/plugin/pytest_pocoo.py
==============================================================================
--- py/branch/pytestplugin/py/test/plugin/pytest_pocoo.py (original)
+++ py/branch/pytestplugin/py/test/plugin/pytest_pocoo.py Wed Feb 18 09:59:04 2009
@@ -21,11 +21,11 @@
def pytest_terminal_summary(self, terminalreporter):
if terminalreporter.config.option.pocoo_sendfailures:
tr = terminalreporter
- if tr.stats.failed and tr.config.option.tbstyle != "no":
+ if 'failed' in tr.stats and tr.config.option.tbstyle != "no":
terminalreporter.write_sep("=", "Sending failures to %s" %(url.base,))
terminalreporter.write_line("xmlrpcurl: %s" %(url.xmlrpc,))
serverproxy = self.getproxy()
- for ev in terminalreporter.stats.failed:
+ for ev in terminalreporter.stats.get('failed'):
tw = py.io.TerminalWriter(stringio=True)
ev.toterminal(tw)
s = tw.stringio.getvalue()
Modified: py/branch/pytestplugin/py/test/plugin/pytest_terminal.py
==============================================================================
--- py/branch/pytestplugin/py/test/plugin/pytest_terminal.py (original)
+++ py/branch/pytestplugin/py/test/plugin/pytest_terminal.py Wed Feb 18 09:59:04 2009
@@ -31,77 +31,6 @@
#print "calling", repmethod, event
repmethod(event)
-class OutcomeStats:
- def __init__(self, bus):
- self._reset()
- bus.subscribe_methods(self)
-
- def _reset(self):
- self.skipped = []
- self.passed = []
- self.failed = []
- self.deselected = []
-
- def pyevent_itemtestreport(self, ev):
- for name in 'skipped failed passed'.split():
- if getattr(ev, name):
- l = getattr(self, name)
- l.append(ev)
-
- def pyevent_collectionreport(self, ev):
- if ev.skipped:
- self.skipped.append(ev)
- if ev.failed:
- self.failed.append(ev)
-
- def pyevent_deselected(self, ev):
- self.deselected.extend(ev.items)
-
- def pyevent_testrunstart(self, ev):
- self._reset()
-
-class TestOutcomeStats:
- def test_outcomestats(self):
- names = 'passed skipped deselected failed'.split()
- #for name in names:
- # stats = OutcomeStats()
- # assert getattr(stats, name) == []
- # bus = py.test._EventBus()
- # bus.subscribe_methods(stats)
- # rep = event.ItemTestReport(None)
- # setattr(rep, name, True)
- # bus.notify(itemtestreport=rep)
- # assert getattr(stats, name) == [rep]
-
- bus = py.test._EventBus()
- stats = OutcomeStats(bus)
- class P:
- passed = True
- failed = skipped = False
- bus.notify(itemtestreport=P)
- assert stats.passed
- assert stats.passed == [P]
- bus.notify(itemtestreport=P)
- assert stats.passed == [P, P]
-
- class F:
- skipped = passed = False
- failed = True
- bus.notify(itemtestreport=F)
- assert stats.failed == [F]
- bus.notify(collectionreport=F)
- assert stats.failed == [F, F]
- class S:
- skipped = True
- passed = failed = False
- bus.notify(itemtestreport=S)
- assert stats.skipped == [S]
-
- class D:
- items = [42]
- bus.notify(deselected=D)
- assert stats.deselected == [42]
-
def folded_skips(skipped):
d = {}
for event in skipped:
@@ -113,11 +42,10 @@
l.append((len(events),) + key)
return l
-
class TerminalReporter:
def __init__(self, config, file=None):
self.config = config
- self.stats = OutcomeStats(config.bus)
+ self.stats = {}
self.curdir = py.path.local()
if file is None:
file = py.std.sys.stdout
@@ -219,13 +147,14 @@
def rep_RescheduleItems(self, ev):
if self.config.option.debug:
self.write_sep("!", "RESCHEDULING %s " %(ev.items,))
+
+ def rep_Deselected(self, ev):
+ self.stats.setdefault('deselected', []).append(ev)
def rep_ItemTestReport(self, ev):
fspath = ev.colitem.fspath
cat, letter, word = self.getcategoryletterword(ev)
- l = self.stats.__dict__.setdefault(cat, [])
- if ev not in l:
- l.append(ev)
+ self.stats.setdefault(cat, []).append(ev)
if not self.config.option.verbose:
self.write_fspath_result(fspath, letter)
else:
@@ -235,10 +164,14 @@
def rep_CollectionReport(self, ev):
if not ev.passed:
+ #XXX allow plugins to override collection failures?
+ # cat, letter, word = self.getcategoryletterword(ev)
if ev.failed:
+ self.stats.setdefault("failed", []).append(ev)
msg = ev.longrepr.reprcrash.message
self.write_fspath_result(ev.colitem.fspath, "F")
elif ev.skipped:
+ self.stats.setdefault("skipped", []).append(ev)
self.write_fspath_result(ev.colitem.fspath, "S")
def rep_TestrunStart(self, ev):
@@ -295,9 +228,9 @@
#
def summary_failures(self):
- if self.stats.failed and self.config.option.tbstyle != "no":
+ if 'failed' in self.stats and self.config.option.tbstyle != "no":
self.write_sep("=", "FAILURES")
- for ev in self.stats.failed:
+ for ev in self.stats['failed']:
self.write_sep("_")
ev.toterminal(self._tw)
@@ -307,7 +240,7 @@
keys = "failed passed skipped deselected".split()
parts = []
for key in keys:
- val = getattr(self.stats, key)
+ val = self.stats.get(key, None)
if val:
parts.append("%d %s" %(len(val), key))
line = ", ".join(parts)
@@ -315,17 +248,18 @@
self.write_sep("=", "%s in %.2f seconds" %(line, session_duration))
def summary_deselected(self):
- if self.stats.deselected:
+ if 'deselected' in self.stats:
self.write_sep("=", "%d tests deselected by %r" %(
- len(self.stats.deselected), self.config.option.keyword), bold=True)
+ len(self.stats['deselected']), self.config.option.keyword), bold=True)
def summary_skips(self):
- if not self.stats.failed or self.config.option.showskipsummary:
- fskips = folded_skips(self.stats.skipped)
- if fskips:
- self.write_sep("_", "skipped test summary")
- for num, fspath, lineno, reason in fskips:
- self._tw.line("%s:%d: [%d] %s" %(fspath, lineno, num, reason))
+ if 'skipped' in self.stats:
+ if 'failed' not in self.stats or self.config.option.showskipsummary:
+ fskips = folded_skips(self.stats['skipped'])
+ if fskips:
+ self.write_sep("_", "skipped test summary")
+ for num, fspath, lineno, reason in fskips:
+ self._tw.line("%s:%d: [%d] %s" %(fspath, lineno, num, reason))
def summary_final_exc(self, excrepr):
self.write_sep("!")
Modified: py/branch/pytestplugin/py/test/plugin/pytest_xfail.py
==============================================================================
--- py/branch/pytestplugin/py/test/plugin/pytest_xfail.py (original)
+++ py/branch/pytestplugin/py/test/plugin/pytest_xfail.py Wed Feb 18 09:59:04 2009
@@ -19,7 +19,7 @@
# a hook implemented called by the terminalreporter instance/plugin
def pytest_terminal_summary(self, terminalreporter):
tr = terminalreporter
- xfailed = tr.stats.__dict__.get("xfailed")
+ xfailed = tr.stats.get("xfailed")
if xfailed:
tr.write_sep("_", "EXPECTED XFAILURES")
for event in xfailed:
@@ -29,7 +29,7 @@
modpath = event.colitem.getmodpath(stopatmodule=False)
tr._tw.line("%s %s:%d: %s" %(modpath, entry.path, entry.lineno, entry.message))
- xpassed = terminalreporter.stats.__dict__.get("xpassed")
+ xpassed = terminalreporter.stats.get("xpassed")
if xpassed:
tr.write_sep("_", "UNEXPECTEDLY PASSING")
for event in xpassed:
More information about the pytest-commit
mailing list