diff options
| author | Mehmet Samet Duman <yongdohyun@projecttick.org> | 2026-04-02 18:41:54 +0300 |
|---|---|---|
| committer | Mehmet Samet Duman <yongdohyun@projecttick.org> | 2026-04-02 18:41:54 +0300 |
| commit | 3d2121f5d6555744ce5aa502088fc2b34dc26d38 (patch) | |
| tree | 53f42c08746171878b57f5b6ffe1eb841da9d45d /cmark/test/entity_tests.py | |
| parent | 6bf7c5ce92ff6237c0b17c332873805018812b40 (diff) | |
| parent | 64efa3b3b3d35f2ffb604b57a8a9c89047cb420b (diff) | |
| download | Project-Tick-3d2121f5d6555744ce5aa502088fc2b34dc26d38.tar.gz Project-Tick-3d2121f5d6555744ce5aa502088fc2b34dc26d38.zip | |
Add 'cmark/' from commit '64efa3b3b3d35f2ffb604b57a8a9c89047cb420b'
git-subtree-dir: cmark
git-subtree-mainline: 6bf7c5ce92ff6237c0b17c332873805018812b40
git-subtree-split: 64efa3b3b3d35f2ffb604b57a8a9c89047cb420b
Diffstat (limited to 'cmark/test/entity_tests.py')
| -rw-r--r-- | cmark/test/entity_tests.py | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/cmark/test/entity_tests.py b/cmark/test/entity_tests.py new file mode 100644 index 0000000000..27b70e690a --- /dev/null +++ b/cmark/test/entity_tests.py @@ -0,0 +1,67 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +import re +import os +import argparse +import sys +import platform +import html +from cmark import CMark + +def get_entities(): + regex = r'^{\(unsigned char\*\)"([^"]+)", \{([^}]+)\}' + with open(os.path.join(os.path.dirname(__file__), '..', 'src', 'entities.inc')) as f: + code = f.read() + entities = [] + for entity, utf8 in re.findall(regex, code, re.MULTILINE): + utf8 = bytes(map(int, utf8.split(", ")[:-1])).decode('utf-8') + entities.append((entity, utf8)) + return entities + +parser = argparse.ArgumentParser(description='Run cmark tests.') +parser.add_argument('--program', dest='program', nargs='?', default=None, + help='program to test') +parser.add_argument('--library-dir', dest='library_dir', nargs='?', + default=None, help='directory containing dynamic library') +args = parser.parse_args(sys.argv[1:]) + +cmark = CMark(prog=args.program, library_dir=args.library_dir) + +entities = get_entities() + +passed = 0 +errored = 0 +failed = 0 + +exceptions = { + 'quot': '"', + 'QUOT': '"', + + # These are broken, but I'm not too worried about them. + 'nvlt': '<⃒', + 'nvgt': '>⃒', +} + +print("Testing entities:") +for entity, utf8 in entities: + [rc, actual, err] = cmark.to_html("&{};".format(entity)) + check = exceptions.get(entity, utf8) + + if rc != 0: + errored += 1 + print(entity, '[ERRORED (return code {})]'.format(rc)) + print(err) + elif check in actual: + # print(entity, '[PASSED]') # omit noisy success output + passed += 1 + else: + print(entity, '[FAILED]') + print(repr(actual)) + failed += 1 + +print("{} passed, {} failed, {} errored".format(passed, failed, errored)) +if failed == 0 and errored == 0: + exit(0) +else: + exit(1) |
