diff options
| author | aa-turner <aa-turner@929543f6-e4f2-0310-98a6-ba3bd3dd1d04> | 2022-11-09 13:31:13 +0000 |
|---|---|---|
| committer | aa-turner <aa-turner@929543f6-e4f2-0310-98a6-ba3bd3dd1d04> | 2022-11-09 13:31:13 +0000 |
| commit | fdcef0acfab0cf694b1077b6abdd1fa81e48c257 (patch) | |
| tree | e1581ef412a17d1f9e645928a65f5a197e6546c4 /docutils/test | |
| parent | b148f95fff5870273f96b81d6c0583e589b2603a (diff) | |
| download | docutils-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')
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() |
