diff --git a/CHANGELOG b/CHANGELOG index 00001b58d..c04e3f149 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,8 @@ Changes between 2.3.4 and 2.3.5dev ----------------------------------- +- issue 271 - dont write junitxml on slave nodes + - Issue 274 - dont try to show full doctest example when doctest does not know the example location diff --git a/_pytest/junitxml.py b/_pytest/junitxml.py index 117e0bd12..63a402616 100644 --- a/_pytest/junitxml.py +++ b/_pytest/junitxml.py @@ -70,7 +70,8 @@ def pytest_addoption(parser): def pytest_configure(config): xmlpath = config.option.xmlpath - if xmlpath: + # prevent opening xmllog on slave nodes (xdist) + if xmlpath and not hasattr(config, 'slaveinput'): config._xml = LogXML(xmlpath, config.option.junitprefix) config.pluginmanager.register(config._xml) diff --git a/testing/test_junitxml.py b/testing/test_junitxml.py index 2a75ceaaa..a3c248489 100644 --- a/testing/test_junitxml.py +++ b/testing/test_junitxml.py @@ -289,6 +289,25 @@ def test_mangle_testnames(): assert newnames == ["a.pything", "Class", "method"] +def test_dont_configure_on_slaves(tmpdir): + gotten = [] + class FakeConfig: + def __init__(self): + self.pluginmanager = self + self.option = self + junitprefix = None + #XXX: shouldnt need tmpdir ? + xmlpath = str(tmpdir.join('junix.xml')) + register = gotten.append + fake_config = FakeConfig() + from _pytest import junitxml + junitxml.pytest_configure(fake_config) + assert len(gotten) == 1 + FakeConfig.slaveinput = None + junitxml.pytest_configure(fake_config) + assert len(gotten) == 1 + + class TestNonPython: def test_summing_simple(self, testdir): testdir.makeconftest("""