diff --git a/CHANGELOG b/CHANGELOG index e94a26593..e182395e1 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -12,6 +12,7 @@ Changes between 2.2.3 and 2.2.4 - fix issue #141: switch from the deceased paste.pocoo.org to bpaste.net - fix issue #143: call unconfigure/sessionfinish always when configure/sessionstart where called +- fix issue #144: better mangle test ids to junitxml classnames Changes between 2.2.2 and 2.2.3 ---------------------------------------- diff --git a/_pytest/junitxml.py b/_pytest/junitxml.py index 2859d2f68..593eb3e1b 100644 --- a/_pytest/junitxml.py +++ b/_pytest/junitxml.py @@ -81,6 +81,11 @@ def pytest_unconfigure(config): config.pluginmanager.unregister(xml) +def mangle_testnames(names): + names = [x.replace(".py", "") for x in names if x != '()'] + names[0] = names[0].replace("/", '.') + return names + class LogXML(object): def __init__(self, logfile, prefix): logfile = os.path.expanduser(os.path.expandvars(logfile)) @@ -91,9 +96,7 @@ class LogXML(object): self.failed = self.errors = 0 def _opentestcase(self, report): - names = report.nodeid.split("::") - names[0] = names[0].replace("/", '.') - names = [x.replace(".py", "") for x in names if x != "()"] + names = mangle_testnames(report.nodeid.split("::")) classnames = names[:-1] if self.prefix: classnames.insert(0, self.prefix) diff --git a/doc/announce/release-2.2.4.txt b/doc/announce/release-2.2.4.txt index d54d6c805..e92e50568 100644 --- a/doc/announce/release-2.2.4.txt +++ b/doc/announce/release-2.2.4.txt @@ -34,4 +34,5 @@ Changes between 2.2.3 and 2.2.4 - fix issue #141: switch from the deceased paste.pocoo.org to bpaste.net - fix issue #143: call unconfigure/sessionfinish always when configure/sessionstart where called +- fix issue #144: better mangle test ids to junitxml classnames diff --git a/testing/test_junitxml.py b/testing/test_junitxml.py index 0f724b5c4..2eb012ab5 100644 --- a/testing/test_junitxml.py +++ b/testing/test_junitxml.py @@ -279,6 +279,13 @@ class TestPython: if not sys.platform.startswith("java"): assert "hx" in fnode.toxml() +def test_mangle_testnames(): + from _pytest.junitxml import mangle_testnames + names = ["a/pything.py", "Class", "()", "method"] + newnames = mangle_testnames(names) + assert newnames == ["a.pything", "Class", "method"] + + class TestNonPython: def test_summing_simple(self, testdir): testdir.makeconftest("""