diff --git a/Lib/test/test_pyexpat.py b/Lib/test/test_pyexpat.py index baa4f178427d53..0019477cd1368b 100644 --- a/Lib/test/test_pyexpat.py +++ b/Lib/test/test_pyexpat.py @@ -19,6 +19,11 @@ from xml.parsers.expat import errors +# pyexpat built with expat 2.6.0+ has support for reparse deferral +# and defaults to enabled +HAS_REPARSE_DEFERRAL = expat.ParserCreate().GetReparseDeferralEnabled() + + class SetAttributeTest(unittest.TestCase): def setUp(self): self.parser = expat.ParserCreate(namespace_separator='!') @@ -1097,7 +1102,7 @@ def test_error_path_no_crash(self): class ReparseDeferralTest(unittest.TestCase): def test_getter_setter_round_trip(self): parser = expat.ParserCreate() - enabled = (expat.version_info >= (2, 6, 0)) + enabled = HAS_REPARSE_DEFERRAL self.assertIs(parser.GetReparseDeferralEnabled(), enabled) parser.SetReparseDeferralEnabled(False) @@ -1106,8 +1111,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 HAS_REPARSE_DEFERRAL: + self.skipTest(f'Expat < 2.6.0 does not ' 'support reparse deferral') started = [] @@ -1137,7 +1142,7 @@ def start_element(name, _): parser = expat.ParserCreate() parser.StartElementHandler = start_element - if expat.version_info >= (2, 6, 0): + if HAS_REPARSE_DEFERRAL: parser.SetReparseDeferralEnabled(False) self.assertFalse(parser.GetReparseDeferralEnabled()) diff --git a/Lib/test/test_sax.py b/Lib/test/test_sax.py index 29babd7bf6996a..27ae6c8a953149 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 0c944516ae115f..df2815a71e5fc2 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'))