1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
#! /usr/bin/env python3
# $Id: test__init__.py 10146 2025-05-27 06:14:22Z milde $
# Author: Lea Wiemann <LeWiemann@gmail.com>
# 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()
|