summaryrefslogtreecommitdiff
path: root/docutils/test
diff options
context:
space:
mode:
authoraa-turner <aa-turner@929543f6-e4f2-0310-98a6-ba3bd3dd1d04>2022-11-09 13:31:13 +0000
committeraa-turner <aa-turner@929543f6-e4f2-0310-98a6-ba3bd3dd1d04>2022-11-09 13:31:13 +0000
commitfdcef0acfab0cf694b1077b6abdd1fa81e48c257 (patch)
treee1581ef412a17d1f9e645928a65f5a197e6546c4 /docutils/test
parentb148f95fff5870273f96b81d6c0583e589b2603a (diff)
downloaddocutils-fdcef0acfab0cf694b1077b6abdd1fa81e48c257.tar.gz
Inline ``ParserTestSuite``
- Move all usages of ``ParserTestSuite.generateTests`` to using subtests, as part of the test suite refactoring project git-svn-id: https://svn.code.sf.net/p/docutils/code/trunk@9230 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
Diffstat (limited to 'docutils/test')
-rw-r--r--docutils/test/DocutilsTestSupport.py59
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_block_quotes.py26
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_bullet_lists.py26
-rw-r--r--docutils/test/test_parsers/test_rst/test_character_level_inline_markup.py28
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_citations.py26
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_comments.py26
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_definition_lists.py26
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_directives/test_admonitions.py26
-rw-r--r--docutils/test/test_parsers/test_rst/test_directives/test_admonitions_de.py37
-rw-r--r--docutils/test/test_parsers/test_rst/test_directives/test_admonitions_dummy_lang.py29
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_directives/test_block_quotes.py26
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_directives/test_class.py26
-rw-r--r--docutils/test/test_parsers/test_rst/test_directives/test_code.py32
-rw-r--r--docutils/test/test_parsers/test_rst/test_directives/test_code_long.py30
-rw-r--r--docutils/test/test_parsers/test_rst/test_directives/test_code_none.py28
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_directives/test_compound.py26
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_directives/test_container.py26
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_directives/test_contents.py26
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_directives/test_date.py25
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_directives/test_decorations.py26
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_directives/test_default_role.py26
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_directives/test_figures.py26
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_directives/test_images.py26
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_directives/test_include.py38
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_directives/test_line_blocks.py26
-rw-r--r--docutils/test/test_parsers/test_rst/test_directives/test_math.py26
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_directives/test_meta.py26
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_directives/test_parsed_literals.py26
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_directives/test_raw.py25
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_directives/test_replace.py26
-rw-r--r--docutils/test/test_parsers/test_rst/test_directives/test_replace_fr.py28
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_directives/test_role.py31
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_directives/test_rubrics.py26
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_directives/test_sectnum.py26
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_directives/test_sidebars.py26
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_directives/test_tables.py25
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_directives/test_target_notes.py26
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_directives/test_test_directives.py26
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_directives/test_title.py26
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_directives/test_topics.py26
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_directives/test_unicode.py26
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_directives/test_unknown.py26
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_doctest_blocks.py26
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_east_asian_text.py26
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_enumerated_lists.py26
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_field_lists.py26
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_footnotes.py26
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_inline_markup.py26
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_interpreted.py31
-rw-r--r--docutils/test/test_parsers/test_rst/test_interpreted_fr.py33
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_line_blocks.py26
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_line_length_limit.py28
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_line_length_limit_default.py26
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_literal_blocks.py26
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_option_lists.py26
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_outdenting.py26
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_paragraphs.py26
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_section_headers.py27
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_substitutions.py26
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_tables.py27
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_targets.py26
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_transitions.py31
62 files changed, 1262 insertions, 448 deletions
diff --git a/docutils/test/DocutilsTestSupport.py b/docutils/test/DocutilsTestSupport.py
index cfbe36e2d..6d6af1973 100644
--- a/docutils/test/DocutilsTestSupport.py
+++ b/docutils/test/DocutilsTestSupport.py
@@ -14,8 +14,6 @@ Exports the following:
- `StandardTestCase`
- `CustomTestCase`
- `CustomTestSuite`
- - `ParserTestCase`
- - `ParserTestSuite`
"""
__docformat__ = 'reStructuredText'
@@ -30,8 +28,6 @@ os.chdir(testroot)
sys.path.insert(0, os.path.normpath(os.path.join(testroot, '..')))
sys.path.insert(0, testroot)
-from docutils import frontend, utils # NoQA: E402
-from docutils.parsers import rst # NoQA: E402
from docutils.parsers.rst import roles # NoQA: E402
from docutils.statemachine import StringList # NoQA: E402
@@ -175,61 +171,6 @@ class CustomTestSuite(unittest.TestSuite):
return tc
-class ParserTestCase(CustomTestCase):
-
- """
- Output checker for the parser.
-
- Should probably be called ParserOutputChecker, but I can deal with
- that later when/if someone comes up with a category of parser test
- cases that have nothing to do with the input and output of the parser.
- """
-
- parser = rst.Parser()
- """Parser shared by all ParserTestCases."""
-
- settings = frontend.get_default_settings(rst.Parser)
- settings.report_level = 5
- settings.halt_level = 5
- settings.debug = False
-
- def test_parser(self):
- settings = self.settings.copy()
- settings.__dict__.update(self.suite_settings)
- document = utils.new_document('test data', settings)
- self.parser.parse(self.input, document)
- output = document.pformat()
- self.assertEqual(output, self.expected)
-
-
-class ParserTestSuite(CustomTestSuite):
-
- """
- A collection of ParserTestCases.
-
- A ParserTestSuite instance manufactures ParserTestCases,
- keeps track of them, and provides a shared test fixture (a-la
- setUp and tearDown).
- """
-
- test_case_class = ParserTestCase
-
- def generateTests(self, dict):
- """
- Stock the suite with test cases generated from a test data dictionary.
-
- Each dictionary key (test type name) maps to a list of tests. Each
- test is a list: input, expected output.
- Tests should be self-documenting and not require external comments.
- """
- for name, cases in dict.items():
- for casenum, (case_input, case_expected) in enumerate(cases):
- self.addTestCase(
- self.test_case_class, 'test_parser',
- input=case_input, expected=case_expected,
- id=f'totest[{name!r}][{casenum}]')
-
-
def exception_data(func, *args, **kwds):
"""
Execute `func(*args, **kwds)` and return the resulting exception, the
diff --git a/docutils/test/test_parsers/test_rst/test_block_quotes.py b/docutils/test/test_parsers/test_rst/test_block_quotes.py
index f6ce76e22..4c21e8112 100755
--- a/docutils/test/test_parsers/test_rst/test_block_quotes.py
+++ b/docutils/test/test_parsers/test_rst/test_block_quotes.py
@@ -8,13 +8,27 @@
Tests for states.py.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(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 = {}
@@ -383,4 +397,4 @@ Paragraph.
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_bullet_lists.py b/docutils/test/test_parsers/test_rst/test_bullet_lists.py
index 9ce2ccb23..d58f18712 100755
--- a/docutils/test/test_parsers/test_rst/test_bullet_lists.py
+++ b/docutils/test/test_parsers/test_rst/test_bullet_lists.py
@@ -8,13 +8,27 @@
Tests for states.py.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(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 = {}
@@ -204,4 +218,4 @@ Unicode bullets:
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_character_level_inline_markup.py b/docutils/test/test_parsers/test_rst/test_character_level_inline_markup.py
index ac9cb63c3..44491806f 100644
--- a/docutils/test/test_parsers/test_rst/test_character_level_inline_markup.py
+++ b/docutils/test/test_parsers/test_rst/test_character_level_inline_markup.py
@@ -10,14 +10,28 @@ with the "character-level-inline-markup" setting.
Experimental.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite(
- suite_settings={'character_level_inline_markup': True})
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(unittest.TestCase):
+ def test_parser(self):
+ parser = Parser()
+ settings = get_default_settings(Parser)
+ settings.warning_stream = ''
+ settings.character_level_inline_markup = True
+ 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 = {}
@@ -684,4 +698,4 @@ But this is „*’ emphasized »*‹.
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_citations.py b/docutils/test/test_parsers/test_rst/test_citations.py
index 4261254dc..79b9343dc 100755
--- a/docutils/test/test_parsers/test_rst/test_citations.py
+++ b/docutils/test/test_parsers/test_rst/test_citations.py
@@ -8,13 +8,27 @@
Tests for states.py.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(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 = {}
@@ -181,4 +195,4 @@ isolated internals : ``.-_``.
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_comments.py b/docutils/test/test_parsers/test_rst/test_comments.py
index faa3ebba1..360a1639f 100755
--- a/docutils/test/test_parsers/test_rst/test_comments.py
+++ b/docutils/test/test_parsers/test_rst/test_comments.py
@@ -8,13 +8,27 @@
Tests for states.py.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(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 = {}
@@ -316,4 +330,4 @@ term 2
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_definition_lists.py b/docutils/test/test_parsers/test_rst/test_definition_lists.py
index dab5dc938..b50e3bcca 100755
--- a/docutils/test/test_parsers/test_rst/test_definition_lists.py
+++ b/docutils/test/test_parsers/test_rst/test_definition_lists.py
@@ -8,13 +8,27 @@
Tests for states.py.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(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 = {}
@@ -430,4 +444,4 @@ Term : classifier one : classifier two
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_directives/test_admonitions.py b/docutils/test/test_parsers/test_rst/test_directives/test_admonitions.py
index 067cbaab8..065c374fb 100755
--- a/docutils/test/test_parsers/test_rst/test_directives/test_admonitions.py
+++ b/docutils/test/test_parsers/test_rst/test_directives/test_admonitions.py
@@ -8,13 +8,27 @@
Tests for admonitions.py directives.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(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 = {}
@@ -214,4 +228,4 @@ totest['admonitions'] = [
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_directives/test_admonitions_de.py b/docutils/test/test_parsers/test_rst/test_directives/test_admonitions_de.py
index 4d34cc53e..54a514d4c 100644
--- a/docutils/test/test_parsers/test_rst/test_directives/test_admonitions_de.py
+++ b/docutils/test/test_parsers/test_rst/test_directives/test_admonitions_de.py
@@ -8,14 +8,33 @@
Tests for admonitions.py directives in German document.
"""
-from test import DocutilsTestSupport
-
-
-def suite():
- settings = {'language_code': 'de'}
- s = DocutilsTestSupport.ParserTestSuite(suite_settings=settings)
- s.generateTests(totest)
- return s
+import unittest
+
+from test import DocutilsTestSupport # NoQA: F401
+
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser, roles
+from docutils.utils import new_document
+
+
+class ParserTestCase(unittest.TestCase):
+ def test_parser(self):
+ parser = Parser()
+ settings = get_default_settings(Parser)
+ settings.warning_stream = ''
+ settings.language_code = 'de'
+ for name, cases in totest.items():
+ for casenum, (case_input, case_expected) in enumerate(cases):
+ # Language-specific roles and roles added by the
+ # "default-role" and "role" directives are currently stored
+ # globally in the roles._roles dictionary. This workaround
+ # empties that dictionary.
+ roles._roles = {}
+ 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 = {}
@@ -219,4 +238,4 @@ totest['admonitions'] = [
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_directives/test_admonitions_dummy_lang.py b/docutils/test/test_parsers/test_rst/test_directives/test_admonitions_dummy_lang.py
index 7f722bba4..75e190b58 100644
--- a/docutils/test/test_parsers/test_rst/test_directives/test_admonitions_dummy_lang.py
+++ b/docutils/test/test_parsers/test_rst/test_directives/test_admonitions_dummy_lang.py
@@ -8,15 +8,28 @@
Tests for admonition directives with local language module.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- settings = {'language_code': 'local-dummy-lang',
- 'report_level': 2} # TODO: ignored when run as __main__
- s = DocutilsTestSupport.ParserTestSuite(suite_settings=settings)
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(unittest.TestCase):
+ def test_parser(self):
+ parser = Parser()
+ settings = get_default_settings(Parser)
+ settings.warning_stream = ''
+ settings.language_code = 'local-dummy-lang'
+ 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 = {}
@@ -41,4 +54,4 @@ totest['admonitions'] = [
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_directives/test_block_quotes.py b/docutils/test/test_parsers/test_rst/test_directives/test_block_quotes.py
index fbc3e8fc9..662feba3c 100755
--- a/docutils/test/test_parsers/test_rst/test_directives/test_block_quotes.py
+++ b/docutils/test/test_parsers/test_rst/test_directives/test_block_quotes.py
@@ -9,13 +9,27 @@ Tests for the block quote directives "epigraph", "highlights", and
"pull-quote".
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(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)
generic_tests = [
@@ -68,4 +82,4 @@ for block_quote_type in ('epigraph', 'highlights', 'pull-quote'):
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_directives/test_class.py b/docutils/test/test_parsers/test_rst/test_directives/test_class.py
index b642f76c4..3219468a9 100755
--- a/docutils/test/test_parsers/test_rst/test_directives/test_class.py
+++ b/docutils/test/test_parsers/test_rst/test_directives/test_class.py
@@ -8,13 +8,27 @@
Tests for the 'class' directive.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(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 = {}
@@ -51,4 +65,4 @@ totest['class'] = [
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_directives/test_code.py b/docutils/test/test_parsers/test_rst/test_directives/test_code.py
index 97933bdfc..5d6b85c2c 100644
--- a/docutils/test/test_parsers/test_rst/test_directives/test_code.py
+++ b/docutils/test/test_parsers/test_rst/test_directives/test_code.py
@@ -8,16 +8,32 @@
Test the 'code' directive in parsers/rst/directives/body.py.
"""
-from test import DocutilsTestSupport
+import unittest
+
+from test import DocutilsTestSupport # NoQA: F401
+
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
from docutils.utils.code_analyzer import with_pygments
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- if not with_pygments:
- del totest['code_parsing']
- s.generateTests(totest)
- return s
+class ParserTestCase(unittest.TestCase):
+ def test_parser(self):
+ if not with_pygments:
+ del totest['code_parsing']
+
+ parser = Parser()
+ settings = get_default_settings(Parser)
+ settings.warning_stream = ''
+ settings.report_level = 5
+ 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 = {}
@@ -251,4 +267,4 @@ Place the language name in a class argument to avoid the no-lexer warning:
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_directives/test_code_long.py b/docutils/test/test_parsers/test_rst/test_directives/test_code_long.py
index e0b9df99e..980ddb029 100644
--- a/docutils/test/test_parsers/test_rst/test_directives/test_code_long.py
+++ b/docutils/test/test_parsers/test_rst/test_directives/test_code_long.py
@@ -8,16 +8,30 @@
Test the 'code' directive in body.py with syntax_highlight = 'long'.
"""
-from test import DocutilsTestSupport
+import unittest
+
+from test import DocutilsTestSupport # NoQA: F401
+
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
from docutils.utils.code_analyzer import with_pygments
-def suite():
- settings = {'syntax_highlight': 'long'}
- s = DocutilsTestSupport.ParserTestSuite(suite_settings=settings)
- if with_pygments:
- s.generateTests(totest)
- return s
+@unittest.skipUnless(with_pygments, 'needs Pygments')
+class ParserTestCase(unittest.TestCase):
+ def test_parser(self):
+ parser = Parser()
+ settings = get_default_settings(Parser)
+ settings.warning_stream = ''
+ settings.syntax_highlight = 'long'
+ 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 = {}
@@ -107,4 +121,4 @@ totest['code_parsing_long'] = [
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_directives/test_code_none.py b/docutils/test/test_parsers/test_rst/test_directives/test_code_none.py
index bfb02bf97..f69dce691 100644
--- a/docutils/test/test_parsers/test_rst/test_directives/test_code_none.py
+++ b/docutils/test/test_parsers/test_rst/test_directives/test_code_none.py
@@ -8,14 +8,28 @@
Test the 'code' directive in body.py with syntax_highlight = 'none'.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite(
- suite_settings={'syntax_highlight': 'none'})
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(unittest.TestCase):
+ def test_parser(self):
+ parser = Parser()
+ settings = get_default_settings(Parser)
+ settings.warning_stream = ''
+ settings.syntax_highlight = 'none'
+ 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 = {}
@@ -79,4 +93,4 @@ totest['code_parsing_none'] = [
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_directives/test_compound.py b/docutils/test/test_parsers/test_rst/test_directives/test_compound.py
index 6896820ac..4c3e1b637 100755
--- a/docutils/test/test_parsers/test_rst/test_directives/test_compound.py
+++ b/docutils/test/test_parsers/test_rst/test_directives/test_compound.py
@@ -8,13 +8,27 @@
Tests for the 'compound' directive from body.py.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(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 = {}
@@ -102,4 +116,4 @@ totest['compound'] = [
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_directives/test_container.py b/docutils/test/test_parsers/test_rst/test_directives/test_container.py
index 42c44a055..17585c781 100755
--- a/docutils/test/test_parsers/test_rst/test_directives/test_container.py
+++ b/docutils/test/test_parsers/test_rst/test_directives/test_container.py
@@ -8,13 +8,27 @@
Tests for the 'container' directive from body.py.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(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 = {}
@@ -88,4 +102,4 @@ totest['container'] = [
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_directives/test_contents.py b/docutils/test/test_parsers/test_rst/test_directives/test_contents.py
index 5ffa51164..8e03a36e2 100755
--- a/docutils/test/test_parsers/test_rst/test_directives/test_contents.py
+++ b/docutils/test/test_parsers/test_rst/test_directives/test_contents.py
@@ -8,13 +8,27 @@
Tests for parts.py contents directive.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(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 = {}
@@ -238,4 +252,4 @@ totest['contents'] = [
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_directives/test_date.py b/docutils/test/test_parsers/test_rst/test_directives/test_date.py
index c1b813ace..58344e541 100755
--- a/docutils/test/test_parsers/test_rst/test_directives/test_date.py
+++ b/docutils/test/test_parsers/test_rst/test_directives/test_date.py
@@ -8,16 +8,29 @@
Tests for the misc.py "date" directive.
"""
-from test import DocutilsTestSupport
import time
+import unittest
+
+from test import DocutilsTestSupport # NoQA: F401
from docutils.io import _locale_encoding # noqa
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+class ParserTestCase(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 = {}
@@ -75,4 +88,4 @@ if _locale_encoding in ('utf-8', 'utf8', 'latin-1', 'iso-8859-1'):
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_directives/test_decorations.py b/docutils/test/test_parsers/test_rst/test_directives/test_decorations.py
index a9395206c..108cc4f78 100755
--- a/docutils/test/test_parsers/test_rst/test_directives/test_decorations.py
+++ b/docutils/test/test_parsers/test_rst/test_directives/test_decorations.py
@@ -8,13 +8,27 @@
Tests for the "header" & "footer" directives.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(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 = {}
@@ -86,4 +100,4 @@ totest['footers'] = [
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_directives/test_default_role.py b/docutils/test/test_parsers/test_rst/test_directives/test_default_role.py
index 2c36497d6..cb8064730 100755
--- a/docutils/test/test_parsers/test_rst/test_directives/test_default_role.py
+++ b/docutils/test/test_parsers/test_rst/test_directives/test_default_role.py
@@ -8,13 +8,27 @@
Tests for misc.py "default-role" directive.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(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 = {}
@@ -80,4 +94,4 @@ Returned the `default role` to its standard default.
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_directives/test_figures.py b/docutils/test/test_parsers/test_rst/test_directives/test_figures.py
index 659955961..6a4ced2e5 100755
--- a/docutils/test/test_parsers/test_rst/test_directives/test_figures.py
+++ b/docutils/test/test_parsers/test_rst/test_directives/test_figures.py
@@ -8,13 +8,27 @@
Tests for images.py figure directives.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(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 = {}
@@ -292,4 +306,4 @@ Testing for line-leaks:
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_directives/test_images.py b/docutils/test/test_parsers/test_rst/test_directives/test_images.py
index f7ec8859f..9497b5091 100755
--- a/docutils/test/test_parsers/test_rst/test_directives/test_images.py
+++ b/docutils/test/test_parsers/test_rst/test_directives/test_images.py
@@ -8,13 +8,27 @@
Tests for images.py image directives.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(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 = {}
@@ -447,4 +461,4 @@ totest['images'] = [
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_directives/test_include.py b/docutils/test/test_parsers/test_rst/test_directives/test_include.py
index 32f3f88cd..2f79274f5 100755
--- a/docutils/test/test_parsers/test_rst/test_directives/test_include.py
+++ b/docutils/test/test_parsers/test_rst/test_directives/test_include.py
@@ -8,8 +8,14 @@ Tests for misc.py "include" directive.
"""
import os.path
-from test import DocutilsTestSupport
+import unittest
+
+from test import DocutilsTestSupport # NoQA: F401
+
from docutils import parsers, utils
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
from docutils.utils.code_analyzer import with_pygments
# optional 3rd-party markdown parser
@@ -20,15 +26,25 @@ except ImportError:
md_parser_class = None
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- # eventually skip optional parts:
- if not with_pygments:
- del totest['include_code']
- if not md_parser_class:
- del totest['include_markdown']
- s.generateTests(totest)
- return s
+class ParserTestCase(unittest.TestCase):
+ def test_parser(self):
+ # eventually skip optional parts:
+ if not with_pygments:
+ del totest['code_parsing']
+ if not md_parser_class:
+ del totest['include_markdown']
+
+ parser = Parser()
+ settings = get_default_settings(Parser)
+ settings.warning_stream = ''
+ settings.halt_level = 5
+ 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)
# prepend this directory (relative to the test root):
@@ -1370,4 +1386,4 @@ A paragraph.
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_directives/test_line_blocks.py b/docutils/test/test_parsers/test_rst/test_directives/test_line_blocks.py
index 64e304a83..dc744a9f4 100755
--- a/docutils/test/test_parsers/test_rst/test_directives/test_line_blocks.py
+++ b/docutils/test/test_parsers/test_rst/test_directives/test_line_blocks.py
@@ -8,13 +8,27 @@
Tests for the body.py 'line-block' directive.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(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 = {}
@@ -91,4 +105,4 @@ totest['line_blocks'] = [
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_directives/test_math.py b/docutils/test/test_parsers/test_rst/test_directives/test_math.py
index 6713d56d4..df53e420e 100644
--- a/docutils/test/test_parsers/test_rst/test_directives/test_math.py
+++ b/docutils/test/test_parsers/test_rst/test_directives/test_math.py
@@ -8,13 +8,27 @@
Tests for the 'math' directive.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(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 = {}
@@ -94,4 +108,4 @@ totest['content_with_blank_line'] = [
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_directives/test_meta.py b/docutils/test/test_parsers/test_rst/test_directives/test_meta.py
index d4bfbcdcd..efd59e82d 100755
--- a/docutils/test/test_parsers/test_rst/test_directives/test_meta.py
+++ b/docutils/test/test_parsers/test_rst/test_directives/test_meta.py
@@ -8,13 +8,27 @@
Tests for html meta directives.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(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 = {}
@@ -170,4 +184,4 @@ Paragraph
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_directives/test_parsed_literals.py b/docutils/test/test_parsers/test_rst/test_directives/test_parsed_literals.py
index fc634f924..61755c30a 100755
--- a/docutils/test/test_parsers/test_rst/test_directives/test_parsed_literals.py
+++ b/docutils/test/test_parsers/test_rst/test_directives/test_parsed_literals.py
@@ -8,13 +8,27 @@
Tests for the body.py 'parsed-literal' directive.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(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 = {}
@@ -72,4 +86,4 @@ totest['parsed_literals'] = [
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_directives/test_raw.py b/docutils/test/test_parsers/test_rst/test_directives/test_raw.py
index bb1c87e79..dc7c1a61f 100755
--- a/docutils/test/test_parsers/test_rst/test_directives/test_raw.py
+++ b/docutils/test/test_parsers/test_rst/test_directives/test_raw.py
@@ -9,16 +9,29 @@ Tests for misc.py "raw" directive.
"""
import os.path
+import unittest
-from test import DocutilsTestSupport
+from test import DocutilsTestSupport # NoQA: F401
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
from docutils import utils
+from docutils.utils import new_document
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+class ParserTestCase(unittest.TestCase):
+ def test_parser(self):
+ parser = Parser()
+ settings = get_default_settings(Parser)
+ settings.warning_stream = ''
+ settings.halt_level = 5
+ 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)
mydir = 'test_parsers/test_rst/test_directives/'
@@ -175,4 +188,4 @@ Raw input file is UTF-16-encoded, and is not valid ASCII.
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_directives/test_replace.py b/docutils/test/test_parsers/test_rst/test_directives/test_replace.py
index f6c17fbb4..1ee1371e5 100755
--- a/docutils/test/test_parsers/test_rst/test_directives/test_replace.py
+++ b/docutils/test/test_parsers/test_rst/test_directives/test_replace.py
@@ -8,13 +8,27 @@
Tests for misc.py "replace" directive.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(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 = {}
@@ -133,4 +147,4 @@ I recommend you try |Python|_.
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_directives/test_replace_fr.py b/docutils/test/test_parsers/test_rst/test_directives/test_replace_fr.py
index f07b43f70..71b8431a3 100644
--- a/docutils/test/test_parsers/test_rst/test_directives/test_replace_fr.py
+++ b/docutils/test/test_parsers/test_rst/test_directives/test_replace_fr.py
@@ -9,14 +9,28 @@ Tests for misc.py "replace" directive.
Test in french (not default/fallback language).
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite(
- suite_settings={'language_code': 'fr'})
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(unittest.TestCase):
+ def test_parser(self):
+ parser = Parser()
+ settings = get_default_settings(Parser)
+ settings.warning_stream = ''
+ settings.language_code = 'fr'
+ 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 = {}
@@ -73,4 +87,4 @@ Le |Na+| est l'ion sodium.
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_directives/test_role.py b/docutils/test/test_parsers/test_rst/test_directives/test_role.py
index 6c531880a..f3a848400 100755
--- a/docutils/test/test_parsers/test_rst/test_directives/test_role.py
+++ b/docutils/test/test_parsers/test_rst/test_directives/test_role.py
@@ -8,13 +8,32 @@
Tests for misc.py "role" directive.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser, roles
+from docutils.utils import new_document
+
+
+class ParserTestCase(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):
+ # Language-specific roles and roles added by the
+ # "default-role" and "role" directives are currently stored
+ # globally in the roles._roles dictionary. This workaround
+ # empties that dictionary.
+ roles._roles = {}
+ 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 = {}
@@ -275,4 +294,4 @@ Can't use the :raw:`role` directly.
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_directives/test_rubrics.py b/docutils/test/test_parsers/test_rst/test_directives/test_rubrics.py
index 48b0d22a7..d565a1cfa 100755
--- a/docutils/test/test_parsers/test_rst/test_directives/test_rubrics.py
+++ b/docutils/test/test_parsers/test_rst/test_directives/test_rubrics.py
@@ -8,13 +8,27 @@
Tests for the "rubric" directive.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(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 = {}
@@ -81,4 +95,4 @@ totest['rubrics'] = [
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_directives/test_sectnum.py b/docutils/test/test_parsers/test_rst/test_directives/test_sectnum.py
index 4c182c0d9..59fdb1db5 100755
--- a/docutils/test/test_parsers/test_rst/test_directives/test_sectnum.py
+++ b/docutils/test/test_parsers/test_rst/test_directives/test_sectnum.py
@@ -8,13 +8,27 @@
Tests for the 'sectnum' directive.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(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 = {}
@@ -53,4 +67,4 @@ totest['sectnum'] = [
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_directives/test_sidebars.py b/docutils/test/test_parsers/test_rst/test_directives/test_sidebars.py
index 678cc8b3b..428c9833d 100755
--- a/docutils/test/test_parsers/test_rst/test_directives/test_sidebars.py
+++ b/docutils/test/test_parsers/test_rst/test_directives/test_sidebars.py
@@ -8,13 +8,27 @@
Tests for the "sidebar" directive.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(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 = {}
@@ -99,4 +113,4 @@ totest['sidebars'] = [
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_directives/test_tables.py b/docutils/test/test_parsers/test_rst/test_directives/test_tables.py
index dc6b065fe..f50dd2004 100755
--- a/docutils/test/test_parsers/test_rst/test_directives/test_tables.py
+++ b/docutils/test/test_parsers/test_rst/test_directives/test_tables.py
@@ -11,16 +11,29 @@ Tests for tables.py directives.
import os
import csv
import platform
+import unittest
-from test import DocutilsTestSupport
+from test import DocutilsTestSupport # NoQA: F401
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
from docutils import utils
+from docutils.utils import new_document
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+class ParserTestCase(unittest.TestCase):
+ def test_parser(self):
+ parser = Parser()
+ settings = get_default_settings(Parser)
+ settings.warning_stream = ''
+ settings.halt_level = 5
+ 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)
mydir = 'test_parsers/test_rst/test_directives/'
@@ -1581,4 +1594,4 @@ totest['list_table'] = [
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_directives/test_target_notes.py b/docutils/test/test_parsers/test_rst/test_directives/test_target_notes.py
index 609aa0674..97e5054e4 100755
--- a/docutils/test/test_parsers/test_rst/test_directives/test_target_notes.py
+++ b/docutils/test/test_parsers/test_rst/test_directives/test_target_notes.py
@@ -8,13 +8,27 @@
Tests for the target-notes directives.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(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 = {}
@@ -74,4 +88,4 @@ totest['target_notes'] = [
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_directives/test_test_directives.py b/docutils/test/test_parsers/test_rst/test_directives/test_test_directives.py
index 315ea6a52..e25932b84 100755
--- a/docutils/test/test_parsers/test_rst/test_directives/test_test_directives.py
+++ b/docutils/test/test_parsers/test_rst/test_directives/test_test_directives.py
@@ -8,13 +8,27 @@
Tests for misc.py test directives.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(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 = {}
@@ -205,4 +219,4 @@ Paragraph.
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_directives/test_title.py b/docutils/test/test_parsers/test_rst/test_directives/test_title.py
index 9ddf622bd..95eeab8c4 100755
--- a/docutils/test/test_parsers/test_rst/test_directives/test_title.py
+++ b/docutils/test/test_parsers/test_rst/test_directives/test_title.py
@@ -8,13 +8,27 @@
Tests for the 'title' directive.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(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 = {}
@@ -31,4 +45,4 @@ totest['title'] = [
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_directives/test_topics.py b/docutils/test/test_parsers/test_rst/test_directives/test_topics.py
index 5b500f2ee..d766df175 100755
--- a/docutils/test/test_parsers/test_rst/test_directives/test_topics.py
+++ b/docutils/test/test_parsers/test_rst/test_directives/test_topics.py
@@ -8,13 +8,27 @@
Tests for the "topic" directive.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(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 = {}
@@ -252,4 +266,4 @@ More.
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_directives/test_unicode.py b/docutils/test/test_parsers/test_rst/test_directives/test_unicode.py
index b2af6adee..1b3a38a96 100755
--- a/docutils/test/test_parsers/test_rst/test_directives/test_unicode.py
+++ b/docutils/test/test_parsers/test_rst/test_directives/test_unicode.py
@@ -9,13 +9,27 @@ Tests for misc.py "unicode" directive.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(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)
unichr_exception = DocutilsTestSupport.exception_data(
@@ -171,4 +185,4 @@ Copyright |copy| 2003, |BogusMegaCorp (TM)|.
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_directives/test_unknown.py b/docutils/test/test_parsers/test_rst/test_directives/test_unknown.py
index 56e5900e0..049e94457 100755
--- a/docutils/test/test_parsers/test_rst/test_directives/test_unknown.py
+++ b/docutils/test/test_parsers/test_rst/test_directives/test_unknown.py
@@ -8,13 +8,27 @@
Tests for unknown directives.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(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 = {}
@@ -64,4 +78,4 @@ totest['unknown'] = [
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_doctest_blocks.py b/docutils/test/test_parsers/test_rst/test_doctest_blocks.py
index 4d67b45d0..050346568 100755
--- a/docutils/test/test_parsers/test_rst/test_doctest_blocks.py
+++ b/docutils/test/test_parsers/test_rst/test_doctest_blocks.py
@@ -8,13 +8,27 @@
Tests for states.py.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(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 = {}
@@ -71,4 +85,4 @@ Paragraph.
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_east_asian_text.py b/docutils/test/test_parsers/test_rst/test_east_asian_text.py
index ed348e7a6..7177dca3e 100755
--- a/docutils/test/test_parsers/test_rst/test_east_asian_text.py
+++ b/docutils/test/test_parsers/test_rst/test_east_asian_text.py
@@ -7,13 +7,27 @@
Tests for East Asian text with double-width characters.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(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 = {}
@@ -309,4 +323,4 @@ b"""\
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_enumerated_lists.py b/docutils/test/test_parsers/test_rst/test_enumerated_lists.py
index 9fbe40b92..d5329e431 100755
--- a/docutils/test/test_parsers/test_rst/test_enumerated_lists.py
+++ b/docutils/test/test_parsers/test_rst/test_enumerated_lists.py
@@ -8,13 +8,27 @@
Tests for states.py.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(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 = {}
@@ -905,4 +919,4 @@ No item content:
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_field_lists.py b/docutils/test/test_parsers/test_rst/test_field_lists.py
index eff60ed26..d8c9bcd1b 100755
--- a/docutils/test/test_parsers/test_rst/test_field_lists.py
+++ b/docutils/test/test_parsers/test_rst/test_field_lists.py
@@ -8,13 +8,27 @@
Tests for states.py.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(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 = {}
@@ -682,4 +696,4 @@ Not recognized as field list items:
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_footnotes.py b/docutils/test/test_parsers/test_rst/test_footnotes.py
index a5e6b1674..8493c9473 100755
--- a/docutils/test/test_parsers/test_rst/test_footnotes.py
+++ b/docutils/test/test_parsers/test_rst/test_footnotes.py
@@ -8,13 +8,27 @@
Tests for states.py.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(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 = {}
@@ -329,4 +343,4 @@ totest['auto_symbol_footnotes'] = [
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_inline_markup.py b/docutils/test/test_parsers/test_rst/test_inline_markup.py
index 60b028deb..dc9c03637 100755
--- a/docutils/test/test_parsers/test_rst/test_inline_markup.py
+++ b/docutils/test/test_parsers/test_rst/test_inline_markup.py
@@ -8,13 +8,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.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(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 = {}
@@ -1990,4 +2004,4 @@ But this is „*’ emphasized »*‹.
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_interpreted.py b/docutils/test/test_parsers/test_rst/test_interpreted.py
index ad698129c..19e29f67b 100755
--- a/docutils/test/test_parsers/test_rst/test_interpreted.py
+++ b/docutils/test/test_parsers/test_rst/test_interpreted.py
@@ -8,16 +8,31 @@
Tests for interpreted text in docutils/parsers/rst/states.py.
"""
-from test import DocutilsTestSupport
+import unittest
+
+from test import DocutilsTestSupport # NoQA: F401
+
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
from docutils.utils.code_analyzer import with_pygments
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- if not with_pygments:
- del totest['code_parsing']
- s.generateTests(totest)
- return s
+class ParserTestCase(unittest.TestCase):
+ def test_parser(self):
+ if not with_pygments:
+ del totest['code_parsing']
+
+ 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 = {}
@@ -429,4 +444,4 @@ totest['unknown_roles'] = [
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_interpreted_fr.py b/docutils/test/test_parsers/test_rst/test_interpreted_fr.py
index 64306af9d..8c731f5d1 100644
--- a/docutils/test/test_parsers/test_rst/test_interpreted_fr.py
+++ b/docutils/test/test_parsers/test_rst/test_interpreted_fr.py
@@ -9,14 +9,33 @@ Tests for interpreted text in docutils/parsers/rst/states.py.
Test not default/fallback language french.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite(
- suite_settings={'language_code': 'fr'})
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser, roles
+from docutils.utils import new_document
+
+
+class ParserTestCase(unittest.TestCase):
+ def test_parser(self):
+ parser = Parser()
+ settings = get_default_settings(Parser)
+ settings.warning_stream = ''
+ settings.language_code = 'fr'
+ for name, cases in totest.items():
+ for casenum, (case_input, case_expected) in enumerate(cases):
+ # Language-specific roles and roles added by the
+ # "default-role" and "role" directives are currently stored
+ # globally in the roles._roles dictionary. This workaround
+ # empties that dictionary.
+ roles._roles = {}
+ 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 = {}
@@ -54,4 +73,4 @@ Simple explicit roles and english fallbacks:
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_line_blocks.py b/docutils/test/test_parsers/test_rst/test_line_blocks.py
index b79f11777..441409cad 100755
--- a/docutils/test/test_parsers/test_rst/test_line_blocks.py
+++ b/docutils/test/test_parsers/test_rst/test_line_blocks.py
@@ -8,13 +8,27 @@
Tests for states.py.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(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 = {}
@@ -330,4 +344,4 @@ System messages can appear in place of lines:
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_line_length_limit.py b/docutils/test/test_parsers/test_rst/test_line_length_limit.py
index f5f6169d8..2b5d078d6 100755
--- a/docutils/test/test_parsers/test_rst/test_line_length_limit.py
+++ b/docutils/test/test_parsers/test_rst/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.ParserTestSuite(
- suite_settings={'line_length_limit': 80})
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(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 = {}
@@ -75,4 +89,4 @@ A paragraph.
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_line_length_limit_default.py b/docutils/test/test_parsers/test_rst/test_line_length_limit_default.py
index 27c30aa9f..5fc688d7b 100755
--- a/docutils/test/test_parsers/test_rst/test_line_length_limit_default.py
+++ b/docutils/test/test_parsers/test_rst/test_line_length_limit_default.py
@@ -14,13 +14,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.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(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 = {}
@@ -51,4 +65,4 @@ above the limit
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_literal_blocks.py b/docutils/test/test_parsers/test_rst/test_literal_blocks.py
index 3fffaa919..d35ebe1c2 100755
--- a/docutils/test/test_parsers/test_rst/test_literal_blocks.py
+++ b/docutils/test/test_parsers/test_rst/test_literal_blocks.py
@@ -8,13 +8,27 @@
Tests for states.py.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(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 = {}
@@ -368,4 +382,4 @@ $ Inconsistent line.
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_option_lists.py b/docutils/test/test_parsers/test_rst/test_option_lists.py
index 1fec764db..788cbcc33 100755
--- a/docutils/test/test_parsers/test_rst/test_option_lists.py
+++ b/docutils/test/test_parsers/test_rst/test_option_lists.py
@@ -8,13 +8,27 @@
Tests for states.py.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(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 = {}
@@ -770,4 +784,4 @@ Complex optargs:
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_outdenting.py b/docutils/test/test_parsers/test_rst/test_outdenting.py
index f6bcb3d08..2ac3e1fbc 100755
--- a/docutils/test/test_parsers/test_rst/test_outdenting.py
+++ b/docutils/test/test_parsers/test_rst/test_outdenting.py
@@ -8,13 +8,27 @@
Tests for states.py.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(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 = {}
@@ -87,4 +101,4 @@ This paragraph ends the bullet list item before a block quote.
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_paragraphs.py b/docutils/test/test_parsers/test_rst/test_paragraphs.py
index 01a021db7..50cef6ea1 100755
--- a/docutils/test/test_parsers/test_rst/test_paragraphs.py
+++ b/docutils/test/test_parsers/test_rst/test_paragraphs.py
@@ -8,13 +8,27 @@
Tests for states.py.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(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 = {}
@@ -86,4 +100,4 @@ smart dude.
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_section_headers.py b/docutils/test/test_parsers/test_rst/test_section_headers.py
index bab5c2e1d..62db29828 100755
--- a/docutils/test/test_parsers/test_rst/test_section_headers.py
+++ b/docutils/test/test_parsers/test_rst/test_section_headers.py
@@ -7,13 +7,28 @@
Tests for states.py.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(unittest.TestCase):
+ def test_parser(self):
+ parser = Parser()
+ settings = get_default_settings(Parser)
+ settings.warning_stream = ''
+ settings.halt_level = 5
+ 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 = {}
@@ -909,4 +924,4 @@ Without it, the parser ends up in an infinite loop.
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_substitutions.py b/docutils/test/test_parsers/test_rst/test_substitutions.py
index b51a9fe9b..c8f3d73d8 100755
--- a/docutils/test/test_parsers/test_rst/test_substitutions.py
+++ b/docutils/test/test_parsers/test_rst/test_substitutions.py
@@ -8,13 +8,27 @@
Tests for states.py.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(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 = {}
@@ -295,4 +309,4 @@ Elements that are prohibited inside of substitution definitions:
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_tables.py b/docutils/test/test_parsers/test_rst/test_tables.py
index dc14ff069..53a36f94c 100755
--- a/docutils/test/test_parsers/test_rst/test_tables.py
+++ b/docutils/test/test_parsers/test_rst/test_tables.py
@@ -10,13 +10,28 @@ Tests for states.py.
import os
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(unittest.TestCase):
+ def test_parser(self):
+ parser = Parser()
+ settings = get_default_settings(Parser)
+ settings.warning_stream = ''
+ settings.halt_level = 5
+ 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)
mydir = 'test_parsers/test_rst/'
@@ -1309,4 +1324,4 @@ Note The first row of this table may expand
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_targets.py b/docutils/test/test_parsers/test_rst/test_targets.py
index b098a066f..3687522b5 100755
--- a/docutils/test/test_parsers/test_rst/test_targets.py
+++ b/docutils/test/test_parsers/test_rst/test_targets.py
@@ -8,13 +8,27 @@
Tests for states.py.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(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 = {}
@@ -536,4 +550,4 @@ no blank line
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()
diff --git a/docutils/test/test_parsers/test_rst/test_transitions.py b/docutils/test/test_parsers/test_rst/test_transitions.py
index a19c92847..7f97c8ac3 100755
--- a/docutils/test/test_parsers/test_rst/test_transitions.py
+++ b/docutils/test/test_parsers/test_rst/test_transitions.py
@@ -8,19 +8,34 @@
Tests for transition markers.
"""
-from test import DocutilsTestSupport
+import unittest
+from test import DocutilsTestSupport # NoQA: F401
-def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
- return s
+from docutils.frontend import get_default_settings
+from docutils.parsers.rst import Parser
+from docutils.utils import new_document
+
+
+class ParserTestCase(unittest.TestCase):
+ def test_parser(self):
+ parser = Parser()
+ settings = get_default_settings(Parser)
+ settings.warning_stream = ''
+ settings.halt_level = 5
+ 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.ParserTestSuite.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.
@@ -315,4 +330,4 @@ A paragraph.
if __name__ == '__main__':
import unittest
- unittest.main(defaultTest='suite')
+ unittest.main()