deb-python-misaka/tests/test_markdown.py

52 lines
1.5 KiB
Python

# -*- coding: utf-8 -*-
import re
import codecs
from os import path
from glob import glob
from chibitest import TestCase, ok
from misaka import Markdown, HtmlRenderer
from utils import clean_html
class MarkdownConformanceTest_10(TestCase):
name = 'Markdown Conformance 1.0'
suite = 'MarkdownTest_1.0'
def setup(self):
self.r = Markdown(HtmlRenderer()).render
tests_dir = path.dirname(__file__)
for text_path in glob(path.join(tests_dir, self.suite, '*.text')):
html_path = '%s.html' % path.splitext(text_path)[0]
self._create_test(text_path, html_path)
def _create_test(self, text_path, html_path):
def test():
with codecs.open(text_path, 'r', encoding='utf-8') as fd:
text = fd.read()
with codecs.open(html_path, 'r', encoding='utf-8') as fd:
expected_html = fd.read()
actual_html = self.r(text)
expected_result = clean_html(expected_html)
actual_result = clean_html(actual_html)
ok(actual_result).diff(expected_result)
test.__name__ = self._test_name(text_path)
self.add_test(test)
def _test_name(self, text_path):
name = path.splitext(path.basename(text_path))[0]
name = name.replace(' - ', '_')
name = name.replace(' ', '_')
name = re.sub('[(),]', '', name)
return 'test_{}'.format(name.lower())
class MarkdownConformanceTest_103(MarkdownConformanceTest_10):
name = 'Markdown Conformance 1.0.3'
suite = 'MarkdownTest_1.0.3'