diff options
Diffstat (limited to 'docutils')
| -rw-r--r-- | docutils/test/DocutilsTestSupport.py | 21 | ||||
| -rwxr-xr-x | docutils/test/test_writers/test_html4css1_template.py | 40 | ||||
| -rw-r--r-- | docutils/test/test_writers/test_html5_template.py | 40 | ||||
| -rwxr-xr-x | docutils/test/test_writers/test_latex2e.py | 179 | ||||
| -rw-r--r-- | docutils/test/test_writers/test_manpage.py | 30 | ||||
| -rwxr-xr-x | docutils/test/test_writers/test_null.py | 30 | ||||
| -rwxr-xr-x | docutils/test/test_writers/test_pseudoxml.py | 53 | ||||
| -rwxr-xr-x | docutils/test/test_writers/test_s5.py | 53 |
8 files changed, 329 insertions, 117 deletions
diff --git a/docutils/test/DocutilsTestSupport.py b/docutils/test/DocutilsTestSupport.py index 47e31a22e..aedefbe29 100644 --- a/docutils/test/DocutilsTestSupport.py +++ b/docutils/test/DocutilsTestSupport.py @@ -19,7 +19,6 @@ Exports the following: - `ParserTestCase` - `ParserTestSuite` - `WriterPublishTestCase` - - `PublishTestSuite` """ __docformat__ = 'reStructuredText' @@ -367,26 +366,6 @@ class WriterPublishTestCase(CustomTestCase, docutils.SettingsSpec): self.assertEqual(output, self.expected) -class PublishTestSuite(CustomTestSuite): - - def __init__(self, writer_name, suite_settings=None): - """ - `writer_name` is the name of the writer to use. - """ - super().__init__(suite_settings=suite_settings) - self.writer_name = writer_name - - def generateTests(self, dict): - for name, cases in dict.items(): - for casenum, (case_input, case_expected) in enumerate(cases): - self.addTestCase( - WriterPublishTestCase, 'test_publish', - input=case_input, expected=case_expected, - id=f'totest[{name!r}][{casenum}]', - # Passed to constructor of self.test_class: - writer_name=self.writer_name) - - def exception_data(func, *args, **kwds): """ Execute `func(*args, **kwds)` and return the resulting exception, the diff --git a/docutils/test/test_writers/test_html4css1_template.py b/docutils/test/test_writers/test_html4css1_template.py index 52b4b7e5d..863fac289 100755 --- a/docutils/test/test_writers/test_html4css1_template.py +++ b/docutils/test/test_writers/test_html4css1_template.py @@ -10,20 +10,36 @@ Tests for the HTML writer. import os import platform +import unittest -from test import DocutilsTestSupport +from test import DocutilsTestSupport # NoQA: F401 import docutils - - -def suite(): - settings = {'template': os.path.join(DocutilsTestSupport.testroot, - 'data', 'full-template.txt'), - 'stylesheet_path': '/test.css', - 'embed_stylesheet': 0} - s = DocutilsTestSupport.PublishTestSuite('html', suite_settings=settings) - s.generateTests(totest) - return s +from docutils.core import publish_string + + +class WriterPublishTestCase(unittest.TestCase): + def test_publish(self): + writer_name = 'html4' + template_path = os.path.join(DocutilsTestSupport.testroot, + 'data', 'full-template.txt') + for name, cases in totest.items(): + for casenum, (case_input, case_expected) in enumerate(cases): + with self.subTest(id=f'totest[{name!r}][{casenum}]'): + output = publish_string( + source=case_input, + writer_name=writer_name, + settings_overrides={ + '_disable_config': True, + 'strict_visitor': True, + 'template': template_path, + 'stylesheet_path': '/test.css', + 'embed_stylesheet': False, + }, + ) + if isinstance(output, bytes): + output = output.decode('utf-8') + self.assertEqual(output, case_expected) if platform.system() == "Windows": @@ -244,4 +260,4 @@ footer text if __name__ == '__main__': import unittest - unittest.main(defaultTest='suite') + unittest.main() diff --git a/docutils/test/test_writers/test_html5_template.py b/docutils/test/test_writers/test_html5_template.py index ef065d5c7..d30f6063f 100644 --- a/docutils/test/test_writers/test_html5_template.py +++ b/docutils/test/test_writers/test_html5_template.py @@ -10,20 +10,36 @@ Tests for the HTML writer. import os import platform +import unittest -from test import DocutilsTestSupport +from test import DocutilsTestSupport # NoQA: F401 import docutils - - -def suite(): - settings = {'template': os.path.join(DocutilsTestSupport.testroot, - 'data', 'full-template.txt'), - 'stylesheet_path': '/test.css', - 'embed_stylesheet': 0} - s = DocutilsTestSupport.PublishTestSuite('html5', suite_settings=settings) - s.generateTests(totest) - return s +from docutils.core import publish_string + + +class WriterPublishTestCase(unittest.TestCase): + def test_publish(self): + writer_name = 'html5' + template_path = os.path.join(DocutilsTestSupport.testroot, + 'data', 'full-template.txt') + for name, cases in totest.items(): + for casenum, (case_input, case_expected) in enumerate(cases): + with self.subTest(id=f'totest[{name!r}][{casenum}]'): + output = publish_string( + source=case_input, + writer_name=writer_name, + settings_overrides={ + '_disable_config': True, + 'strict_visitor': True, + 'template': template_path, + 'stylesheet_path': '/test.css', + 'embed_stylesheet': False, + }, + ) + if isinstance(output, bytes): + output = output.decode('utf-8') + self.assertEqual(output, case_expected) if platform.system() == "Windows": @@ -229,4 +245,4 @@ html_body = """\ if __name__ == '__main__': import unittest - unittest.main(defaultTest='suite') + unittest.main() diff --git a/docutils/test/test_writers/test_latex2e.py b/docutils/test/test_writers/test_latex2e.py index 5cd5530f8..11d10ae3e 100755 --- a/docutils/test/test_writers/test_latex2e.py +++ b/docutils/test/test_writers/test_latex2e.py @@ -8,39 +8,150 @@ Tests for latex2e writer. """ import string - -from test import DocutilsTestSupport # before importing docutils! - - -def suite(): - settings = {'use_latex_toc': False, - # avoid latex writer future warnings: - 'use_latex_citations': False, - 'legacy_column_widths': True, - } - s = DocutilsTestSupport.PublishTestSuite('latex', suite_settings=settings) - s.generateTests(totest) - settings['use_latex_toc'] = True - s.generateTests(totest_latex_toc) - settings['documentclass'] = 'book' - s.generateTests(totest_latex_toc_book) - del settings['documentclass'] - settings['use_latex_toc'] = False - settings['sectnum_xform'] = False - s.generateTests(totest_latex_sectnum) - settings['sectnum_xform'] = True - settings['use_latex_citations'] = True - s.generateTests(totest_latex_citations) - settings['table_style'] = ['colwidths-auto'] - s.generateTests(totest_table_style_auto) - settings['table_style'] = ['booktabs'] - s.generateTests(totest_table_style_booktabs) - settings['stylesheet_path'] = 'data/spam,data/ham.tex' - s.generateTests(totest_stylesheet) - settings['embed_stylesheet'] = True - settings['warning_stream'] = '' - s.generateTests(totest_stylesheet_embed) - return s +import unittest + +from test import DocutilsTestSupport # NoQA: F401 + +from docutils.core import publish_string + + +class WriterPublishTestCase(unittest.TestCase): + def test_publish(self): + writer_name = 'latex' + settings = { + '_disable_config': True, + 'strict_visitor': True, + 'use_latex_toc': False, + # avoid latex writer future warnings: + 'use_latex_citations': False, + 'legacy_column_widths': 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}]'): + output = publish_string( + source=case_input, + writer_name=writer_name, + settings_overrides=settings.copy(), + ) + if isinstance(output, bytes): + output = output.decode('utf-8') + self.assertEqual(output, case_expected) + + settings['use_latex_toc'] = True + for name, cases in totest_latex_toc.items(): + for casenum, (case_input, case_expected) in enumerate(cases): + with self.subTest(id=f'totest_latex_toc[{name!r}][{casenum}]'): + output = publish_string( + source=case_input, + writer_name=writer_name, + settings_overrides=settings.copy(), + ) + if isinstance(output, bytes): + output = output.decode('utf-8') + self.assertEqual(output, case_expected) + + settings['documentclass'] = 'book' + for name, cases in totest_latex_toc_book.items(): + for casenum, (case_input, case_expected) in enumerate(cases): + with self.subTest( + id=f'totest_latex_toc_book[{name!r}][{casenum}]'): + output = publish_string( + source=case_input, + writer_name=writer_name, + settings_overrides=settings.copy(), + ) + if isinstance(output, bytes): + output = output.decode('utf-8') + self.assertEqual(output, case_expected) + + del settings['documentclass'] + settings['use_latex_toc'] = False + settings['sectnum_xform'] = False + for name, cases in totest_latex_sectnum.items(): + for casenum, (case_input, case_expected) in enumerate(cases): + with self.subTest( + id=f'totest_latex_sectnum[{name!r}][{casenum}]'): + output = publish_string( + source=case_input, + writer_name=writer_name, + settings_overrides=settings.copy(), + ) + if isinstance(output, bytes): + output = output.decode('utf-8') + self.assertEqual(output, case_expected) + + settings['sectnum_xform'] = True + settings['use_latex_citations'] = True + for name, cases in totest_latex_citations.items(): + for casenum, (case_input, case_expected) in enumerate(cases): + with self.subTest( + id=f'totest_latex_citations[{name!r}][{casenum}]'): + output = publish_string( + source=case_input, + writer_name=writer_name, + settings_overrides=settings.copy(), + ) + if isinstance(output, bytes): + output = output.decode('utf-8') + self.assertEqual(output, case_expected) + + settings['table_style'] = ['colwidths-auto'] + for name, cases in totest_table_style_auto.items(): + for casenum, (case_input, case_expected) in enumerate(cases): + with self.subTest( + id=f'totest_table_style_auto[{name!r}][{casenum}]'): + output = publish_string( + source=case_input, + writer_name=writer_name, + settings_overrides=settings.copy(), + ) + if isinstance(output, bytes): + output = output.decode('utf-8') + self.assertEqual(output, case_expected) + + settings['table_style'] = ['booktabs'] + for name, cases in totest_table_style_booktabs.items(): + for casenum, (case_input, case_expected) in enumerate(cases): + with self.subTest( + id=f'totest_table_style_booktabs[{name!r}][{casenum}]'): + output = publish_string( + source=case_input, + writer_name=writer_name, + settings_overrides=settings.copy(), + ) + if isinstance(output, bytes): + output = output.decode('utf-8') + self.assertEqual(output, case_expected) + + settings['stylesheet_path'] = 'data/spam,data/ham.tex' + for name, cases in totest_stylesheet.items(): + for casenum, (case_input, case_expected) in enumerate(cases): + with self.subTest( + id=f'totest_stylesheet[{name!r}][{casenum}]'): + output = publish_string( + source=case_input, + writer_name=writer_name, + settings_overrides=settings.copy(), + ) + if isinstance(output, bytes): + output = output.decode('utf-8') + self.assertEqual(output, case_expected) + + settings['embed_stylesheet'] = True + settings['warning_stream'] = '' + for name, cases in totest_stylesheet_embed.items(): + for casenum, (case_input, case_expected) in enumerate(cases): + with self.subTest( + id=f'totest_stylesheet_embed[{name!r}][{casenum}]'): + output = publish_string( + source=case_input, + writer_name=writer_name, + settings_overrides=settings.copy(), + ) + if isinstance(output, bytes): + output = output.decode('utf-8') + self.assertEqual(output, case_expected) head_template = string.Template( @@ -1134,4 +1245,4 @@ two stylesheets embedded in the header if __name__ == '__main__': import unittest - unittest.main(defaultTest='suite') + unittest.main() diff --git a/docutils/test/test_writers/test_manpage.py b/docutils/test/test_writers/test_manpage.py index cdd207550..813364532 100644 --- a/docutils/test/test_writers/test_manpage.py +++ b/docutils/test/test_writers/test_manpage.py @@ -7,14 +7,30 @@ Tests for manpage writer. """ -from test import DocutilsTestSupport +import unittest +from test import DocutilsTestSupport # NoQA: F401 -def suite(): - settings = {} - s = DocutilsTestSupport.PublishTestSuite('manpage', suite_settings=settings) - s.generateTests(totest) - return s +from docutils.core import publish_string + + +class WriterPublishTestCase(unittest.TestCase): + def test_publish(self): + writer_name = 'manpage' + for name, cases in totest.items(): + for casenum, (case_input, case_expected) in enumerate(cases): + with self.subTest(id=f'totest[{name!r}][{casenum}]'): + output = publish_string( + source=case_input, + writer_name=writer_name, + settings_overrides={ + '_disable_config': True, + 'strict_visitor': True, + }, + ) + if isinstance(output, bytes): + output = output.decode('utf-8') + self.assertEqual(output, case_expected) indend_macros = r""". @@ -482,4 +498,4 @@ Test title, docinfo to man page header. if __name__ == '__main__': import unittest - unittest.main(defaultTest='suite') + unittest.main() diff --git a/docutils/test/test_writers/test_null.py b/docutils/test/test_writers/test_null.py index 17efca20b..9198574f9 100755 --- a/docutils/test/test_writers/test_null.py +++ b/docutils/test/test_writers/test_null.py @@ -8,14 +8,30 @@ Test for Null writer. """ -from test import DocutilsTestSupport +import unittest +from test import DocutilsTestSupport # NoQA: F401 -def suite(): - s = DocutilsTestSupport.PublishTestSuite( - 'null', suite_settings={'output_encoding': 'utf-8'}) - s.generateTests(totest) - return s +from docutils.core import publish_string + + +class WriterPublishTestCase(unittest.TestCase): + def test_publish(self): + writer_name = 'null' + for name, cases in totest.items(): + for casenum, (case_input, case_expected) in enumerate(cases): + with self.subTest(id=f'totest[{name!r}][{casenum}]'): + output = publish_string( + source=case_input, + writer_name=writer_name, + settings_overrides={ + '_disable_config': True, + 'strict_visitor': True, + }, + ) + if isinstance(output, bytes): + output = output.decode('utf-8') + self.assertEqual(output, case_expected) totest = {} @@ -29,4 +45,4 @@ None] if __name__ == '__main__': import unittest - unittest.main(defaultTest='suite') + unittest.main() diff --git a/docutils/test/test_writers/test_pseudoxml.py b/docutils/test/test_writers/test_pseudoxml.py index 9b9d1ec68..3445b4d5f 100755 --- a/docutils/test/test_writers/test_pseudoxml.py +++ b/docutils/test/test_writers/test_pseudoxml.py @@ -8,18 +8,49 @@ Test for pseudo-XML writer. """ -from test import DocutilsTestSupport +import unittest +from test import DocutilsTestSupport # NoQA: F401 -def suite(): - # Settings dictionary must not be empty for later changes to work. - settings = {'expose_internals': []} # default - s = DocutilsTestSupport.PublishTestSuite('pseudoxml', - suite_settings=settings) - s.generateTests(totest) - settings['detailed'] = True - s.generateTests(totest_detailed) - return s +from docutils.core import publish_string + + +class WriterPublishTestCase(unittest.TestCase): + maxDiff = None + + def test_publish(self): + writer_name = 'pseudoxml' + + for name, cases in totest.items(): + for casenum, (case_input, case_expected) in enumerate(cases): + with self.subTest(id=f'totest[{name!r}][{casenum}]'): + output = publish_string( + source=case_input, + writer_name=writer_name, + settings_overrides={ + '_disable_config': True, + 'strict_visitor': True, + }, + ) + if isinstance(output, bytes): + output = output.decode('utf-8') + self.assertEqual(output, case_expected) + + for name, cases in totest_detailed.items(): + for casenum, (case_input, case_expected) in enumerate(cases): + with self.subTest(id=f'totest_detailed[{name!r}][{casenum}]'): + output = publish_string( + source=case_input, + writer_name=writer_name, + settings_overrides={ + '_disable_config': True, + 'strict_visitor': True, + 'detailed': True, + }, + ) + if isinstance(output, bytes): + output = output.decode('utf-8') + self.assertEqual(output, case_expected) totest = {} @@ -83,4 +114,4 @@ totest_detailed['basic'] = [ if __name__ == '__main__': import unittest - unittest.main(defaultTest='suite') + unittest.main() diff --git a/docutils/test/test_writers/test_s5.py b/docutils/test/test_writers/test_s5.py index 3b045fa18..b9a854271 100755 --- a/docutils/test/test_writers/test_s5.py +++ b/docutils/test/test_writers/test_s5.py @@ -10,21 +10,48 @@ Tests for the S5/HTML writer. import os import platform +import unittest -from test import DocutilsTestSupport +from test import DocutilsTestSupport # NoQA: F401 import docutils - - -def suite(): - settings = {'stylesheet_path': '/test.css', - 'embed_stylesheet': 0} - s = DocutilsTestSupport.PublishTestSuite('s5', suite_settings=settings) - s.generateTests(totest_1) - settings['hidden_controls'] = 0 - settings['view_mode'] = 'outline' - s.generateTests(totest_2) - return s +from docutils.core import publish_string + + +class WriterPublishTestCase(unittest.TestCase): + def test_publish(self): + writer_name = 's5' + settings = { + '_disable_config': True, + 'strict_visitor': True, + 'stylesheet_path': '/test.css', + 'embed_stylesheet': False, + } + for name, cases in totest_1.items(): + for casenum, (case_input, case_expected) in enumerate(cases): + with self.subTest(id=f'totest_1[{name!r}][{casenum}]'): + output = publish_string( + source=case_input, + writer_name=writer_name, + settings_overrides=settings.copy(), + ) + if isinstance(output, bytes): + output = output.decode('utf-8') + self.assertEqual(output, case_expected) + + settings['hidden_controls'] = False + settings['view_mode'] = 'outline' + for name, cases in totest_2.items(): + for casenum, (case_input, case_expected) in enumerate(cases): + with self.subTest(id=f'totest_2[{name!r}][{casenum}]'): + output = publish_string( + source=case_input, + writer_name=writer_name, + settings_overrides=settings.copy(), + ) + if isinstance(output, bytes): + output = output.decode('utf-8') + self.assertEqual(output, case_expected) if platform.system() == "Windows": @@ -168,4 +195,4 @@ f"""\ if __name__ == '__main__': import unittest - unittest.main(defaultTest='suite') + unittest.main() |
