summaryrefslogtreecommitdiff
path: root/docutils/test
diff options
context:
space:
mode:
authoraa-turner <aa-turner@929543f6-e4f2-0310-98a6-ba3bd3dd1d04>2022-11-08 18:09:11 +0000
committeraa-turner <aa-turner@929543f6-e4f2-0310-98a6-ba3bd3dd1d04>2022-11-08 18:09:11 +0000
commitf923b53600c7f47ef7a77d1e493b727b5f0c5b6a (patch)
tree2d7568240249f8e9cc0aab849c4cb503fb6dffcc /docutils/test
parentcba3bdf48e89b677e5c0a1b694e13cb8d5a31dd1 (diff)
downloaddocutils-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.py34
-rwxr-xr-xdocutils/test/test_writers/test_html4css1_parts.py64
-rw-r--r--docutils/test/test_writers/test_html5_polyglot_parts.py63
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()