8000 Wrap new syntax in run_code() · python/cpython@29b9435 · GitHub
[go: up one dir, main page]

Skip to content

Commit 29b9435

Browse files
committed
Wrap new syntax in run_code()
1 parent a2c48c9 commit 29b9435

File tree

1 file changed

+41
-24
lines changed

1 file changed

+41
-24
lines changed

Lib/test/test_type_params.py

Lines changed: 41 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1164,27 +1164,33 @@ class Inner[U](T):
11641164

11651165
class DefaultsTest(unittest.TestCase):
11661166
def test_defaults_on_func(self):
1167-
def func[T=int, *U=float, **V=None]():
1168-
pass
1167+
ns = run_code("""
1168+
def func[T=int, **U=float, *V=None]():
1169+
pass
1170+
""")
11691171

1170-
T, U, V = func.__type_params__
1172+
T, U, V = ns["func"].__type_params__
11711173
self.assertIs(T.__default__, int)
11721174
self.assertIs(U.__default__, float)
11731175
self.assertIs(V.__default__, type(None))
11741176

11751177
def test_defaults_on_class(self):
1176-
class C[T=int, *U=float, **V=None]:
1177-
pass
1178+
ns = run_code("""
1179+
class C[T=int, **U=float, *V=None]:
1180+
pass
1181+
""")
11781182

1179-
T, U, V = C.__type_params__
1183+
T, U, V = ns["C"].__type_params__
11801184
self.assertIs(T.__default__, int)
11811185
self.assertIs(U.__default__, float)
11821186
self.assertIs(V.__default__, type(None))
11831187

11841188
def test_defaults_on_type_alias(self):
1185-
type Alias[T = int, *U = float, **V = None] = int
1189+
ns = run_code("""
1190+
type Alias[T = int, **U = float, *V = None] = int
1191+
""")
11861192

1187-
T, U, V = Alias.__type_params__
1193+
T, U, V = ns["Alias"].__type_params__
11881194
self.assertIs(T.__default__, int)
11891195
self.assertIs(U.__default__, float)
11901196
self.assertIs(V.__default__, type(None))
@@ -1194,20 +1200,25 @@ def test_starred_invalid(self):
11941200
check_syntax_error(self, "type Alias[**P = *int] = int")
11951201

11961202
def test_starred_typevartuple(self):
1197-
default = tuple[int, str]
1198-
type Alias[*Ts = *default] = Ts
1199-
Ts, = Alias.__type_params__
1200-
self.assertEqual(Ts.__default__, next(iter(default)))
1203+
ns = run_code("""
1204+
default = tuple[int, str]
1205+
type Alias[*Ts = *default] = Ts
1206+
""")
1207+
1208+
Ts, = ns["Alias"].__type_params__
1209+
self.assertEqual(Ts.__default__, next(iter(ns["default"])))
12011210

12021211
def test_nondefault_after_default(self):
12031212
check_syntax_error(self, "def func[T=int, U](): pass", "non-default type parameter 'U' follows default type parameter")
12041213
check_syntax_error(self, "class C[T=int, U]: pass", "non-default type parameter 'U' follows default type parameter")
12051214
check_syntax_error(self, "type A[T=int, U] = int", "non-default type parameter 'U' follows default type parameter")
12061215

12071216
def test_lazy_evaluation(self):
1208-
type Alias[T = Undefined, *U = Undefined, **V = Undefined] = int
1217+
ns = run_code("""
1218+
type Alias[T = Undefined, *U = Undefined, **V = Undefined] = int
1219+
""")
12091220

1210-
T, U, V = Alias.__type_params__
1221+
T, U, V = ns["Alias"].__type_params__
12111222

12121223
with self.assertRaises(NameError):
12131224
T.__default__
@@ -1216,30 +1227,36 @@ def test_lazy_evaluation(self):
12161227
with self.assertRaises(NameError):
12171228
V.__default__
12181229

1219-
Undefined = "defined"
1230+
ns["Undefined"] = "defined"
12201231
self.assertEqual(T.__default__, "defined")
12211232
self.assertEqual(U.__default__, "defined")
12221233
self.assertEqual(V.__default__, "defined")
12231234

12241235
# Now it is cached
1225-
Undefined = "redefined"
1236+
ns["Undefined"] = "redefined"
12261237
self.assertEqual(T.__default__, "defined")
12271238
self.assertEqual(U.__default__, "defined")
12281239
self.assertEqual(V.__default__, "defined")
12291240

12301241
def test_symtable_key_regression_default(self):
12311242
# Test against the bugs that would happen if we used .default_
12321243
# as the key in the symtable.
1233-
type X[T = [T for T in [T]]] = T
1234-
T, = X.__type_params__
1244+
ns = run_code("""
1245+
type X[T = [T for T in [T]]] = T
1246+
""")
1247+
1248+
T, = ns["X"].__type_params__
12351249
self.assertEqual(T.__default__, [T])
12361250

12371251
def test_symtable_key_regression_name(self):
12381252
# Test against the bugs that would happen if we used .name
12391253
# as the key in the symtable.
1240-
type X1[T = A] = T
1241-
type X2[T = B] = T
1242-
A = "A"
1243-
B = "B"
1244-
self.assertEq 57AE ual(X1.__type_params__[0].__default__, "A")
1245-
self.assertEqual(X2.__type_params__[0].__default__, "B")
1254+
ns = run_code("""
1255+
type X1[T = A] = T
1256+
type X2[T = B] = T
1257+
A = "A"
1258+
B = "B"
1259+
""")
1260+
1261+
self.assertEqual(ns["X1"].__type_params__[0].__default__, "A")
1262+
self.assertEqual(ns["X2"].__type_params__[0].__default__, "B")

0 commit comments

Comments
 (0)
0