Combination of: http://svn.code.sf.net/p/docutils/code/trunk@8910 http://svn.code.sf.net/p/docutils/code/trunk@8909 diff --git a/test/DocutilsTestSupport.py b/test/DocutilsTestSupport.py index 592d3f9df..e1f33aa7a 100644 --- a/test/DocutilsTestSupport.py +++ b/test/DocutilsTestSupport.py @@ -819,6 +819,7 @@ def exception_data(func, *args, **kwds): except Exception as detail: return (detail, detail.args, '%s: %s' % (detail.__class__.__name__, detail)) + return None, [], "No exception" def _format_str(*args): diff --git a/test/test_parsers/test_rst/test_directives/test_tables.py b/test/test_parsers/test_rst/test_directives/test_tables.py index 07be0122f..73724ed7e 100755 --- a/test/test_parsers/test_rst/test_directives/test_tables.py +++ b/test/test_parsers/test_rst/test_directives/test_tables.py @@ -65,6 +65,92 @@ def null_bytes(): next(reader) null_bytes_exception = DocutilsTestSupport.exception_data(null_bytes)[0] +# Null bytes are valid in Python 3.11+: +if null_bytes_exception is None: + bad_encoding_result = """\ + + + + bad encoding + <tgroup cols="4"> + <colspec colwidth="25"> + <colspec colwidth="25"> + <colspec colwidth="25"> + <colspec colwidth="25"> + <tbody> + <row> + <entry> + <paragraph> + \xfe\xff"Treat" + <entry> + <paragraph> + "Quantity" + <entry> + <paragraph> + "Description" + <entry> + <row> + <entry> + <paragraph> + "Albatr\u00b0\u00df" + <entry> + <paragraph> + 2.99 + <entry> + <paragraph> + "\u00a1Ona\x03\xc3\x03\xc4\x03\xb9\x03\xba!" + <entry> + <row> + <entry> + <paragraph> + "CrunchyFrog" + <entry> + <paragraph> + 1.49 + <entry> + <paragraph> + "Ifwetooktheb\u00f6nesout + <entry> + <paragraph> + itwouldn\x20\x19tbe + <row> + <entry> + <paragraph> + crunchy + <entry> + <paragraph> + nowwouldit?" + <entry> + <entry> + <row> + <entry> + <paragraph> + "GannetRipple" + <entry> + <paragraph> + 1.99 + <entry> + <paragraph> + "\xbfOna\x03\xc3\x03\xc4\x03\xb9\x03\xba?" + <entry> + <paragraph> + (7- and 8-bit text encoded as UTF-16 has lots of null/zero bytes.) +""" +else: + bad_encoding_result = """\ +<document source="test data"> + <system_message level="3" line="1" source="test data" type="ERROR"> + <paragraph> + Error with CSV data in "csv-table" directive: + %s + <literal_block xml:space="preserve"> + .. csv-table:: bad encoding + :file: %s + :encoding: latin-1 + <paragraph> + (7- and 8-bit text encoded as UTF-16 has lots of null/zero bytes.) +""" % (null_bytes_exception, utf_16_csv) + totest = {} @@ -1031,19 +1117,8 @@ u"""\ (7- and 8-bit text encoded as UTF-16 has lots of null/zero bytes.) """ % utf_16_csv, -"""\ -<document source="test data"> - <system_message level="3" line="1" source="test data" type="ERROR"> - <paragraph> - Error with CSV data in "csv-table" directive: - %s - <literal_block xml:space="preserve"> - .. csv-table:: bad encoding - :file: %s - :encoding: latin-1 - <paragraph> - (7- and 8-bit text encoded as UTF-16 has lots of null/zero bytes.) -""" % (null_bytes_exception, utf_16_csv)], +bad_encoding_result +], ["""\ .. csv-table:: good encoding :file: %s