1
changelog/92.feature
Normal file
1
changelog/92.feature
Normal file
@@ -0,0 +1 @@
|
|||||||
|
Warnings are now properly transferred from workers to the master node.
|
||||||
@@ -339,6 +339,18 @@ class TestTerminalReporting:
|
|||||||
"E assert 0",
|
"E assert 0",
|
||||||
])
|
])
|
||||||
|
|
||||||
|
@pytest.mark.parametrize('n', ['-n0', '-n1'])
|
||||||
|
def test_logwarning(self, testdir, n):
|
||||||
|
testdir.makepyfile("""
|
||||||
|
import warnings
|
||||||
|
def test_func():
|
||||||
|
warnings.warn('this is a warning')
|
||||||
|
""")
|
||||||
|
result = testdir.runpytest(n)
|
||||||
|
result.stdout.fnmatch_lines([
|
||||||
|
"*this is a warning*",
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
def test_teardownfails_one_function(testdir):
|
def test_teardownfails_one_function(testdir):
|
||||||
p = testdir.makepyfile("""
|
p = testdir.makepyfile("""
|
||||||
|
|||||||
@@ -247,6 +247,11 @@ class DSession:
|
|||||||
if rep.failed:
|
if rep.failed:
|
||||||
self._failed_slave_collectreport(node, rep)
|
self._failed_slave_collectreport(node, rep)
|
||||||
|
|
||||||
|
def slave_logwarning(self, message, code, nodeid, fslocation):
|
||||||
|
"""Emitted when a node calls the pytest_logwarning hook."""
|
||||||
|
kwargs = dict(message=message, code=code, nodeid=nodeid, fslocation=fslocation)
|
||||||
|
self.config.hook.pytest_logwarning.call_historic(kwargs=kwargs)
|
||||||
|
|
||||||
def _clone_node(self, node):
|
def _clone_node(self, node):
|
||||||
"""Return new node based on an existing one.
|
"""Return new node based on an existing one.
|
||||||
|
|
||||||
|
|||||||
@@ -96,6 +96,9 @@ class SlaveInteractor:
|
|||||||
data = serialize_report(report)
|
data = serialize_report(report)
|
||||||
self.sendevent("collectreport", data=data)
|
self.sendevent("collectreport", data=data)
|
||||||
|
|
||||||
|
def pytest_logwarning(self, message, code, nodeid, fslocation):
|
||||||
|
self.sendevent("logwarning", message=message, code=code, nodeid=nodeid, fslocation=fslocation)
|
||||||
|
|
||||||
|
|
||||||
def serialize_report(rep):
|
def serialize_report(rep):
|
||||||
def disassembled_report(rep):
|
def disassembled_report(rep):
|
||||||
|
|||||||
@@ -315,6 +315,10 @@ class SlaveController(object):
|
|||||||
self.notify_inproc(eventname, node=self, rep=rep)
|
self.notify_inproc(eventname, node=self, rep=rep)
|
||||||
elif eventname == "collectionfinish":
|
elif eventname == "collectionfinish":
|
||||||
self.notify_inproc(eventname, node=self, ids=kwargs['ids'])
|
self.notify_inproc(eventname, node=self, ids=kwargs['ids'])
|
||||||
|
elif eventname == "logwarning":
|
||||||
|
self.notify_inproc(eventname, message=kwargs['message'],
|
||||||
|
code=kwargs['code'], nodeid=kwargs['nodeid'],
|
||||||
|
fslocation=kwargs['nodeid'])
|
||||||
else:
|
else:
|
||||||
raise ValueError("unknown event: %s" % (eventname,))
|
raise ValueError("unknown event: %s" % (eventname,))
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
|
|||||||
Reference in New Issue
Block a user