52 lines
1.5 KiB
Python
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'
|