Skip to content

Commit 4bdd75e

Browse files
committed
Fix up test generators to handle different behavior of gen exprs and gen functions
1 parent 225e36a commit 4bdd75e

File tree

1 file changed

+13
-8
lines changed

1 file changed

+13
-8
lines changed

Lib/test/test_generators.py

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -318,21 +318,26 @@ def gen(it):
318318
yield x
319319
return gen(range(10))
320320

321-
def process_tests(self, get_generator):
321+
def process_tests(self, get_generator, is_expr):
322+
err_iterator = "'.*' object is not an iterator"
323+
err_iterable = "'.*' object is not iterable"
322324
for obj in self.iterables:
323325
g_obj = get_generator(obj)
324326
with self.subTest(g_obj=g_obj, obj=obj):
325-
self.assertListEqual(list(g_obj), list(obj))
327+
if is_expr:
328+
self.assertRaisesRegex(TypeError, err_iterator, list, g_obj)
329+
else:
330+
self.assertListEqual(list(g_obj), list(obj))
326331

327332
g_iter = get_generator(iter(obj))
328333
with self.subTest(g_iter=g_iter, obj=obj):
329334
self.assertListEqual(list(g_iter), list(obj))
330335

331-
err_regex = "'.*' object is not iterable"
332336
for obj in self.non_iterables:
333337
g_obj = get_generator(obj)
334338
with self.subTest(g_obj=g_obj):
335-
self.assertRaisesRegex(TypeError, err_regex, list, g_obj)
339+
err = err_iterator if is_expr else err_iterable
340+
self.assertRaisesRegex(TypeError, err, list, g_obj)
336341

337342
def test_modify_f_locals(self):
338343
def modify_f_locals(g, local, obj):
@@ -345,8 +350,8 @@ def get_generator_genexpr(obj):
345350
def get_generator_genfunc(obj):
346351
return modify_f_locals(self.genfunc(), 'it', obj)
347352

348-
self.process_tests(get_generator_genexpr)
349-
self.process_tests(get_generator_genfunc)
353+
self.process_tests(get_generator_genexpr, True)
354+
self.process_tests(get_generator_genfunc, False)
350355

351356
def test_new_gen_from_gi_code(self):
352357
def new_gen_from_gi_code(g, obj):
@@ -359,8 +364,8 @@ def get_generator_genexpr(obj):
359364
def get_generator_genfunc(obj):
360365
return new_gen_from_gi_code(self.genfunc(), obj)
361366

362-
self.process_tests(get_generator_genexpr)
363-
self.process_tests(get_generator_genfunc)
367+
self.process_tests(get_generator_genexpr, True)
368+
self.process_tests(get_generator_genfunc, False)
364369

365370

366371
class ExceptionTest(unittest.TestCase):

0 commit comments

Comments
 (0)