]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-133213: Add tests for `string.templatelib.TemplateIter` (#133215)
authorsobolevn <mail@sobolevn.me>
Wed, 30 Apr 2025 19:38:25 +0000 (22:38 +0300)
committerGitHub <noreply@github.com>
Wed, 30 Apr 2025 19:38:25 +0000 (22:38 +0300)
Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
Lib/test/test_string/test_templatelib.py

index 5221ca673b24ec6ca5f16eac42aa1cdde2e70599..5b9490c2be6de076df6a3a3a1adf0ee5f7331f49 100644 (file)
@@ -1,5 +1,6 @@
 import pickle
 import unittest
+from collections.abc import Iterator, Iterable
 from string.templatelib import Template, Interpolation
 
 from test.test_string._support import TStringBaseCase, fstring
@@ -125,5 +126,28 @@ world"""
                     self.assertEqual(unpickled.format_spec, interpolation.format_spec)
 
 
+class TemplateIterTests(unittest.TestCase):
+    def test_abc(self):
+        self.assertIsInstance(iter(t''), Iterable)
+        self.assertIsInstance(iter(t''), Iterator)
+
+    def test_final(self):
+        TemplateIter = type(iter(t''))
+        with self.assertRaisesRegex(TypeError, 'is not an acceptable base type'):
+            class Sub(TemplateIter): ...
+
+    def test_iter(self):
+        x = 1
+        res = list(iter(t'abc {x} yz'))
+
+        self.assertEqual(res[0], 'abc ')
+        self.assertIsInstance(res[1], Interpolation)
+        self.assertEqual(res[1].value, 1)
+        self.assertEqual(res[1].expression, 'x')
+        self.assertEqual(res[1].conversion, None)
+        self.assertEqual(res[1].format_spec, '')
+        self.assertEqual(res[2], ' yz')
+
+
 if __name__ == '__main__':
     unittest.main()