Merge pull request #266 from nicoddemus/pytest_runtest_logfinish
Add support for the new pytest_runtest_logfinish hook (pytest 3.4)
This commit is contained in:
1
changelog/266.feature
Normal file
1
changelog/266.feature
Normal file
@@ -0,0 +1 @@
|
|||||||
|
Add support for the ``pytest_runtest_logfinish`` hook which will be released in pytest 3.4.
|
||||||
@@ -375,6 +375,25 @@ class TestTerminalReporting:
|
|||||||
"*1 passed, 1 warnings*",
|
"*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):
|
def test_teardownfails_one_function(testdir):
|
||||||
p = testdir.makepyfile("""
|
p = testdir.makepyfile("""
|
||||||
|
|||||||
@@ -235,6 +235,11 @@ class DSession:
|
|||||||
self.config.hook.pytest_runtest_logstart(
|
self.config.hook.pytest_runtest_logstart(
|
||||||
nodeid=nodeid, location=location)
|
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):
|
def slave_testreport(self, node, rep):
|
||||||
"""Emitted when a node calls the pytest_runtest_logreport hook."""
|
"""Emitted when a node calls the pytest_runtest_logreport hook."""
|
||||||
rep.node = node
|
rep.node = node
|
||||||
|
|||||||
@@ -9,6 +9,8 @@
|
|||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
import time
|
import time
|
||||||
|
|
||||||
|
import _pytest.hookspec
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
|
|
||||||
@@ -93,6 +95,11 @@ class SlaveInteractor:
|
|||||||
def pytest_runtest_logstart(self, nodeid, location):
|
def pytest_runtest_logstart(self, nodeid, location):
|
||||||
self.sendevent("logstart", nodeid=nodeid, location=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):
|
def pytest_runtest_logreport(self, report):
|
||||||
data = serialize_report(report)
|
data = serialize_report(report)
|
||||||
data["item_index"] = self.item_index
|
data["item_index"] = self.item_index
|
||||||
|
|||||||
@@ -304,7 +304,7 @@ class SlaveController(object):
|
|||||||
self._down = True
|
self._down = True
|
||||||
self.slaveoutput = kwargs['slaveoutput']
|
self.slaveoutput = kwargs['slaveoutput']
|
||||||
self.notify_inproc("slavefinished", node=self)
|
self.notify_inproc("slavefinished", node=self)
|
||||||
elif eventname == "logstart":
|
elif eventname in ("logstart", "logfinish"):
|
||||||
self.notify_inproc(eventname, node=self, **kwargs)
|
self.notify_inproc(eventname, node=self, **kwargs)
|
||||||
elif eventname in (
|
elif eventname in (
|
||||||
"testreport", "collectreport", "teardownreport"):
|
"testreport", "collectreport", "teardownreport"):
|
||||||
|
|||||||
Reference in New Issue
Block a user