#!/usr/bin/env python3 # :Copyright: © 2024 Günter Milde. # :License: Released under the terms of the `2-Clause BSD license`_, in short: # # Copying and distribution of this file, with or without modification, # are permitted in any medium without royalty provided the copyright # notice and this notice are preserved. # This file is offered as-is, without any warranty. # # .. _2-Clause BSD license: https://opensource.org/licenses/BSD-2-Clause """Various tests for the XML parser. Test parsing + transformations with `publish_string()`. """ 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.core import publish_string from docutils.parsers import docutils_xml class XMLParserTests(unittest.TestCase): maxDiff = None mysettings = {'_disable_config': True, 'output_encoding': 'unicode', 'warning_stream': '', } def test_publish(self): for name, (settings, cases) in totest.items(): settings = self.mysettings | settings for casenum, (case_input, case_expected) in enumerate(cases): with self.subTest(id=f'totest[{name!r}][{casenum}]'): output = publish_string(case_input, parser=docutils_xml.Parser(), settings_overrides=settings) self.assertEqual(case_expected, output) totest = {} totest['decoration'] = ({'datestamp': 'pi-day'}, # generate footer [ ["""\ """, """\