From 76fb51a4baf88284536f613e1e240403c2a08106 Mon Sep 17 00:00:00 2001 From: Ronny Pfannschmidt Date: Sun, 24 Mar 2013 20:43:25 +0100 Subject: [PATCH] fix issue 271 - dont write junitxml on slave nodes --- CHANGELOG | 2 ++ _pytest/junitxml.py | 3 ++- testing/test_junitxml.py | 19 +++++++++++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) 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("""