8000 [3.8] gh-117187: Fix XML tests for vanilla Expat <2.6.0 (GH-117203) (… · python/cpython@928d735 · GitHub
[go: up one dir, main page]

Skip to content

Commit 928d735

Browse files
[3.8] gh-117187: Fix XML tests for vanilla Expat <2.6.0 (GH-117203) (#117248)
This fixes XML unittest fallout from the #115398 security fix. When configured using `--with-system-expat` on systems with older pre 2.6.0 versions of libexpat, our unittests were failing. (cherry picked from commit 9f74e86) Co-authored-by: Sebastian Pipping <sebastian@pipping.org>
1 parent 95c340a commit 928d735

File tree

3 files changed

+9
-9
lines changed

3 files changed

+9
-9
lines changed

Lib/test/test_sax.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1207,10 +1207,10 @@ def test_expat_incremental_reset(self):
12071207

12081208
self.assertEqual(result.getvalue(), start + b"<doc>text</doc>")
12091209

1210+
@unittest.skipIf(pyexpat.version_info < (2, 6, 0),
1211+
f'Expat {pyexpat.version_info} does not '
1212+
'support reparse deferral')
12101213
def test_flush_reparse_deferral_enabled(self):
1211-
if pyexpat.version_info < (2, 6, 0):
1212-
self.skipTest(f'Expat {pyexpat.version_info} does not support reparse deferral')
1213-
12141214
result = BytesIO()
12151215
xmlgen = XMLGenerator(result)
12161216
parser = create_parser()
@@ -1243,8 +1243,8 @@ def test_flush_reparse_deferral_disabled(self):
12431243

12441244
if pyexpat.version_info >= (2, 6, 0):
12451245
parser._parser.SetReparseDeferralEnabled(False)
1246+
self.assertEqual(result.getvalue(), start) # i.e. no elements started
12461247

1247-
self.assertEqual(result.getvalue(), start) # i.e. no elements started
12481248
self.assertFalse(parser._parser.GetReparseDeferralEnabled())
12491249

12501250
parser.flush()

Lib/test/test_xml_etree.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1494,11 +1494,10 @@ def test_unknown_event(self):
14941494
with self.assertRaises(ValueError):
14951495
ET.XMLPullParser(events=('start', 'end', 'bogus'))
14961496

1497+
@unittest.skipIf(pyexpat.version_info < (2, 6, 0),
1498+
f'Expat {pyexpat.version_info} does not '
1499+
'support reparse deferral')
14971500
def test_flush_reparse_deferral_enabled(self):
1498-
if pyexpat.version_info < (2, 6, 0):
1499-
self.skipTest(f'Expat {pyexpat.version_info} does not '
1500-
'support reparse deferral')
1501-
15021501
parser = ET.XMLPullParser(events=('start', 'end'))
15031502

15041503
for chunk in ("<doc", ">"):
@@ -1530,8 +1529,8 @@ def test_flush_reparse_deferral_disabled(self):
15301529
self.skipTest(f'XMLParser.(Get|Set)ReparseDeferralEnabled '
15311530
'methods not available in C')
15321531
parser._parser._parser.SetReparseDeferralEnabled(False)
1532+
self.assert_event_tags(parser, []) # i.e. no elements started
15331533

1534-
self.assert_event_tags(parser, []) # i.e. no elements started
15351534
if ET is pyET:
15361535
self.assertFalse(parser._parser._parser.GetReparseDeferralEnabled())
15371536

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix XML tests for vanilla Expat <2.6.0.

0 commit comments

Comments
 (0)
0