summaryrefslogtreecommitdiff
path: root/docutils
diff options
context:
space:
mode:
Diffstat (limited to 'docutils')
-rw-r--r--docutils/test/DocutilsTestSupport.py21
-rwxr-xr-xdocutils/test/test_writers/test_html4css1_template.py40
-rw-r--r--docutils/test/test_writers/test_html5_template.py40
-rwxr-xr-xdocutils/test/test_writers/test_latex2e.py179
-rw-r--r--docutils/test/test_writers/test_manpage.py30
-rwxr-xr-xdocutils/test/test_writers/test_null.py30
-rwxr-xr-xdocutils/test/test_writers/test_pseudoxml.py53
-rwxr-xr-xdocutils/test/test_writers/test_s5.py53
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()