summaryrefslogtreecommitdiff
path: root/docutils/test/test_parsers
diff options
context:
space:
mode:
authoraa-turner <aa-turner@929543f6-e4f2-0310-98a6-ba3bd3dd1d04>2022-11-08 14:34:18 +0000
committeraa-turner <aa-turner@929543f6-e4f2-0310-98a6-ba3bd3dd1d04>2022-11-08 14:34:18 +0000
commit460528d185dca5b4b2bbdac3123e9306ab18afab (patch)
tree1f2e0a2a55b89830efadd486adc323746b91eaae /docutils/test/test_parsers
parent5e7c6c3ce5835b59f058b12205ab9e1c1e63da78 (diff)
downloaddocutils-460528d185dca5b4b2bbdac3123e9306ab18afab.tar.gz
Inline ``RecommonmarkParserTestSuite``
- Move all usages of ``RecommonmarkParserTestSuite.generateTests`` to using subtests. - Move the conditional test skipping logic to ``__init__.py`` in ``test_recommonmark``, and move the missing module test from ``test_recommonmark.test_misc`` to ``test_get_parser_class``, as otherwise the test would never run. git-svn-id: https://svn.code.sf.net/p/docutils/code/trunk@9222 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
Diffstat (limited to 'docutils/test/test_parsers')
-rw-r--r--docutils/test/test_parsers/test_get_parser_class.py15
-rw-r--r--docutils/test/test_parsers/test_recommonmark/__init__.py21
-rwxr-xr-xdocutils/test/test_parsers/test_recommonmark/test_block_quotes.py25
-rwxr-xr-xdocutils/test/test_parsers/test_recommonmark/test_bullet_lists.py25
-rwxr-xr-xdocutils/test/test_parsers/test_recommonmark/test_enumerated_lists.py25
-rw-r--r--docutils/test/test_parsers/test_recommonmark/test_html_blocks.py25
-rwxr-xr-xdocutils/test/test_parsers/test_recommonmark/test_inline_markup.py25
-rwxr-xr-xdocutils/test/test_parsers/test_recommonmark/test_line_length_limit.py28
-rwxr-xr-xdocutils/test/test_parsers/test_recommonmark/test_line_length_limit_default.py26
-rwxr-xr-xdocutils/test/test_parsers/test_recommonmark/test_literal_blocks.py25
-rw-r--r--docutils/test/test_parsers/test_recommonmark/test_misc.py28
-rwxr-xr-xdocutils/test/test_parsers/test_recommonmark/test_paragraphs.py25
-rwxr-xr-xdocutils/test/test_parsers/test_recommonmark/test_section_headers.py25
-rwxr-xr-xdocutils/test/test_parsers/test_recommonmark/test_targets.py25
-rwxr-xr-xdocutils/test/test_parsers/test_recommonmark/test_transitions.py29
15 files changed, 274 insertions, 98 deletions
diff --git a/docutils/test/test_parsers/test_get_parser_class.py b/docutils/test/test_parsers/test_get_parser_class.py
index 264121352..6b6275622 100644
--- a/docutils/test/test_parsers/test_get_parser_class.py
+++ b/docutils/test/test_parsers/test_get_parser_class.py
@@ -11,7 +11,12 @@ test get_parser_class
import unittest
+from docutils.core import publish_string
from docutils.parsers import get_parser_class
+try:
+ md_parser_class = get_parser_class('recommonmark')
+except ImportError:
+ md_parser_class = None
class GetParserClassTestCase(unittest.TestCase):
@@ -30,6 +35,16 @@ class GetParserClassTestCase(unittest.TestCase):
# raises ImportError on failure
+@unittest.skipIf(md_parser_class is not None,
+ 'Optional "recommonmark" module found.')
+class RecommonmarkMissingTests(unittest.TestCase):
+
+ def test_missing_parser_message(self):
+ with self.assertRaisesRegex(ImportError,
+ 'requires the package .*recommonmark'):
+ publish_string('test data', parser_name='recommonmark')
+
+
if __name__ == '__main__':
import unittest
unittest.main()
diff --git a/docutils/test/test_parsers/test_recommonmark/__init__.py b/docutils/test/test_parsers/test_recommonmark/__init__.py
index e69de29bb..9cb71807f 100644
--- a/docutils/test/test_parsers/test_recommonmark/__init__.py
+++ b/docutils/test/test_parsers/test_recommonmark/__init__.py
@@ -0,0 +1,21 @@
+"""Optional tests with 3rd party CommonMark parser"""
+
+import unittest
+
+from test import DocutilsTestSupport # NoQA: F401 # before importing docutils!
+
+import docutils.parsers
+
+# TODO: test with alternative CommonMark parsers?
+md_parser = 'recommonmark'
+# md_parser = 'pycmark'
+# md_parser = 'myst'
+try:
+ import recommonmark
+ docutils.parsers.get_parser_class(md_parser)
+except ImportError:
+ raise unittest.SkipTest(f'Cannot test "{md_parser}". '
+ 'Parser not found.')
+else:
+ if md_parser == 'recommonmark' and recommonmark.__version__ < '0.6.0':
+ raise unittest.SkipTest('"recommonmark" parser too old, skip tests')
diff --git a/docutils/test/test_parsers/test_recommonmark/test_block_quotes.py b/docutils/test/test_parsers/test_recommonmark/test_block_quotes.py
index 7f5118ff9..43ebf4163 100755
--- a/docutils/test/test_parsers/test_recommonmark/test_block_quotes.py
+++ b/docutils/test/test_parsers/test_recommonmark/test_block_quotes.py
@@ -14,13 +14,26 @@ Test for block quotes in CommonMark parsers
Cf. the `CommonMark Specification <https://spec.commonmark.org/>`__
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.RecommonmarkParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.recommonmark_wrapper import Parser
+from docutils.utils import new_document
+
+
+class RecommonmarkParserTestCase(unittest.TestCase):
+ def test_parser(self):
+ parser = Parser()
+ settings = get_default_settings(Parser)
+ for name, cases in totest.items():
+ for casenum, (case_input, case_expected) in enumerate(cases):
+ with self.subTest(id=f'totest[{name!r}][{casenum}]'):
+ document = new_document('test data', settings.copy())
+ parser.parse(case_input, document)
+ output = document.pformat()
+ self.assertEqual(output, case_expected)
totest = {}
@@ -104,4 +117,4 @@ Here is a paragraph.
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_recommonmark/test_bullet_lists.py b/docutils/test/test_parsers/test_recommonmark/test_bullet_lists.py
index b42f14e7b..7b45dfa9d 100755
--- a/docutils/test/test_parsers/test_recommonmark/test_bullet_lists.py
+++ b/docutils/test/test_parsers/test_recommonmark/test_bullet_lists.py
@@ -14,13 +14,26 @@ Test for bullet lists in CommonMark parsers.
Cf. the `CommonMark Specification <https://spec.commonmark.org/>`__
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.RecommonmarkParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.recommonmark_wrapper import Parser
+from docutils.utils import new_document
+
+
+class RecommonmarkParserTestCase(unittest.TestCase):
+ def test_parser(self):
+ parser = Parser()
+ settings = get_default_settings(Parser)
+ for name, cases in totest.items():
+ for casenum, (case_input, case_expected) in enumerate(cases):
+ with self.subTest(id=f'totest[{name!r}][{casenum}]'):
+ document = new_document('test data', settings.copy())
+ parser.parse(case_input, document)
+ output = document.pformat()
+ self.assertEqual(output, case_expected)
totest = {}
@@ -194,4 +207,4 @@ Unicode bullets are not supported by CommonMark.
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_recommonmark/test_enumerated_lists.py b/docutils/test/test_parsers/test_recommonmark/test_enumerated_lists.py
index 8218b0aaa..e0d7b21b8 100755
--- a/docutils/test/test_parsers/test_recommonmark/test_enumerated_lists.py
+++ b/docutils/test/test_parsers/test_recommonmark/test_enumerated_lists.py
@@ -13,13 +13,26 @@ Test for enumerated lists in CommonMark parsers
Cf. the `CommonMark Specification <https://spec.commonmark.org/>`__
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.RecommonmarkParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.recommonmark_wrapper import Parser
+from docutils.utils import new_document
+
+
+class RecommonmarkParserTestCase(unittest.TestCase):
+ def test_parser(self):
+ parser = Parser()
+ settings = get_default_settings(Parser)
+ for name, cases in totest.items():
+ for casenum, (case_input, case_expected) in enumerate(cases):
+ with self.subTest(id=f'totest[{name!r}][{casenum}]'):
+ document = new_document('test data', settings.copy())
+ parser.parse(case_input, document)
+ output = document.pformat()
+ self.assertEqual(output, case_expected)
totest = {}
@@ -380,4 +393,4 @@ No item content:
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_recommonmark/test_html_blocks.py b/docutils/test/test_parsers/test_recommonmark/test_html_blocks.py
index da1155f24..c63a8f68b 100644
--- a/docutils/test/test_parsers/test_recommonmark/test_html_blocks.py
+++ b/docutils/test/test_parsers/test_recommonmark/test_html_blocks.py
@@ -14,13 +14,26 @@ Tests for HTML blocks in CommonMark parsers
Cf. the `CommonMark Specification <https://spec.commonmark.org/>`__
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.RecommonmarkParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.recommonmark_wrapper import Parser
+from docutils.utils import new_document
+
+
+class RecommonmarkParserTestCase(unittest.TestCase):
+ def test_parser(self):
+ parser = Parser()
+ settings = get_default_settings(Parser)
+ for name, cases in totest.items():
+ for casenum, (case_input, case_expected) in enumerate(cases):
+ with self.subTest(id=f'totest[{name!r}][{casenum}]'):
+ document = new_document('test data', settings.copy())
+ parser.parse(case_input, document)
+ output = document.pformat()
+ self.assertEqual(output, case_expected)
totest = {}
@@ -89,4 +102,4 @@ A paragraph:
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_recommonmark/test_inline_markup.py b/docutils/test/test_parsers/test_recommonmark/test_inline_markup.py
index 7f5370647..a9e018dfd 100755
--- a/docutils/test/test_parsers/test_recommonmark/test_inline_markup.py
+++ b/docutils/test/test_parsers/test_recommonmark/test_inline_markup.py
@@ -13,13 +13,26 @@ Tests for inline markup in CommonMark parsers
Cf. the `CommonMark Specification <https://spec.commonmark.org/>`__
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.RecommonmarkParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.recommonmark_wrapper import Parser
+from docutils.utils import new_document
+
+
+class RecommonmarkParserTestCase(unittest.TestCase):
+ def test_parser(self):
+ parser = Parser()
+ settings = get_default_settings(Parser)
+ for name, cases in totest.items():
+ for casenum, (case_input, case_expected) in enumerate(cases):
+ with self.subTest(id=f'totest[{name!r}][{casenum}]'):
+ document = new_document('test data', settings.copy())
+ parser.parse(case_input, document)
+ output = document.pformat()
+ self.assertEqual(output, case_expected)
totest = {}
@@ -520,4 +533,4 @@ works except for underline.
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_recommonmark/test_line_length_limit.py b/docutils/test/test_parsers/test_recommonmark/test_line_length_limit.py
index bf9c5087f..9ef2acc56 100755
--- a/docutils/test/test_parsers/test_recommonmark/test_line_length_limit.py
+++ b/docutils/test/test_parsers/test_recommonmark/test_line_length_limit.py
@@ -14,14 +14,28 @@ Tests for inline markup in docutils/parsers/rst/states.py.
Interpreted text tests are in a separate module, test_interpreted.py.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.RecommonmarkParserTestSuite(
- suite_settings={'line_length_limit': 80})
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.recommonmark_wrapper import Parser
+from docutils.utils import new_document
+
+
+class RecommonmarkParserTestCase(unittest.TestCase):
+ def test_parser(self):
+ parser = Parser()
+ settings = get_default_settings(Parser)
+ settings.warning_stream = ''
+ settings.line_length_limit = 80
+ for name, cases in totest.items():
+ for casenum, (case_input, case_expected) in enumerate(cases):
+ with self.subTest(id=f'totest[{name!r}][{casenum}]'):
+ document = new_document('test data', settings.copy())
+ parser.parse(case_input, document)
+ output = document.pformat()
+ self.assertEqual(output, case_expected)
totest = {}
@@ -52,4 +66,4 @@ above the limit
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_recommonmark/test_line_length_limit_default.py b/docutils/test/test_parsers/test_recommonmark/test_line_length_limit_default.py
index 574311ca1..9c833cc8f 100755
--- a/docutils/test/test_parsers/test_recommonmark/test_line_length_limit_default.py
+++ b/docutils/test/test_parsers/test_recommonmark/test_line_length_limit_default.py
@@ -15,13 +15,27 @@ Tests for inline markup in docutils/parsers/rst/states.py.
Interpreted text tests are in a separate module, test_interpreted.py.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.RecommonmarkParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.recommonmark_wrapper import Parser
+from docutils.utils import new_document
+
+
+class RecommonmarkParserTestCase(unittest.TestCase):
+ def test_parser(self):
+ parser = Parser()
+ settings = get_default_settings(Parser)
+ settings.warning_stream = ''
+ for name, cases in totest.items():
+ for casenum, (case_input, case_expected) in enumerate(cases):
+ with self.subTest(id=f'totest[{name!r}][{casenum}]'):
+ document = new_document('test data', settings.copy())
+ parser.parse(case_input, document)
+ output = document.pformat()
+ self.assertEqual(output, case_expected)
totest = {}
@@ -52,4 +66,4 @@ above the limit
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_recommonmark/test_literal_blocks.py b/docutils/test/test_parsers/test_recommonmark/test_literal_blocks.py
index c128b9898..7d45159e9 100755
--- a/docutils/test/test_parsers/test_recommonmark/test_literal_blocks.py
+++ b/docutils/test/test_parsers/test_recommonmark/test_literal_blocks.py
@@ -14,13 +14,26 @@ Tests for literal blocks in CommonMark parsers
Cf. the `CommonMark Specification <https://spec.commonmark.org/>`__
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.RecommonmarkParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.recommonmark_wrapper import Parser
+from docutils.utils import new_document
+
+
+class RecommonmarkParserTestCase(unittest.TestCase):
+ def test_parser(self):
+ parser = Parser()
+ settings = get_default_settings(Parser)
+ for name, cases in totest.items():
+ for casenum, (case_input, case_expected) in enumerate(cases):
+ with self.subTest(id=f'totest[{name!r}][{casenum}]'):
+ document = new_document('test data', settings.copy())
+ parser.parse(case_input, document)
+ output = document.pformat()
+ self.assertEqual(output, case_expected)
totest = {}
@@ -205,4 +218,4 @@ with class ``eval_rst``.
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_recommonmark/test_misc.py b/docutils/test/test_parsers/test_recommonmark/test_misc.py
index 962d05004..442c4b2d4 100644
--- a/docutils/test/test_parsers/test_recommonmark/test_misc.py
+++ b/docutils/test/test_parsers/test_recommonmark/test_misc.py
@@ -15,16 +15,10 @@ Various tests for the recommonmark parser.
import unittest
-from docutils import parsers
-from docutils.parsers import rst
from docutils.core import publish_string
+from docutils.parsers.rst import directives as rst_directives
+from docutils.parsers.recommonmark_wrapper import Parser
-# Import `docutils.parsers.recommonmark_wrapper` and
-# the optional `recommonmark.parser`. Create parser instance.
-try:
- parser = parsers.get_parser_class('recommonmark')()
-except ImportError:
- parser = None
sample_with_html = """\
A paragraph:
@@ -40,17 +34,15 @@ Final paragraph.
"""
-@unittest.skipUnless(parser, 'Optional "recommonmark" module not found.')
class RecommonmarkParserTests(unittest.TestCase):
def test_parser_name(self):
# cf. ../test_rst/test_directives/test__init__.py
# this is used in the "include" directive's :parser: option.
- self.assertEqual(rst.directives.parser_name('recommonmark'),
- parsers.recommonmark_wrapper.Parser)
+ self.assertIs(rst_directives.parser_name('recommonmark'), Parser)
def test_raw_disabled(self):
- output = publish_string(sample_with_html, parser=parser,
+ output = publish_string(sample_with_html, parser=Parser(),
settings_overrides={
'warning_stream': '',
'raw_enabled': False,
@@ -61,7 +53,7 @@ class RecommonmarkParserTests(unittest.TestCase):
self.assertIn('Raw content disabled.', output)
def test_raw_disabled_inline(self):
- output = publish_string('foo <a href="uri">', parser=parser,
+ output = publish_string('foo <a href="uri">', parser=Parser(),
settings_overrides={
'warning_stream': '',
'raw_enabled': False,
@@ -72,15 +64,5 @@ class RecommonmarkParserTests(unittest.TestCase):
self.assertIn('Raw content disabled.', output)
-@unittest.skipIf(parser, 'Optional "recommonmark" module found.')
-class RecommonmarkMissingTests(unittest.TestCase):
-
- def test_missing_parser_message(self):
- with self.assertRaisesRegex(ImportError,
- 'requires the package .*recommonmark'):
- publish_string(sample_with_html, parser_name='recommonmark',
- settings_overrides={'output_encoding': 'unicode'})
-
-
if __name__ == '__main__':
unittest.main()
diff --git a/docutils/test/test_parsers/test_recommonmark/test_paragraphs.py b/docutils/test/test_parsers/test_recommonmark/test_paragraphs.py
index e07e9eda3..dfe1d9c03 100755
--- a/docutils/test/test_parsers/test_recommonmark/test_paragraphs.py
+++ b/docutils/test/test_parsers/test_recommonmark/test_paragraphs.py
@@ -8,13 +8,26 @@
Tests for states.py.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.RecommonmarkParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.recommonmark_wrapper import Parser
+from docutils.utils import new_document
+
+
+class RecommonmarkParserTestCase(unittest.TestCase):
+ def test_parser(self):
+ parser = Parser()
+ settings = get_default_settings(Parser)
+ for name, cases in totest.items():
+ for casenum, (case_input, case_expected) in enumerate(cases):
+ with self.subTest(id=f'totest[{name!r}][{casenum}]'):
+ document = new_document('test data', settings.copy())
+ parser.parse(case_input, document)
+ output = document.pformat()
+ self.assertEqual(output, case_expected)
totest = {}
@@ -76,4 +89,4 @@ Line 3.
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_recommonmark/test_section_headers.py b/docutils/test/test_parsers/test_recommonmark/test_section_headers.py
index 419682ac3..ca4d39b6f 100755
--- a/docutils/test/test_parsers/test_recommonmark/test_section_headers.py
+++ b/docutils/test/test_parsers/test_recommonmark/test_section_headers.py
@@ -13,13 +13,26 @@ Test for section headings in CommonMark parsers.
Cf. the `CommonMark Specification <https://spec.commonmark.org/>`__
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.RecommonmarkParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.recommonmark_wrapper import Parser
+from docutils.utils import new_document
+
+
+class RecommonmarkParserTestCase(unittest.TestCase):
+ def test_parser(self):
+ parser = Parser()
+ settings = get_default_settings(Parser)
+ for name, cases in totest.items():
+ for casenum, (case_input, case_expected) in enumerate(cases):
+ with self.subTest(id=f'totest[{name!r}][{casenum}]'):
+ document = new_document('test data', settings.copy())
+ parser.parse(case_input, document)
+ output = document.pformat()
+ self.assertEqual(output, case_expected)
totest = {}
@@ -237,4 +250,4 @@ Empty Section
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_recommonmark/test_targets.py b/docutils/test/test_parsers/test_recommonmark/test_targets.py
index 796b4f676..09306db34 100755
--- a/docutils/test/test_parsers/test_recommonmark/test_targets.py
+++ b/docutils/test/test_parsers/test_recommonmark/test_targets.py
@@ -13,13 +13,26 @@ Test for targets in CommonMark parsers.
Cf. the `CommonMark Specification <https://spec.commonmark.org/>`__
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.RecommonmarkParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.recommonmark_wrapper import Parser
+from docutils.utils import new_document
+
+
+class RecommonmarkParserTestCase(unittest.TestCase):
+ def test_parser(self):
+ parser = Parser()
+ settings = get_default_settings(Parser)
+ for name, cases in totest.items():
+ for casenum, (case_input, case_expected) in enumerate(cases):
+ with self.subTest(id=f'totest[{name!r}][{casenum}]'):
+ document = new_document('test data', settings.copy())
+ parser.parse(case_input, document)
+ output = document.pformat()
+ self.assertEqual(output, case_expected)
totest = {}
@@ -140,4 +153,4 @@ Paragraph with link to [title].
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_recommonmark/test_transitions.py b/docutils/test/test_parsers/test_recommonmark/test_transitions.py
index a6a0b848d..25621bf7a 100755
--- a/docutils/test/test_parsers/test_recommonmark/test_transitions.py
+++ b/docutils/test/test_parsers/test_recommonmark/test_transitions.py
@@ -8,19 +8,32 @@
Tests for transitions (`thematic breaks`).
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.RecommonmarkParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.recommonmark_wrapper import Parser
+from docutils.utils import new_document
+
+
+class RecommonmarkParserTestCase(unittest.TestCase):
+ def test_parser(self):
+ parser = Parser()
+ settings = get_default_settings(Parser)
+ for name, cases in totest.items():
+ for casenum, (case_input, case_expected) in enumerate(cases):
+ with self.subTest(id=f'totest[{name!r}][{casenum}]'):
+ document = new_document('test data', settings.copy())
+ parser.parse(case_input, document)
+ output = document.pformat()
+ self.assertEqual(output, case_expected)
totest = {}
-# See DocutilsTestSupport.RecommonmarkParserTestSuite.generateTests for a
-# description of the 'totest' data structure.
+# Each dictionary key (test type name) maps to a list of tests. Each
+# test is a list: input, expected output.
totest['transitions'] = [
["""\
Test transition markers.
@@ -313,4 +326,4 @@ A paragraph.
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()