[py-svn] r61357 - in py/branch/pytestplugin/py/test: plugin testing
hpk at codespeak.net
hpk at codespeak.net
Mon Jan 26 16:36:00 CET 2009
Author: hpk
Date: Mon Jan 26 16:35:59 2009
New Revision: 61357
Modified:
py/branch/pytestplugin/py/test/plugin/pytest_terminal.py
py/branch/pytestplugin/py/test/plugin/pytest_xfail.py
py/branch/pytestplugin/py/test/testing/acceptance_test.py
Log:
using a dict for handling test result in the test reporter
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 Mon Jan 26 16:35:59 2009
@@ -33,10 +33,7 @@
self._reset()
def _reset(self):
- self._passed = []
- self._skipped = []
- self._failed = []
- self._deselected = []
+ self.status2event = {}
def processevent(self, ev):
evname = ev.__class__.__name__
@@ -50,30 +47,26 @@
pass
def rep_ItemTestReport(self, ev):
- if ev.skipped:
- self._skipped.append(ev)
- elif ev.failed:
- self._failed.append(ev)
- elif ev.passed:
- self._passed.append(ev)
+ for name in 'skipped failed passed'.split():
+ if getattr(ev, name):
+ self.status2event.setdefault(name, []).append(ev)
+ return
def rep_CollectionReport(self, ev):
- if ev.skipped:
- self._skipped.append(ev)
- elif ev.failed:
- self._failed.append(ev)
- else:
- pass # don't record passed collections
+ for name in 'skipped failed'.split():
+ if getattr(ev, name):
+ self.status2event.setdefault(name, []).append(ev)
+ return
def rep_TestrunStart(self, ev):
self._reset()
def rep_Deselected(self, ev):
- self._deselected.extend(ev.items)
+ self.status2event.setdefault('deselected', []).extend(ev.items)
def _folded_skips(self):
d = {}
- for event in self._skipped:
+ for event in self.status2event.get("skipped", []):
entry = event.longrepr.reprcrash
key = entry.path, entry.lineno, entry.message
d.setdefault(key, []).append(event)
@@ -202,12 +195,9 @@
if not ev.passed:
if ev.failed:
msg = ev.longrepr.reprcrash.message
+ self.write_fspath_result(ev.colitem.fspath, "F")
elif ev.skipped:
- msg = "Skipped:" + ev.reason
- else:
- msg = None
- if msg is not None:
- self.write_fspath_result(ev.colitem.fspath, "- " + msg)
+ self.write_fspath_result(ev.colitem.fspath, "S")
def rep_TestrunStart(self, ev):
super(TerminalReporter, self).rep_TestrunStart(ev)
@@ -257,34 +247,33 @@
#
def summary_failures(self):
- if self._failed and self.config.option.tbstyle != "no":
+ if "failed" in self.status2event and self.config.option.tbstyle != "no":
self.write_sep("=", "FAILURES")
- for ev in self._failed:
+ for ev in self.status2event['failed']:
self.write_sep("_")
ev.toterminal(self._tw)
def summary_stats(self):
session_duration = py.std.time.time() - self._sessionstarttime
- numfailed = len(self._failed)
- numskipped = len(self._skipped)
- numpassed = len(self._passed)
- sum = numfailed + numpassed
- self.write_sep("=", "%d/%d passed + %d skips in %.2f seconds" %
- (numpassed, sum, numskipped, session_duration), bold=True)
- if numfailed == 0:
- self.write_sep("=", "failures: no failures :)", green=True)
- else:
- self.write_sep("=", "failures: %d" %(numfailed), red=True)
+
+ keys = "failed passed skipped deselected".split()
+ parts = []
+ for key in keys:
+ if key in self.status2event:
+ parts.append("%d %s" %(len(self.status2event[key]), key))
+ line = ", ".join(parts)
+ # XXX coloring
+ self.write_sep("=", "%s in %.2f seconds" %(line, session_duration))
def summary_deselected(self):
- if not self._deselected:
- return
- self.write_sep("=", "%d tests deselected by %r" %(
- len(self._deselected), self.config.option.keyword), bold=True)
+ l = self.status2event.get("deselected", None)
+ if l:
+ self.write_sep("=", "%d tests deselected by %r" %(
+ len(l), self.config.option.keyword), bold=True)
def summary_skips(self):
- if not self._failed or self.config.option.showskipsummary:
+ if "failed" not in self.status2event or self.config.option.showskipsummary:
folded_skips = self._folded_skips()
if folded_skips:
self.write_sep("_", "skipped test summary")
@@ -448,7 +437,7 @@
assert len(l) == 0
s = popvalue(stringio)
print s
- assert s.find("test_collect_fail.py - ImportError: No module named") != -1
+ assert s.find("test_collect_fail.py F") != -1
rep.processevent(event.TestrunFinish())
assert_stringio_contains_lines(stringio, [
"> import xyz",
@@ -671,7 +660,7 @@
ev = event.ItemTestReport(None)
setattr(ev, outcome, True)
rep.processevent(ev)
- assert getattr(rep, '_' + outcome) == [ev]
+ assert rep.status2event[outcome]
def test_CollectionReport_events_are_counted(self):
for outcome in 'skipped failed'.split():
@@ -679,7 +668,7 @@
ev = event.CollectionReport(None, None)
setattr(ev, outcome, True)
rep.processevent(ev)
- assert getattr(rep, '_' + outcome) == [ev]
+ assert rep.status2event[outcome]
def test_skip_reasons_folding(self):
rep = BaseReporter()
@@ -698,7 +687,7 @@
ev2.skipped = True
rep.processevent(ev1)
rep.processevent(ev2)
- assert len(rep._skipped) == 2
+ assert len(rep.status2event['skipped']) == 2
l = rep._folded_skips()
assert len(l) == 1
num, fspath, lineno, reason = l[0]
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 Mon Jan 26 16:35:59 2009
@@ -9,12 +9,12 @@
class Xfail(object):
def pytest_report_teststatus(self, event):
- """ return category/verbose and shortletter. """
- if 'xfail' in resultevent.keywords: #the
+ """ return shortletter and verbose word. """
+ if 'xfail' in resultevent.keywords:
if resultevent.failed:
- return "x", "xfailed"
+ return "passed", "x", "xfail"
else:
- return "P", "passed_xfailed"
+ return "failed", "P", "xpass"
#def pytest_terminal_summary_category_sort(self, name1, name2):
# ...
Modified: py/branch/pytestplugin/py/test/testing/acceptance_test.py
==============================================================================
--- py/branch/pytestplugin/py/test/testing/acceptance_test.py (original)
+++ py/branch/pytestplugin/py/test/testing/acceptance_test.py Mon Jan 26 16:35:59 2009
@@ -128,7 +128,7 @@
result = self.runpytest()
extra = assert_lines_contain_lines(result.outlines, [
"*test_one.py ss",
- "*test_two.py - Skipped*",
+ "*test_two.py S",
"___* skipped test summary *_",
"*conftest.py:3: *3* Skipped: 'test'",
])
@@ -180,7 +180,7 @@
old.chdir()
extra = assert_lines_contain_lines(result.outlines, [
"test_one.py ..",
- "* failures: no failures*",
+ "* 2 pass*",
])
assert result.ret == 0
@@ -196,8 +196,7 @@
"*localhost* %s %s - Python %s*" %(
py.std.sys.platform, py.std.sys.executable, verinfo),
"*test_one.py .",
- "=* 1/1 passed + 0 skips in *.[0-9][0-9] seconds *=",
- "=* no failures :)*=",
+ "=* 1 passed in *.[0-9][0-9] seconds *=",
])
def test_traceback_failure(self):
@@ -305,8 +304,7 @@
"HOSTUP: localhost*Python*",
#"HOSTUP: localhost*Python*",
#"HOSTUP: localhost*Python*",
- "*1/3 passed + 1 skip*",
- "*failures: 2*",
+ "*2 failed, 1 passed, 1 skipped*",
])
assert result.ret == 1
@@ -341,8 +339,7 @@
"*localhost*Python*",
"*localhost*Python*",
"HostDown*localhost*TERMINATED*",
- "*1/4 passed + 1 skip*",
- "*failures: 3*",
+ "*3 failed, 1 passed, 1 skipped*"
])
assert result.ret == 1
@@ -358,7 +355,7 @@
assert_lines_contain_lines(result.outlines, [
#"*test_inter() INTERRUPTED",
"*KEYBOARD INTERRUPT*",
- "*0/1 passed*",
+ "*1 failed*",
])
def test_verbose_reporting(self):
@@ -414,7 +411,7 @@
child.expect(".*hello.*")
child.expect("(Pdb)")
child.sendeof()
- child.expect("failures: 1")
+ child.expect("1 failed")
if child.isalive():
child.wait()
@@ -430,13 +427,13 @@
child.timeout = EXPECTTIMEOUT
child.expect("assert 1 == 0")
child.expect("test_one.py:")
- child.expect("failures: 1")
+ child.expect("1 failed")
child.expect("waiting for changes")
test_one.write(py.code.Source("""
def test_1():
assert 1 == 1
"""))
child.expect("MODIFIED.*test_one.py", timeout=4.0)
- child.expect("failures: no failures", timeout=5.0)
+ child.expect("1 passed", timeout=5.0)
child.kill(15)
More information about the pytest-commit
mailing list