Package: pyjunitxml / 0.6-1.3

ftbfs-802124.patch Patch series | download
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>