Skip to content

Commit f7c7e72

Browse files
[3.9] gh-117187: Fix XML tests for vanilla Expat <2.6.0 (GH-117203) (GH-117247)
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 <[email protected]>
1 parent a04a0f6 commit f7c7e72

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
@@ -1211,10 +1211,10 @@ def test_expat_incremental_reset(self):
12111211

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

1214+
@unittest.skipIf(pyexpat.version_info < (2, 6, 0),
1215+
f'Expat {pyexpat.version_info} does not '
1216+
'support reparse deferral')
12141217
def test_flush_reparse_deferral_enabled(self):
1215-
if pyexpat.version_info < (2, 6, 0):
1216-
self.skipTest(f'Expat {pyexpat.version_info} does not support reparse deferral')
1217-
12181218
result = BytesIO()
12191219
xmlgen = XMLGenerator(result)
12201220
parser = create_parser()
@@ -1247,8 +1247,8 @@ def test_flush_reparse_deferral_disabled(self):
12471247

12481248
if pyexpat.version_info >= (2, 6, 0):
12491249
parser._parser.SetReparseDeferralEnabled(False)
1250+
self.assertEqual(result.getvalue(), start) # i.e. no elements started
12501251

1251-
self.assertEqual(result.getvalue(), start) # i.e. no elements started
12521252
self.assertFalse(parser._parser.GetReparseDeferralEnabled())
12531253

12541254
parser.flush()

Lib/test/test_xml_etree.py

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

1622+
@unittest.skipIf(pyexpat.version_info < (2, 6, 0),
1623+
f'Expat {pyexpat.version_info} does not '
1624+
'support reparse deferral')
16221625
def test_flush_reparse_deferral_enabled(self):
1623-
if pyexpat.version_info < (2, 6, 0):
1624-
self.skipTest(f'Expat {pyexpat.version_info} does not '
1625-
'support reparse deferral')
1626-
16271626
parser = ET.XMLPullParser(events=('start', 'end'))
16281627

16291628
for chunk in ("<doc", ">"):
@@ -1655,8 +1654,8 @@ def test_flush_reparse_deferral_disabled(self):
16551654
self.skipTest(f'XMLParser.(Get|Set)ReparseDeferralEnabled '
16561655
'methods not available in C')
16571656
parser._parser._parser.SetReparseDeferralEnabled(False)
1657+
self.assert_event_tags(parser, []) # i.e. no elements started
16581658

1659-
self.assert_event_tags(parser, []) # i.e. no elements started
16601659
if ET is pyET:
16611660
self.assertFalse(parser._parser._parser.GetReparseDeferralEnabled())
16621661

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)