https://github.com/python/cpython/commit/a6ebca755c7f63c54dfa395f876fd495df6093d9 commit: a6ebca755c7f63c54dfa395f876fd495df6093d9 branch: 3.13 author: Miss Islington (bot) <[email protected]> committer: serhiy-storchaka <[email protected]> date: 2026-05-14T10:34:45Z summary:
[3.13] gh-148821: Add more tests for invalid XML encodings (GH-149820) (GH-149823) (cherry picked from commit c6f7368157ecf9f2cdd537d8b6fad6e011bce344) Co-authored-by: Serhiy Storchaka <[email protected]> files: M Lib/test/test_pyexpat.py diff --git a/Lib/test/test_pyexpat.py b/Lib/test/test_pyexpat.py index 1ca1f1bb2e14fe..4eeb142980034c 100644 --- a/Lib/test/test_pyexpat.py +++ b/Lib/test/test_pyexpat.py @@ -289,7 +289,7 @@ def test_parse_again(self): 'mac-roman', 'mac-turkish', 'koi8-r', 'koi8-t', 'koi8-u', 'kz1048', 'ptcp154', ]) - def test_supported_ecodings(self, encoding): + def test_supported_encodings(self, encoding): out = self.Outputter() parser = expat.ParserCreate() self._hookup_callbacks(parser, out) @@ -308,7 +308,7 @@ def test_supported_ecodings(self, encoding): 'UTF-8', 'utf-8', 'utf-16', 'utf-16le', 'utf-16be', 'koi8-u', 'cp1125', 'cp1251', 'iso8859-5', 'mac-cyrillic', ]) - def test_supported_ecodings2(self, encoding): + def test_supported_encodings2(self, encoding): out = self.Outputter() parser = expat.ParserCreate() self._hookup_callbacks(parser, out) @@ -334,14 +334,54 @@ def test_supported_ecodings2(self, encoding): "johab", "Shift_JIS", "Shift_JIS-2004", "Shift_JISX0213", ]) - def test_unsupportes_ecodings(self, encoding): + def test_unsupported_encodings(self, encoding): parser = expat.ParserCreate() data = (f'<?xml version="1.0" encoding="{encoding}"?>\n' '<root></root>').encode(encoding) with self.assertRaises(ValueError): parser.Parse(data, True) - def test_unknown_ecoding(self): + parser = expat.ParserCreate() + data = (f'<?xml version="1.0" encoding="{encoding}"?>\n' + '<root></root>').encode() + with self.assertRaises(ValueError): + parser.Parse(data, True) + + @support.subTests('encoding', [ + 'cp037', 'cp273', 'cp424', 'cp500', 'cp864', 'cp875', + 'cp1026', 'cp1140', + 'mac_arabic', 'mac_farsi', + ]) + def test_incompatible_encodings(self, encoding): + parser = expat.ParserCreate() + data = (f'<?xml version="1.0" encoding="{encoding}"?>\n' + '<root></root>').encode(encoding) + with self.assertRaises(expat.ExpatError): + parser.Parse(data, True) + + parser = expat.ParserCreate() + data = (f'<?xml version="1.0" encoding="{encoding}"?>\n' + '<root></root>').encode() + with self.assertRaisesRegex(expat.ExpatError, 'unknown encoding'): + parser.Parse(data, True) + + @support.subTests('encoding', [ + 'hex_codec', 'rot_13', + ]) + def test_non_text_encodings(self, encoding): + parser = expat.ParserCreate() + data = (f'<?xml version="1.0" encoding="{encoding}"?>\n' + '<root></root>').encode() + with self.assertRaises(LookupError): + parser.Parse(data, True) + + def test_undefined_encoding(self): + parser = expat.ParserCreate() + data = b'<?xml version="1.0" encoding="undefined"?>\n<root></root>' + with self.assertRaises(UnicodeError): + parser.Parse(data, True) + + def test_unknown_encoding(self): parser = expat.ParserCreate() data = b'<?xml version="1.0" encoding="xyz"?>\n<root></root>' with self.assertRaises(LookupError): _______________________________________________ Python-checkins mailing list -- [email protected] To unsubscribe send an email to [email protected] https://mail.python.org/mailman3//lists/python-checkins.python.org Member address: [email protected]
