#! /usr/bin/env python3 # $Id: test__init__.py 10146 2025-05-27 06:14:22Z milde $ # Author: Lea Wiemann # Copyright: This module has been placed in the public domain. """ Test module for transforms/__init__.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[2])) import docutils from docutils import transforms, utils class TestTransform(transforms.Transform): # marker for pytest to ignore this class during test discovery __test__ = False default_priority = 100 applied = 0 def apply(self, **kwargs): self.applied += 1 assert kwargs == {'foo': 42} class KwargsTestCase(unittest.TestCase): def test_kwargs(self): transformer = transforms.Transformer(utils.new_document('test data')) transformer.add_transform(TestTransform, foo=42) transformer.apply_transforms() self.assertEqual(len(transformer.applied), 1) self.assertEqual(len(transformer.applied[0]), 4) transform_record = transformer.applied[0] self.assertEqual(transform_record[1], TestTransform) self.assertEqual(transform_record[3], {'foo': 42}) class TransformerWarningsTestCase(unittest.TestCase): @staticmethod def dummy_resolver(node): # Cf. `TransformSpec.unknown_reference_resolvers`. return node.resolved def test_deprecation_warnings(self): transformer = transforms.Transformer(utils.new_document('test data')) component = docutils.Component() component.unknown_reference_resolvers = [self.dummy_resolver] self.dummy_resolver.priority = 50 with self.assertWarnsRegex(DeprecationWarning, 'will be removed'): transformer.populate_from_components([component]) if __name__ == '__main__': unittest.main()