1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
|
From: Helmut Grohne <h.grohne@intenta.de>
Subject: fix test suite failure with Python 3.5
Debian-Bug: https://bugs.debian.org/802124
Last-Update: 2017-07-26
The referenced test case classes reside inside test methods of an outer test
case class. In older versions of Python they were simply qualified with the
module. Since Python 3.5, their full name includes the outer class, the outer
method name and the part "<locals>". Thus we are seeing class names such as
"junitxml.tests.test_junitxml.TestJUnitXmlResult.test_erroring_test.<locals>.Errors"
where pyjunitxml expected just "junitxml.tests.test_junitxml.Errors".
We opt for stripping the class qualification in the central get_output method.
--- pyjunitxml-0.6.orig/junitxml/tests/test_junitxml.py
+++ pyjunitxml-0.6/junitxml/tests/test_junitxml.py
@@ -38,10 +38,11 @@ class TestJUnitXmlResult(unittest.TestCa
def get_output(self):
output = self.output.getvalue()
# Collapse detailed regions into specific strings we can match on
- return re.sub(r'(?s)<failure (.*?)>.*?</failure>',
+ return re.sub(r'(<testcase classname=")[^"]*\.([^"]*?")',
+ r'\1\2', re.sub(r'(?s)<failure (.*?)>.*?</failure>',
r'<failure \1>failure</failure>', re.sub(
r'(?s)<error (.*?)>.*?</error>', r'<error \1>error</error>',
- re.sub(r'time="\d+\.\d+"', 'time="0.000"', output)))
+ re.sub(r'time="\d+\.\d+"', 'time="0.000"', output))))
def run_test_or_simulate(self, test, method_name, manual_method,
*manual_args):
@@ -112,7 +113,7 @@ class TestJUnitXmlResult(unittest.TestCa
Errors("test_me").run(self.result)
self.result.stopTestRun()
self.assertEqual("""<testsuite errors="1" failures="0" name="" tests="1" time="0.000">
-<testcase classname="junitxml.tests.test_junitxml.Errors" name="test_me" time="0.000">
+<testcase classname="Errors" name="test_me" time="0.000">
<error type="ZeroDivisionError">error</error>
</testcase>
</testsuite>
@@ -126,7 +127,7 @@ class TestJUnitXmlResult(unittest.TestCa
Fails("test_me").run(self.result)
self.result.stopTestRun()
self.assertEqual("""<testsuite errors="0" failures="1" name="" tests="1" time="0.000">
-<testcase classname="junitxml.tests.test_junitxml.Fails" name="test_me" time="0.000">
+<testcase classname="Fails" name="test_me" time="0.000">
<failure type="AssertionError">failure</failure>
</testcase>
</testsuite>
@@ -140,7 +141,7 @@ class TestJUnitXmlResult(unittest.TestCa
Passes("test_me").run(self.result)
self.result.stopTestRun()
self.assertEqual("""<testsuite errors="0" failures="0" name="" tests="1" time="0.000">
-<testcase classname="junitxml.tests.test_junitxml.Passes" name="test_me" time="0.000"/>
+<testcase classname="Passes" name="test_me" time="0.000"/>
</testsuite>
""", self.get_output())
@@ -154,7 +155,7 @@ class TestJUnitXmlResult(unittest.TestCa
self.result.stopTestRun()
output = self.get_output()
expected = """<testsuite errors="0" failures="0" name="" tests="1" time="0.000">
-<testcase classname="junitxml.tests.test_junitxml.Skips" name="test_me" time="0.000">
+<testcase classname="Skips" name="test_me" time="0.000">
<skip>yo</skip>
</testcase>
</testsuite>
@@ -174,13 +175,13 @@ class TestJUnitXmlResult(unittest.TestCa
self.result.stopTestRun()
output = self.get_output()
expected = """<testsuite errors="0" failures="1" name="" tests="1" time="0.000">
-<testcase classname="junitxml.tests.test_junitxml.Succeeds" name="test_me" time="0.000">
+<testcase classname="Succeeds" name="test_me" time="0.000">
<failure type="unittest.case._UnexpectedSuccess"/>
</testcase>
</testsuite>
"""
expected_old = """<testsuite errors="0" failures="0" name="" tests="1" time="0.000">
-<testcase classname="junitxml.tests.test_junitxml.Succeeds" name="test_me" time="0.000"/>
+<testcase classname="Succeeds" name="test_me" time="0.000"/>
</testsuite>
"""
if output != expected_old:
@@ -201,11 +202,11 @@ class TestJUnitXmlResult(unittest.TestCa
self.result.stopTestRun()
output = self.get_output()
expected = """<testsuite errors="0" failures="0" name="" tests="1" time="0.000">
-<testcase classname="junitxml.tests.test_junitxml.ExpectedFail" name="test_me" time="0.000"/>
+<testcase classname="ExpectedFail" name="test_me" time="0.000"/>
</testsuite>
"""
expected_old = """<testsuite errors="0" failures="1" name="" tests="1" time="0.000">
-<testcase classname="junitxml.tests.test_junitxml.ExpectedFail" name="test_me" time="0.000">
+<testcase classname="ExpectedFail" name="test_me" time="0.000">
<failure type="AssertionError">failure</failure>
</testcase>
</testsuite>
|