summaryrefslogtreecommitdiff
path: root/test/DocutilsTestSupport.py
diff options
context:
space:
mode:
authormilde <milde@929543f6-e4f2-0310-98a6-ba3bd3dd1d04>2020-12-01 11:38:25 +0000
committermilde <milde@929543f6-e4f2-0310-98a6-ba3bd3dd1d04>2020-12-01 11:38:25 +0000
commit2ebef8482530af80645cab9e44404eb281d4e34a (patch)
tree8f27c3f3bfadfc480618dd01f3c39f5d70d47516 /test/DocutilsTestSupport.py
parent07f79b011dbf281b00b3f751df039935f8100e05 (diff)
downloaddocutils-2ebef8482530af80645cab9e44404eb281d4e34a.tar.gz
Add support for Markdown.
Provide a wrapper for the 3rd party `recommonmark`__ Markdown parser already in use in Sphinx. Add test cases for CommonMark parsing. Also: Correct copyright note and set executable bit on two tests. Fix small typo in test content. __ https://pypi.org/project/recommonmark/ git-svn-id: https://svn.code.sf.net/p/docutils/code/trunk/docutils@8585 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
Diffstat (limited to 'test/DocutilsTestSupport.py')
-rw-r--r--test/DocutilsTestSupport.py38
1 files changed, 35 insertions, 3 deletions
diff --git a/test/DocutilsTestSupport.py b/test/DocutilsTestSupport.py
index dd902bd37..3b00a7fd2 100644
--- a/test/DocutilsTestSupport.py
+++ b/test/DocutilsTestSupport.py
@@ -47,6 +47,7 @@ import unittest
import re
import inspect
import traceback
+import warnings
from pprint import pformat
testroot = os.path.abspath(os.path.dirname(__file__) or os.curdir)
@@ -63,7 +64,7 @@ try:
from docutils import frontend, nodes, statemachine, utils
from docutils.utils import urischemes
from docutils.transforms import universal
- from docutils.parsers import rst
+ from docutils.parsers import rst, recommonmark_wrapper
from docutils.parsers.rst import states, tableparser, roles, languages
from docutils.readers import standalone, pep
from docutils.statemachine import StringList, string2lines
@@ -82,7 +83,6 @@ try:
except:
import pdb
-
if sys.version_info >= (3, 0):
unicode = str # noqa
@@ -518,6 +518,38 @@ class PEPParserTestSuite(ParserTestSuite):
test_case_class = PEPParserTestCase
+class RecommonmarkParserTestCase(ParserTestCase):
+
+ """Recommonmark-specific parser test case."""
+
+ parser = recommonmark_wrapper.Parser()
+ """Parser shared by all RecommonmarkParserTestCases."""
+
+ option_parser = frontend.OptionParser(
+ components=(recommonmark_wrapper.Parser,))
+ settings = option_parser.get_default_values()
+ settings.report_level = 5
+ settings.halt_level = 5
+ settings.debug = package_unittest.debug
+
+class RecommonmarkParserTestSuite(ParserTestSuite):
+
+ """A collection of RecommonmarkParserTestCases."""
+
+ test_case_class = RecommonmarkParserTestCase
+ skip_message = 'skip "%s" (module `recommonmark` not found)'
+
+ def generateTests(self, dict, dictname='totest'):
+ if 'recommonmark' not in recommonmark_wrapper.Parser.supported:
+ if RecommonmarkParserTestSuite.skip_message: # warn (only once)
+ print(self.skip_message%self.id)
+ RecommonmarkParserTestSuite.skip_message = ''
+ return
+ # suppress UserWarnings from recommonmark parser
+ warnings.filterwarnings('ignore', message='Unsupported.*type')
+ ParserTestSuite.generateTests(self, dict, dictname='totest')
+
+
class GridTableParserTestCase(CustomTestCase):
parser = tableparser.GridTableParser()
@@ -756,7 +788,7 @@ class HtmlWriterPublishPartsTestCase(WriterPublishTestCase):
class HtmlPublishPartsTestSuite(CustomTestSuite):
testcase_class = HtmlWriterPublishPartsTestCase
-
+
def generateTests(self, dict, dictname='totest'):
for name, (settings_overrides, cases) in dict.items():
settings = self.suite_settings.copy()