summaryrefslogtreecommitdiffstats
path: root/meta/recipes-core/libxml/libxml2/fix-tests.patch
blob: 80678efcfee6c7361c58d6b9b353dbacc3c8a26b (plain)
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
Backport the following patches to fix the reader2 and runsuite test cases:

b92768cd tests: Enable "runsuite" test
0ac8c15e python/tests/reader2: use absolute paths everywhere
b9ba5e1d python/tests/reader2: always exit(1) if a test fails

Upstream-Status: Backport
Signed-off-by: Ross Burton <ross.burton@arm.com>

diff --git a/python/tests/reader2.py b/python/tests/reader2.py
index 65cecd47..6e6353b4 100755
--- a/python/tests/reader2.py
+++ b/python/tests/reader2.py
@@ -6,7 +6,6 @@
 import sys
 import glob
 import os
-import string
 import libxml2
 try:
     import StringIO
@@ -20,103 +19,104 @@ libxml2.debugMemory(1)
 
 err = ""
 basedir = os.path.dirname(os.path.realpath(__file__))
-dir_prefix = os.path.join(basedir, "../../test/valid/")
+dir_prefix = os.path.realpath(os.path.join(basedir, "..", "..", "test", "valid"))
+
 # This dictionary reflects the contents of the files
 # ../../test/valid/*.xml.err that are not empty, except that
 # the file paths in the messages start with ../../test/
 
 expect = {
     '766956':
-"""../../test/valid/dtds/766956.dtd:2: parser error : PEReference: expecting ';'
+"""{0}/dtds/766956.dtd:2: parser error : PEReference: expecting ';'
 %ä%ent;
    ^
-../../test/valid/dtds/766956.dtd:2: parser error : Content error in the external subset
+{0}/dtds/766956.dtd:2: parser error : Content error in the external subset
 %ä%ent;
         ^
 Entity: line 1: 
 value
 ^
-""",
+""".format(dir_prefix),
     '781333':
-"""../../test/valid/781333.xml:4: element a: validity error : Element a content does not follow the DTD, expecting ( ..., got 
+"""{0}/781333.xml:4: element a: validity error : Element a content does not follow the DTD, expecting ( ..., got 
 <a/>
     ^
-../../test/valid/781333.xml:5: element a: validity error : Element a content does not follow the DTD, Expecting more child
+{0}/781333.xml:5: element a: validity error : Element a content does not follow the DTD, Expecting more child
 
 ^
-""",
+""".format(dir_prefix),
     'cond_sect2':
-"""../../test/valid/dtds/cond_sect2.dtd:15: parser error : All markup of the conditional section is not in the same entity
+"""{0}/dtds/cond_sect2.dtd:15: parser error : All markup of the conditional section is not in the same entity
     %ent;
          ^
 Entity: line 1: 
 ]]>
 ^
-../../test/valid/dtds/cond_sect2.dtd:17: parser error : Content error in the external subset
+{0}/dtds/cond_sect2.dtd:17: parser error : Content error in the external subset
 
 ^
-""",
+""".format(dir_prefix),
     'rss':
-"""../../test/valid/rss.xml:177: element rss: validity error : Element rss does not carry attribute version
+"""{0}/rss.xml:177: element rss: validity error : Element rss does not carry attribute version
 </rss>
       ^
-""",
+""".format(dir_prefix),
     't8':
-"""../../test/valid/t8.xml:6: parser error : internal error: xmlParseInternalSubset: error detected in Markup declaration
+"""{0}/t8.xml:6: parser error : internal error: xmlParseInternalSubset: error detected in Markup declaration
 
 %defroot; %defmiddle; %deftest;
          ^
 Entity: line 1: 
 &lt;!ELEMENT root (middle) >
 ^
-../../test/valid/t8.xml:6: parser error : internal error: xmlParseInternalSubset: error detected in Markup declaration
+{0}/t8.xml:6: parser error : internal error: xmlParseInternalSubset: error detected in Markup declaration
 
 %defroot; %defmiddle; %deftest;
                      ^
 Entity: line 1: 
 &lt;!ELEMENT middle (test) >
 ^
-../../test/valid/t8.xml:6: parser error : internal error: xmlParseInternalSubset: error detected in Markup declaration
+{0}/t8.xml:6: parser error : internal error: xmlParseInternalSubset: error detected in Markup declaration
 
 %defroot; %defmiddle; %deftest;
                                ^
 Entity: line 1: 
 &lt;!ELEMENT test (#PCDATA) >
 ^
-""",
+""".format(dir_prefix),
     't8a':
-"""../../test/valid/t8a.xml:6: parser error : internal error: xmlParseInternalSubset: error detected in Markup declaration
+"""{0}/t8a.xml:6: parser error : internal error: xmlParseInternalSubset: error detected in Markup declaration
 
 %defroot;%defmiddle;%deftest;
          ^
 Entity: line 1: 
 &lt;!ELEMENT root (middle) >
 ^
-../../test/valid/t8a.xml:6: parser error : internal error: xmlParseInternalSubset: error detected in Markup declaration
+{0}/t8a.xml:6: parser error : internal error: xmlParseInternalSubset: error detected in Markup declaration
 
 %defroot;%defmiddle;%deftest;
                     ^
 Entity: line 1: 
 &lt;!ELEMENT middle (test) >
 ^
-../../test/valid/t8a.xml:6: parser error : internal error: xmlParseInternalSubset: error detected in Markup declaration
+{0}/t8a.xml:6: parser error : internal error: xmlParseInternalSubset: error detected in Markup declaration
 
 %defroot;%defmiddle;%deftest;
                              ^
 Entity: line 1: 
 &lt;!ELEMENT test (#PCDATA) >
 ^
-""",
+""".format(dir_prefix),
     'xlink':
-"""../../test/valid/xlink.xml:450: element termdef: validity error : ID dt-arc already defined
+"""{0}/xlink.xml:450: element termdef: validity error : ID dt-arc already defined
 	<p><termdef id="dt-arc" term="Arc">An <ter
 	                                  ^
 validity error : attribute def line 199 references an unknown ID "dt-xlg"
-""",
+""".format(dir_prefix),
 }
 
 # Add prefix_dir and extension to the keys
-expect = {"{}{}.xml".format(dir_prefix, key): val for key, val in expect.items()}
+expect = {os.path.join(dir_prefix, key + ".xml"): val for key, val in expect.items()}
 
 def callback(ctx, str):
     global err
@@ -124,11 +124,12 @@ def callback(ctx, str):
 libxml2.registerErrorHandler(callback, "")
 
 parsing_error_files = ["766956", "cond_sect2", "t8", "t8a"]
-expect_parsing_error = ["{}{}.xml".format(dir_prefix, f) for f in parsing_error_files]
+expect_parsing_error = [os.path.join(dir_prefix, f + ".xml") for f in parsing_error_files]
 
-valid_files = glob.glob(dir_prefix + "*.x*")
+valid_files = glob.glob(os.path.join(dir_prefix, "*.x*"))
 assert valid_files, "found no valid files in '{}'".format(dir_prefix)
 valid_files.sort()
+failures = 0
 for file in valid_files:
     err = ""
     reader = libxml2.newTextReaderFilename(file)
@@ -142,9 +143,15 @@ for file in valid_files:
         #sys.exit(1)
     if (err):
         if not(file in expect and err == expect[file]):
+            failures += 1
             print("Error: ", err)
             if file in expect:
                 print("Expected: ", expect[file])
+
+if failures:
+    print("Failed %d tests" % failures)
+    sys.exit(1)
+
 #
 # another separate test based on Stephane Bidoul one
 #
@@ -337,9 +344,11 @@ while reader.Read() == 1:
 if res != expect:
     print("test5 failed: unexpected output")
     print(res)
+    sys.exit(1)
 if err != "":
     print("test5 failed: validation error found")
     print(err)
+    sys.exit(1)
 
 #
 # cleanup
diff --git a/runsuite.c b/runsuite.c
index 483490a2..a522d24b 100644
--- a/runsuite.c
+++ b/runsuite.c
@@ -1054,13 +1054,18 @@ main(int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED) {
     old_tests = nb_tests;
     old_leaks = nb_leaks;
     xsdTest();
-    if ((nb_errors == old_errors) && (nb_leaks == old_leaks))
-	printf("Ran %d tests, no errors\n", nb_tests - old_tests);
-    else
-	printf("Ran %d tests, %d errors, %d leaks\n",
-	       nb_tests - old_tests,
-	       nb_errors - old_errors,
-	       nb_leaks - old_leaks);
+    printf("Ran %d tests, %d errors, %d leaks\n",
+           nb_tests - old_tests,
+           nb_errors - old_errors,
+           nb_leaks - old_leaks);
+    if (nb_errors - old_errors == 10) {
+        printf("10 errors were expected\n");
+        nb_errors = old_errors;
+    } else {
+        printf("10 errors were expected, got %d errors\n",
+               nb_errors - old_errors);
+        nb_errors = old_errors + 1;
+    }
     old_errors = nb_errors;
     old_tests = nb_tests;
     old_leaks = nb_leaks;