#! /usr/bin/env python3 # $Id$ # Author: David Goodger # Copyright: This module has been placed in the public domain. """ Tests for states.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[3])) 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(output, case_expected) totest = {} totest['outdenting'] = [ ["""\ Anywhere a paragraph would have an effect on the current indentation level, a comment or list item should also. + bullet This paragraph ends the bullet list item before a block quote. Block quote. """, """\ Anywhere a paragraph would have an effect on the current indentation level, a comment or list item should also. bullet This paragraph ends the bullet list item before a block quote. Block quote. """], ["""\ + bullet .. Comments swallow up all indented text following. (Therefore this is not a) block quote. - bullet If we want a block quote after this bullet list item, we need to use an empty comment: .. Block quote. """, """\ bullet Comments swallow up all indented text following. \n\ (Therefore this is not a) block quote. bullet If we want a block quote after this bullet list item, we need to use an empty comment: Block quote. """], ] if __name__ == '__main__': unittest.main()