]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.12] gh-107905: Test raising `__value__` for `TypeAliasType` (GH-107997) (#108217)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Mon, 21 Aug 2023 19:18:42 +0000 (12:18 -0700)
committerGitHub <noreply@github.com>
Mon, 21 Aug 2023 19:18:42 +0000 (21:18 +0200)
gh-107905: Test raising `__value__` for `TypeAliasType` (GH-107997)
(cherry picked from commit 13104f3b7412dce9bf7cfd09bf2d6dad1f3cc2ed)

Co-authored-by: Nikita Sobolev <mail@sobolevn.me>
Lib/test/test_type_aliases.py

index 0ce97f57de6860961bee2c07696daddd0dc9cb9b..8f0a998e1f3dc1786664ff5dc0a1cf0a5719c26b 100644 (file)
@@ -168,6 +168,24 @@ class TypeParamsAliasValueTest(unittest.TestCase):
         self.assertEqual(repr(GenericRecursive[GenericRecursive[int]]),
                          "GenericRecursive[GenericRecursive[int]]")
 
+    def test_raising(self):
+        type MissingName = list[_My_X]
+        with self.assertRaisesRegex(
+            NameError,
+            "cannot access free variable '_My_X' where it is not associated with a value",
+        ):
+            MissingName.__value__
+        _My_X = int
+        self.assertEqual(MissingName.__value__, list[int])
+        del _My_X
+        # Cache should still work:
+        self.assertEqual(MissingName.__value__, list[int])
+
+        # Explicit exception:
+        type ExprException = 1 / 0
+        with self.assertRaises(ZeroDivisionError):
+            ExprException.__value__
+
 
 class TypeAliasConstructorTest(unittest.TestCase):
     def test_basic(self):