cmark

My personal build of CMark ✏️

Commit
9d4174f7f047aad9e4ab7768ce55e84446df7569
Parent
b28c97c9b8af266d4f12deb5febcf28807d9f5c6
Author
John MacFarlane <jgm@berkeley.edu>
Date

Merge pull request #250 from cirosantilli/deal-invalid-unicode

Don't raise exception on invalid UTF-8 output

Diffstat

1 file changed, 16 insertions, 6 deletions

Status File Name N° Changes Insertions Deletions
Modified test/spec_tests.py 22 16 6
diff --git a/test/spec_tests.py b/test/spec_tests.py
@@ -37,8 +37,13 @@ def do_test(test, normalize):
     [retcode, actual_html, err] = cmark.to_html(test['markdown'])
     if retcode == 0:
         expected_html = test['html']
+        unicode_error = None
         if normalize:
-            passed = normalize_html(actual_html) == normalize_html(expected_html)
+            try:
+                passed = normalize_html(actual_html) == normalize_html(expected_html)
+            except UnicodeDecodeError, e:
+                unicode_error = e
+                passed = False
         else:
             passed = actual_html == expected_html
         if passed:
@@ -46,11 +51,16 @@ def do_test(test, normalize):
         else:
             print_test_header(test['section'], test['example'], test['start_line'], test['end_line'])
             sys.stdout.write(test['markdown'])
-            expected_html_lines = expected_html.splitlines(True)
-            actual_html_lines = actual_html.splitlines(True)
-            for diffline in unified_diff(expected_html_lines, actual_html_lines,
-                            "expected HTML", "actual HTML"):
-                sys.stdout.write(diffline)
+            if unicode_error:
+                print "Unicode error: " + str(unicode_error)
+                print repr(expected_html)
+                print repr(actual_html)
+            else:
+                expected_html_lines = expected_html.splitlines(True)
+                actual_html_lines = actual_html.splitlines(True)
+                for diffline in unified_diff(expected_html_lines, actual_html_lines,
+                                "expected HTML", "actual HTML"):
+                    sys.stdout.write(diffline)
             sys.stdout.write('\n')
             return 'fail'
     else: