#! /usr/bin/env python3 # $Id: test_compound.py 9425 2023-06-30 14:56:47Z milde $ # Author: David Goodger # Copyright: This module has been placed in the public domain. """ Tests for the 'compound' directive from body.py. """ from pathlib import Path import sys import unittest if __name__ == '__main__': # prepend the "docutils root" to the Python library path # so we import the local `docutils` package. sys.path.insert(0, str(Path(__file__).resolve().parents[4])) 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(case_expected, output) totest = {} totest['compound'] = [ ["""\ .. compound:: Compound paragraphs are single logical paragraphs which contain embedded * lists * tables * literal blocks * and other body elements and are split into multiple physical paragraphs. """, """\ Compound paragraphs are single logical paragraphs which contain embedded lists tables literal blocks and other body elements and are split into multiple physical paragraphs. """], ["""\ .. compound:: :name: interesting :class: log This is an extremely interesting compound paragraph containing a simple paragraph, a literal block with some useless log messages:: Connecting... OK Transmitting data... OK Disconnecting... OK and another simple paragraph which is actually just a continuation of the first simple paragraph, with the literal block in between. """, """\ This is an extremely interesting compound paragraph containing a simple paragraph, a literal block with some useless log messages: Connecting... OK Transmitting data... OK Disconnecting... OK and another simple paragraph which is actually just a continuation of the first simple paragraph, with the literal block in between. """], ["""\ .. compound:: content may start on same line second paragraph """, """\ content may start on same line second paragraph """], ] if __name__ == '__main__': unittest.main()