diff --git a/py/test/dist/testing/test_dsession.py b/py/test/dist/testing/test_dsession.py index 0ebce2ffa..128daeaf2 100644 --- a/py/test/dist/testing/test_dsession.py +++ b/py/test/dist/testing/test_dsession.py @@ -365,7 +365,7 @@ class TestDSession: # see that the node is really down node = hookrecorder.popcall("pytest_testnodedown").node assert node.gateway.spec.popen - #XXX eq.geteventargs("pytest_testrunfinish") + #XXX eq.geteventargs("pytest_sessionfinish") @py.test.mark.xfail("test implementation missing") def test_collected_function_causes_remote_skip_at_module_level(self, testdir): diff --git a/py/test/plugin/api.py b/py/test/plugin/api.py index f8b931761..fe54ed8de 100644 --- a/py/test/plugin/api.py +++ b/py/test/plugin/api.py @@ -23,17 +23,15 @@ class PluginHooks: # test Session related hooks # ------------------------------------------------------------------------------ - def pytest_testrunstart(self): - """ whole test run starts. """ + def pytest_sessionstart(self, session): + """ before session.main() is called. """ - def pytest_testrunfinish(self, exitstatus, excrepr=None): + def pytest_sessionfinish(self, session, exitstatus, excrepr=None): """ whole test run finishes. """ def pytest_deselected(self, items): """ collected items that were deselected (by keyword). """ - - # ------------------------------------------------------------------------------ # collection hooks # ------------------------------------------------------------------------------ diff --git a/py/test/plugin/pytest_execnetcleanup.py b/py/test/plugin/pytest_execnetcleanup.py index 689653e5e..5c2b8883b 100644 --- a/py/test/plugin/pytest_execnetcleanup.py +++ b/py/test/plugin/pytest_execnetcleanup.py @@ -4,34 +4,25 @@ cleanup gateways that were instantiated during a test function run. import py def pytest_configure(config): - debug = config.option.debug - config.pluginmanager.register(Execnetcleanup(debug)) + config.pluginmanager.register(Execnetcleanup()) class Execnetcleanup: _gateways = None def __init__(self, debug=False): self._debug = debug - def trace(self, msg, *args): - if self._debug: - print "[execnetcleanup %0x] %s %s" %(id(self), msg, args) - def pyexecnet_gateway_init(self, gateway): - self.trace("init", gateway) if self._gateways is not None: self._gateways.append(gateway) def pyexecnet_gateway_exit(self, gateway): - self.trace("exit", gateway) if self._gateways is not None: self._gateways.remove(gateway) - def pytest_testrunstart(self): - self.trace("testrunstart") + def pytest_sessionstart(self, session): self._gateways = [] - def pytest_testrunfinish(self, exitstatus, excrepr=None): - self.trace("testrunfinish", exitstatus) + def pytest_sessionfinish(self, session, exitstatus, excrepr=None): l = [] for gw in self._gateways: gw.exit() diff --git a/py/test/plugin/pytest_hooklog.py b/py/test/plugin/pytest_hooklog.py index b9333f371..29fb5232f 100644 --- a/py/test/plugin/pytest_hooklog.py +++ b/py/test/plugin/pytest_hooklog.py @@ -31,6 +31,6 @@ def test_functional(testdir): """) testdir.runpytest("--hooklog=hook.log") s = testdir.tmpdir.join("hook.log").read() - assert s.find("pytest_testrunstart") != -1 + assert s.find("pytest_sessionstart") != -1 assert s.find("ItemTestReport") != -1 - assert s.find("testrunfinish") != -1 + assert s.find("sessionfinish") != -1 diff --git a/py/test/plugin/pytest_plugintester.py b/py/test/plugin/pytest_plugintester.py index b518cfab1..60615fff3 100644 --- a/py/test/plugin/pytest_plugintester.py +++ b/py/test/plugin/pytest_plugintester.py @@ -61,7 +61,7 @@ class PluginTester: for arg, hookarg in zip(method_args[0], hookargs[0]): if arg != hookarg: print "argument mismatch:" - print "actual : %s.%s" %(pluginclass.__name__, formatdef(method)) + print "actual : %s.%s" %(plugin.__name__, formatdef(method)) print "required:", formatdef(hook) fail = True break diff --git a/py/test/plugin/pytest_terminal.py b/py/test/plugin/pytest_terminal.py index b53036a7f..0170e48dd 100644 --- a/py/test/plugin/pytest_terminal.py +++ b/py/test/plugin/pytest_terminal.py @@ -194,7 +194,7 @@ class TerminalReporter: self.stats.setdefault("skipped", []).append(rep) self.write_fspath_result(rep.collector.fspath, "S") - def pytest_testrunstart(self): + def pytest_sessionstart(self, session): self.write_sep("=", "test session starts", bold=True) self._sessionstarttime = py.std.time.time() @@ -225,7 +225,7 @@ class TerminalReporter: for i, testarg in py.builtin.enumerate(self.config.args): self.write_line("test object %d: %s" %(i+1, testarg)) - def pytest_testrunfinish(self, exitstatus, excrepr=None): + def pytest_sessionfinish(self, session, exitstatus, excrepr=None): self._tw.line("") if exitstatus in (0, 1, 2): self.summary_failures() @@ -285,7 +285,7 @@ class TerminalReporter: return reportinfo # - # summaries for testrunfinish + # summaries for sessionfinish # def summary_failures(self): @@ -362,7 +362,7 @@ class CollectonlyReporter: self._failed.append(rep) self.indent = self.indent[:-len(self.INDENT)] - def pytest_testrunfinish(self, exitstatus, excrepr=None): + def pytest_sessionfinish(self, session, exitstatus, excrepr=None): if self._failed: self.out.sep("!", "collection failures") for rep in self._failed: @@ -409,15 +409,15 @@ class TestTerminal: """) rep = TerminalReporter(modcol.config, file=linecomp.stringio) rep.config.pluginmanager.register(rep) - rep.config.hook.pytest_testrunstart() - + rep.config.hook.pytest_sessionstart(session=testdir.session) + for item in testdir.genitems([modcol]): ev = runner.basic_run_report(item) rep.config.hook.pytest_itemtestreport(rep=ev) linecomp.assert_contains_lines([ "*test_pass_skip_fail.py .sF" ]) - rep.config.hook.pytest_testrunfinish(exitstatus=1) + rep.config.hook.pytest_sessionfinish(session=testdir.session, exitstatus=1) linecomp.assert_contains_lines([ " def test_func():", "> assert 0", @@ -436,7 +436,7 @@ class TestTerminal: """, configargs=("-v",)) rep = TerminalReporter(modcol.config, file=linecomp.stringio) rep.config.pluginmanager.register(rep) - rep.config.hook.pytest_testrunstart() + rep.config.hook.pytest_sessionstart(session=testdir.session) items = modcol.collect() rep.config.option.debug = True # for item in items: @@ -450,7 +450,7 @@ class TestTerminal: "*test_pass_skip_fail_verbose.py:4: *test_skip*SKIP*", "*test_pass_skip_fail_verbose.py:6: *test_func*FAIL*", ]) - rep.config.hook.pytest_testrunfinish(exitstatus=1) + rep.config.hook.pytest_sessionfinish(session=testdir.session, exitstatus=1) linecomp.assert_contains_lines([ " def test_func():", "> assert 0", @@ -461,13 +461,13 @@ class TestTerminal: modcol = testdir.getmodulecol("import xyz") rep = TerminalReporter(modcol.config, file=linecomp.stringio) rep.config.pluginmanager.register(rep) - rep.config.hook.pytest_testrunstart() + rep.config.hook.pytest_sessionstart(session=testdir.session) l = list(testdir.genitems([modcol])) assert len(l) == 0 linecomp.assert_contains_lines([ "*test_collect_fail.py F*" ]) - rep.config.hook.pytest_testrunfinish(exitstatus=1) + rep.config.hook.pytest_sessionfinish(session=testdir.session, exitstatus=1) linecomp.assert_contains_lines([ "> import xyz", "E ImportError: No module named xyz" @@ -557,11 +557,11 @@ class TestTerminal: """, configargs=("--tb=%s" % tbopt,)) rep = TerminalReporter(modcol.config, file=linecomp.stringio) rep.config.pluginmanager.register(rep) - rep.config.hook.pytest_testrunstart() + rep.config.hook.pytest_sessionstart(session=testdir.session) for item in testdir.genitems([modcol]): rep.config.hook.pytest_itemtestreport( rep=runner.basic_run_report(item)) - rep.config.hook.pytest_testrunfinish(exitstatus=1) + rep.config.hook.pytest_sessionfinish(session=testdir.session, exitstatus=1) s = linecomp.stringio.getvalue() if tbopt == "long": print s @@ -637,7 +637,7 @@ class TestTerminal: #""", configargs=("--showskipsummary",) + ("-v",)*verbose) rep = TerminalReporter(modcol.config, file=linecomp.stringio) modcol.config.pluginmanager.register(rep) - modcol.config.hook.pytest_testrunstart() + modcol.config.hook.pytest_sessionstart(session=testdir.session) try: for item in testdir.genitems([modcol]): modcol.config.hook.pytest_itemtestreport( @@ -649,7 +649,8 @@ class TestTerminal: s = linecomp.stringio.getvalue() if not verbose: assert s.find("_keyboard_interrupt.py Fs") != -1 - modcol.config.hook.pytest_testrunfinish(exitstatus=2, excrepr=excinfo.getrepr()) + modcol.config.hook.pytest_sessionfinish( + session=testdir.session, exitstatus=2, excrepr=excinfo.getrepr()) text = linecomp.stringio.getvalue() linecomp.assert_contains_lines([ " def test_foobar():", diff --git a/py/test/session.py b/py/test/session.py index 495940bdd..c1a9738ee 100644 --- a/py/test/session.py +++ b/py/test/session.py @@ -78,7 +78,7 @@ class Session(object): def sessionstarts(self): """ setup any neccessary resources ahead of the test run. """ - self.config.hook.pytest_testrunstart() + self.config.hook.pytest_sessionstart(session=self) def pytest_itemtestreport(self, rep): if rep.failed: @@ -89,7 +89,8 @@ class Session(object): def sessionfinishes(self, exitstatus=0, excinfo=None): """ teardown any resources after a test run. """ - self.config.hook.pytest_testrunfinish( + self.config.hook.pytest_sessionfinish( + session=self, exitstatus=exitstatus, excrepr=excinfo and excinfo.getrepr() or None )