From a69fda59db89a1a95c5b367a6ebc9bb3487e9e01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= Date: Wed, 12 Aug 2026 17:44:23 +0200 Subject: [PATCH] Skip more pyexpat tests based on compile-time expat version, not runtime This is a followup for GH-144739 and GH-155485 --- Lib/test/test_pyexpat.py | 10 ++++++---- Lib/test/test_sax.py | 4 ++-- Lib/test/test_xml_etree.py | 4 ++-- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/Lib/test/test_pyexpat.py b/Lib/test/test_pyexpat.py index baa4f178427d532..c8fbeca6a60bc18 100644 --- a/Lib/test/test_pyexpat.py +++ b/Lib/test/test_pyexpat.py @@ -1095,9 +1095,11 @@ def test_error_path_no_crash(self): class ReparseDeferralTest(unittest.TestCase): + deferal_supported = expat.ParserCreate().GetReparseDeferralEnabled() + def test_getter_setter_round_trip(self): parser = expat.ParserCreate() - enabled = (expat.version_info >= (2, 6, 0)) + enabled = self.deferal_supported self.assertIs(parser.GetReparseDeferralEnabled(), enabled) parser.SetReparseDeferralEnabled(False) @@ -1106,8 +1108,8 @@ def test_getter_setter_round_trip(self): self.assertIs(parser.GetReparseDeferralEnabled(), enabled) def test_reparse_deferral_enabled(self): - if expat.version_info < (2, 6, 0): - self.skipTest(f'Expat {expat.version_info} does not ' + if not self.deferal_supported: + self.skipTest(f'Expat < 2.6.0 does not ' 'support reparse deferral') started = [] @@ -1137,7 +1139,7 @@ def start_element(name, _): parser = expat.ParserCreate() parser.StartElementHandler = start_element - if expat.version_info >= (2, 6, 0): + if self.deferal_supported: parser.SetReparseDeferralEnabled(False) self.assertFalse(parser.GetReparseDeferralEnabled()) diff --git a/Lib/test/test_sax.py b/Lib/test/test_sax.py index 29babd7bf6996ad..27ae6c8a953149c 100644 --- a/Lib/test/test_sax.py +++ b/Lib/test/test_sax.py @@ -1216,8 +1216,8 @@ def test_expat_incremental_reset(self): self.assertEqual(result.getvalue(), start + b"text") - @unittest.skipIf(pyexpat.version_info < (2, 6, 0), - f'Expat {pyexpat.version_info} does not ' + @unittest.skipIf(not pyexpat.ParserCreate().GetReparseDeferralEnabled(), + 'Python compiled with Expat < 2.6.0 does not ' 'support reparse deferral') def test_flush_reparse_deferral_enabled(self): result = BytesIO() diff --git a/Lib/test/test_xml_etree.py b/Lib/test/test_xml_etree.py index 0c944516ae115f1..df2815a71e5fc2a 100644 --- a/Lib/test/test_xml_etree.py +++ b/Lib/test/test_xml_etree.py @@ -1915,8 +1915,8 @@ def test_unknown_event(self): with self.assertRaisesRegex(ValueError, "unknown event 'bogus'"): ET.XMLPullParser(events=(x.decode() for x in (b'start', b'end', b'bogus'))) - @unittest.skipIf(pyexpat.version_info < (2, 6, 0), - f'Expat {pyexpat.version_info} does not ' + @unittest.skipIf(not pyexpat.ParserCreate().GetReparseDeferralEnabled(), + 'Python compiled with Expat < 2.6.0 does not ' 'support reparse deferral') def test_flush_reparse_deferral_enabled(self): parser = ET.XMLPullParser(events=('start', 'end'))