#! /usr/bin/env python3 # $Id$ # Author: David Goodger # Copyright: This module has been placed in the public domain. """ Tests for RFC-2822 headers in PEPs (readers/pep.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.parsers.rst.states import Inliner from docutils.readers.pep import Reader from docutils.utils import new_document class PEPParserTestCase(unittest.TestCase): def test_parser(self): parser = Parser(rfc2822=True, inliner=Inliner()) settings = get_default_settings(Parser, Reader) 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['rfc2822'] = [ ["""\ Author: Me Version: 1 Date: 2002-04-23 """, """\ Author Me Version 1 Date 2002-04-23 """], ["""\ Author: Me Version: 1 Date: 2002-04-23 .. Leading blank lines don't affect RFC-2822 header parsing. """, """\ Author Me Version 1 Date 2002-04-23 Leading blank lines don't affect RFC-2822 header parsing. """], ["""\ .. A comment should prevent RFC-2822 header parsing. Author: Me Version: 1 Date: 2002-04-23 """, """\ A comment should prevent RFC-2822 header parsing. Author: Me Version: 1 Date: 2002-04-23 """], ["""\ Author: Me Version: 1 Date: 2002-04-23 """, """\ Author Me Version: 1 Date: 2002-04-23 """], ["""\ field: empty item above, no blank line """, """\ field RFC2822-style field list ends without a blank line; unexpected unindent. empty item above, no blank line """], ["""\ Author: Me Version: 1 Date: 2002-04-23 """, """\ Author Me Version 1 Date 2002-04-23 """], ["""\ Authors: Me, Myself, and I Version: 1 or so Date: 2002-04-23 (Tuesday) """, """\ Authors Me, Myself, and I Version 1 or so Date 2002-04-23 (Tuesday) """], ["""\ Authors: Me, Myself, and I Version: 1 or so Date: 2002-04-23 (Tuesday) """, """\ Authors Me, Myself, and I Version 1 or so Date 2002-04-23 (Tuesday) """], ["""\ Authors: - Me - Myself - I Version: """, """\ Authors Me Myself I Version """], ["""\ Authors: Me Myself and I Version: """, """\ Authors Me Myself and I Block quote ends without a blank line; unexpected unindent. Version: """], ] if __name__ == '__main__': unittest.main()