diff options
| author | aa-turner <aa-turner@929543f6-e4f2-0310-98a6-ba3bd3dd1d04> | 2022-11-08 18:09:11 +0000 |
|---|---|---|
| committer | aa-turner <aa-turner@929543f6-e4f2-0310-98a6-ba3bd3dd1d04> | 2022-11-08 18:09:11 +0000 |
| commit | f923b53600c7f47ef7a77d1e493b727b5f0c5b6a (patch) | |
| tree | 2d7568240249f8e9cc0aab849c4cb503fb6dffcc /docutils/test | |
| parent | cba3bdf48e89b677e5c0a1b694e13cb8d5a31dd1 (diff) | |
| download | docutils-f923b53600c7f47ef7a77d1e493b727b5f0c5b6a.tar.gz | |
Inline ``WriterPublishTestCase``
- Move all usages of ``WriterPublishTestCase`` to using subtests, as
part of the test suite refactoring project.
git-svn-id: https://svn.code.sf.net/p/docutils/code/trunk@9228 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
Diffstat (limited to 'docutils/test')
| -rw-r--r-- | docutils/test/DocutilsTestSupport.py | 34 | ||||
| -rwxr-xr-x | docutils/test/test_writers/test_html4css1_parts.py | 64 | ||||
| -rw-r--r-- | docutils/test/test_writers/test_html5_polyglot_parts.py | 63 |
3 files changed, 47 insertions, 114 deletions
diff --git a/docutils/test/DocutilsTestSupport.py b/docutils/test/DocutilsTestSupport.py index aedefbe29..4917d4397 100644 --- a/docutils/test/DocutilsTestSupport.py +++ b/docutils/test/DocutilsTestSupport.py @@ -18,7 +18,6 @@ Exports the following: - `TransformTestSuite` - `ParserTestCase` - `ParserTestSuite` - - `WriterPublishTestCase` """ __docformat__ = 'reStructuredText' @@ -34,8 +33,6 @@ os.chdir(testroot) sys.path.insert(0, os.path.normpath(os.path.join(testroot, '..'))) sys.path.insert(0, testroot) -import docutils # NoQA: E402 -import docutils.core # NoQA: E402 from docutils import frontend, utils # NoQA: E402 from docutils.transforms import universal # NoQA: E402 from docutils.parsers import rst # NoQA: E402 @@ -335,37 +332,6 @@ class ParserTestSuite(CustomTestSuite): id=f'totest[{name!r}][{casenum}]') -class WriterPublishTestCase(CustomTestCase, docutils.SettingsSpec): - - """ - Test case for publish. - """ - - settings_default_overrides = {'_disable_config': True, - 'strict_visitor': True, - } - writer_name = '' # set in subclasses or constructor - - def __init__(self, *args, writer_name='', **kwargs): - if writer_name: - self.writer_name = writer_name - super().__init__(*args, **kwargs) - - def test_publish(self): - output = docutils.core.publish_string( - source=self.input, - reader_name='standalone', - parser_name='restructuredtext', - writer_name=self.writer_name, - settings_spec=self, - settings_overrides=self.suite_settings) - try: - output = output.decode() - except AttributeError: - pass - self.assertEqual(output, self.expected) - - 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_parts.py b/docutils/test/test_writers/test_html4css1_parts.py index f2b54aef9..8aa9da3f2 100755 --- a/docutils/test/test_writers/test_html4css1_parts.py +++ b/docutils/test/test_writers/test_html4css1_parts.py @@ -12,35 +12,36 @@ dictionaries (redundant), along with 'meta' and 'stylesheet' entries with standard values, and any entries with empty values. """ -from test import DocutilsTestSupport +import unittest + +from test import DocutilsTestSupport # NoQA: F401 import docutils import docutils.core -WriterPublishTestCase = DocutilsTestSupport.WriterPublishTestCase - -class HtmlWriterPublishPartsTestCase(WriterPublishTestCase): +class Html4WriterPublishPartsTestCase(unittest.TestCase): """ Test case for HTML writer via the publish_parts interface. """ - writer_name = 'html' - - settings_default_overrides = \ - WriterPublishTestCase.settings_default_overrides.copy() - settings_default_overrides['stylesheet'] = '' - def test_publish(self): - parts = docutils.core.publish_parts( - source=self.input, - reader_name='standalone', - parser_name='restructuredtext', - writer_name=self.writer_name, - settings_spec=self, - settings_overrides=self.suite_settings) - self.assertEqual(self.format_output(parts), self.expected) + writer_name = 'html4' + for name, (settings_overrides, cases) in totest.items(): + for casenum, (case_input, case_expected) in enumerate(cases): + with self.subTest(id=f'totest[{name!r}][{casenum}]'): + parts = docutils.core.publish_parts( + source=case_input, + writer_name=writer_name, + settings_overrides={ + '_disable_config': True, + 'strict_visitor': True, + 'stylesheet': '', + **settings_overrides, + } + ) + self.assertEqual(self.format_output(parts), case_expected) standard_content_type_template = ('<meta http-equiv="Content-Type"' ' content="text/html; charset=%s" />\n') @@ -79,29 +80,10 @@ class HtmlWriterPublishPartsTestCase(WriterPublishTestCase): return {k: v for k, v in parts.items() if v} -class HtmlPublishPartsTestSuite(DocutilsTestSupport.CustomTestSuite): - def generateTests(self, dict): - for name, (settings_overrides, cases) in dict.items(): - original_settings = self.suite_settings.copy() - self.suite_settings.update(settings_overrides) - for casenum, (case_input, case_expected) in enumerate(cases): - self.addTestCase( - HtmlWriterPublishPartsTestCase, 'test_publish', - input=case_input, expected=case_expected, - id=f'totest[{name!r}][{casenum}]') - self.suite_settings = original_settings - - -def suite(): - s = HtmlPublishPartsTestSuite() - s.generateTests(totest) - return s - - totest = {} totest['title_promotion'] = ({'stylesheet_path': '', - 'embed_stylesheet': 0}, [ + 'embed_stylesheet': False}, [ ["""\ Simple String """, @@ -262,9 +244,9 @@ Some stuff }] ]) -totest['no_title_promotion'] = ({'doctitle_xform': 0, +totest['no_title_promotion'] = ({'doctitle_xform': False, 'stylesheet_path': '', - 'embed_stylesheet': 0}, [ + 'embed_stylesheet': False}, [ ["""\ Simple String """, @@ -514,4 +496,4 @@ Not a docinfo. if __name__ == '__main__': import unittest - unittest.main(defaultTest='suite') + unittest.main() diff --git a/docutils/test/test_writers/test_html5_polyglot_parts.py b/docutils/test/test_writers/test_html5_polyglot_parts.py index 9b0940996..95011ca7d 100644 --- a/docutils/test/test_writers/test_html5_polyglot_parts.py +++ b/docutils/test/test_writers/test_html5_polyglot_parts.py @@ -12,33 +12,37 @@ dictionaries (redundant), along with 'meta' and 'stylesheet' entries with standard values, and any entries with empty values. """ -from test import DocutilsTestSupport +import unittest + +from test import DocutilsTestSupport # NoQA: F401 import docutils import docutils.core -WriterPublishTestCase = DocutilsTestSupport.WriterPublishTestCase - - -class Html5WriterPublishPartsTestCase(WriterPublishTestCase): - """Test case for HTML5 writer via the publish_parts interface.""" - writer_name = 'html5' +class Html5WriterPublishPartsTestCase(unittest.TestCase): - settings_default_overrides = \ - WriterPublishTestCase.settings_default_overrides.copy() - settings_default_overrides['stylesheet'] = '' - settings_default_overrides['section_self_link'] = True + """ + Test case for HTML writer via the publish_parts interface. + """ def test_publish(self): - parts = docutils.core.publish_parts( - source=self.input, - reader_name='standalone', - parser_name='restructuredtext', - writer_name=self.writer_name, - settings_spec=self, - settings_overrides=self.suite_settings) - self.assertEqual(self.format_output(parts), self.expected) + writer_name = 'html5' + for name, (settings_overrides, cases) in totest.items(): + for casenum, (case_input, case_expected) in enumerate(cases): + with self.subTest(id=f'totest[{name!r}][{casenum}]'): + parts = docutils.core.publish_parts( + source=case_input, + writer_name=writer_name, + settings_overrides={ + '_disable_config': True, + 'strict_visitor': True, + 'stylesheet': '', + 'section_self_link': True, + **settings_overrides, + } + ) + self.assertEqual(self.format_output(parts), case_expected) standard_content_type_template = '<meta charset="%s" />\n' standard_generator_template = '<meta name="generator"' \ @@ -75,25 +79,6 @@ class Html5WriterPublishPartsTestCase(WriterPublishTestCase): return {k: v for k, v in parts.items() if v} -class Html5PublishPartsTestSuite(DocutilsTestSupport.CustomTestSuite): - def generateTests(self, dict): - for name, (settings_overrides, cases) in dict.items(): - original_settings = self.suite_settings.copy() - self.suite_settings.update(settings_overrides) - for casenum, (case_input, case_expected) in enumerate(cases): - self.addTestCase( - Html5WriterPublishPartsTestCase, 'test_publish', - input=case_input, expected=case_expected, - id=f'totest[{name!r}][{casenum}]') - self.suite_settings = original_settings - - -def suite(): - s = Html5PublishPartsTestSuite() - s.generateTests(totest) - return s - - totest = {} totest['standard'] = ({'stylesheet_path': '', @@ -761,4 +746,4 @@ The latter are referenced a second time [#f2]_ [twice]_. if __name__ == '__main__': import unittest - unittest.main(defaultTest='suite') + unittest.main() |
