Add support for the new pytest_runtest_logfinish hook (pytest 3.4)
This commit is contained in:
@@ -375,6 +375,25 @@ class TestTerminalReporting:
|
||||
"*1 passed, 1 warnings*",
|
||||
])
|
||||
|
||||
def test_logfinish_hook(self, testdir):
|
||||
"""Ensure the pytest_runtest_logfinish hook is being properly handled"""
|
||||
from _pytest import hookspec
|
||||
if not hasattr(hookspec, 'pytest_runtest_logfinish'):
|
||||
pytest.skip('test requires pytest_runtest_logfinish hook in pytest (3.4+)')
|
||||
|
||||
testdir.makeconftest("""
|
||||
def pytest_runtest_logfinish():
|
||||
print('pytest_runtest_logfinish hook called')
|
||||
""")
|
||||
testdir.makepyfile("""
|
||||
def test_func():
|
||||
pass
|
||||
""")
|
||||
result = testdir.runpytest("-n1", "-s")
|
||||
result.stdout.fnmatch_lines([
|
||||
"*pytest_runtest_logfinish hook called*",
|
||||
])
|
||||
|
||||
|
||||
def test_teardownfails_one_function(testdir):
|
||||
p = testdir.makepyfile("""
|
||||
|
||||
@@ -235,6 +235,11 @@ class DSession:
|
||||
self.config.hook.pytest_runtest_logstart(
|
||||
nodeid=nodeid, location=location)
|
||||
|
||||
def slave_logfinish(self, node, nodeid, location):
|
||||
"""Emitted when a node calls the pytest_runtest_logfinish hook."""
|
||||
self.config.hook.pytest_runtest_logfinish(
|
||||
nodeid=nodeid, location=location)
|
||||
|
||||
def slave_testreport(self, node, rep):
|
||||
"""Emitted when a node calls the pytest_runtest_logreport hook."""
|
||||
rep.node = node
|
||||
|
||||
@@ -9,6 +9,8 @@
|
||||
import sys
|
||||
import os
|
||||
import time
|
||||
|
||||
import _pytest.hookspec
|
||||
import pytest
|
||||
|
||||
|
||||
@@ -93,6 +95,11 @@ class SlaveInteractor:
|
||||
def pytest_runtest_logstart(self, nodeid, location):
|
||||
self.sendevent("logstart", nodeid=nodeid, location=location)
|
||||
|
||||
# the pytest_runtest_logfinish hook was introduced in pytest 3.4
|
||||
if hasattr(_pytest.hookspec, 'pytest_runtest_logfinish'):
|
||||
def pytest_runtest_logfinish(self, nodeid, location):
|
||||
self.sendevent("logfinish", nodeid=nodeid, location=location)
|
||||
|
||||
def pytest_runtest_logreport(self, report):
|
||||
data = serialize_report(report)
|
||||
data["item_index"] = self.item_index
|
||||
|
||||
@@ -304,7 +304,7 @@ class SlaveController(object):
|
||||
self._down = True
|
||||
self.slaveoutput = kwargs['slaveoutput']
|
||||
self.notify_inproc("slavefinished", node=self)
|
||||
elif eventname == "logstart":
|
||||
elif eventname in ("logstart", "logfinish"):
|
||||
self.notify_inproc(eventname, node=self, **kwargs)
|
||||
elif eventname in (
|
||||
"testreport", "collectreport", "teardownreport"):
|
||||
|
||||
Reference in New Issue
Block a user