#! /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['block_quotes'] = [ ["""\ Line 1. Line 2. Indented. """, """\ Line 1. Line 2. Indented. """], ["""\ Line 1. Line 2. Indented 1. Indented 2. """, """\ Line 1. Line 2. Indented 1. Indented 2. """], ["""\ Line 1. Line 2. Unexpectedly indented. """, """\ Line 1. Line 2. Unexpected indentation. Unexpectedly indented. """], ["""\ Line 1. Line 2. Indented. no blank line """, """\ Line 1. Line 2. Indented. Block quote ends without a blank line; unexpected unindent. no blank line """], ["""\ Here is a paragraph. Indent 8 spaces. Indent 4 spaces. Is this correct? Should it generate a warning? Yes, it is correct, no warning necessary. """, """\ Here is a paragraph. Indent 8 spaces. Indent 4 spaces. Is this correct? Should it generate a warning? Yes, it is correct, no warning necessary. """], ["""\ Paragraph. Block quote. -- Attribution Paragraph. Block quote. --Attribution """, """\ Paragraph. Block quote. Attribution Paragraph. Block quote. Attribution """], ["""\ Alternative: true em-dash. Block quote. \u2014 Attribution Alternative: three hyphens. Block quote. --- Attribution """, """\ Alternative: true em-dash. Block quote. Attribution Alternative: three hyphens. Block quote. Attribution """], ["""\ Paragraph. Block quote. -- Attribution line one and line two Paragraph. Block quote. -- Attribution line one and line two Paragraph. """, """\ Paragraph. Block quote. Attribution line one and line two Paragraph. Block quote. Attribution line one and line two Paragraph. """], ["""\ Paragraph. Block quote 1. -- Attribution 1 Block quote 2. --Attribution 2 """, """\ Paragraph. Block quote 1. Attribution 1 Block quote 2. Attribution 2 """], ["""\ Paragraph. Block quote 1. -- Attribution 1 Block quote 2. """, """\ Paragraph. Block quote 1. Attribution 1 Block quote 2. """], ["""\ Unindented paragraph. Block quote 1. -- Attribution 1 Block quote 2. .. Block quote 3. """, """\ Unindented paragraph. Block quote 1. Attribution 1 Block quote 2. Block quote 3. """], ["""\ Paragraph. -- Not an attribution Paragraph. Block quote. \\-- Not an attribution Paragraph. Block quote. -- Not an attribution line one and line two and line three """, """\ Paragraph. -- Not an attribution Paragraph. Block quote. -- Not an attribution Paragraph. Block quote. -- Not an attribution line one and line two and line three """], ["""\ Paragraph. -- Not a valid attribution Block quote 1. --Attribution 1 --Invalid attribution Block quote 2. --Attribution 2 """, """\ Paragraph. -- Not a valid attribution Block quote 1. Attribution 1 --Invalid attribution Block quote 2. Attribution 2 """], ] if __name__ == '__main__': unittest.main()