@@ -357,21 +357,25 @@ def gen(it):
357357 yield x
358358 return gen (range (10 ))
359359
360- def process_tests (self , get_generator ):
361- for obj in self .iterables :
362- g_obj = get_generator (obj )
363- with self .subTest (g_obj = g_obj , obj = obj ):
364- self .assertListEqual (list (g_obj ), list (obj ))
360+ def process_tests (self , get_generator , changes_iterable ):
361+ if changes_iterable :
362+ for obj in self .iterables :
363+ g_obj = get_generator (obj )
364+ with self .subTest (g_obj = g_obj , obj = obj ):
365+ self .assertListEqual (list (g_obj ), list (obj ))
365366
366- g_iter = get_generator (iter (obj ))
367- with self .subTest (g_iter = g_iter , obj = obj ):
368- self .assertListEqual (list (g_iter ), list (obj ))
367+ g_iter = get_generator (iter (obj ))
368+ with self .subTest (g_iter = g_iter , obj = obj ):
369+ self .assertListEqual (list (g_iter ), list (obj ))
369370
370371 err_regex = "'.*' object is not iterable"
371372 for obj in self .non_iterables :
372373 g_obj = get_generator (obj )
373374 with self .subTest (g_obj = g_obj ):
374- self .assertRaisesRegex (TypeError , err_regex , list , g_obj )
375+ if changes_iterable :
376+ self .assertRaisesRegex (TypeError , err_regex , list , g_obj )
377+ else :
378+ next (g_obj )
375379
376380 def test_modify_f_locals (self ):
377381 def modify_f_locals (g , local , obj ):
@@ -384,22 +388,22 @@ def get_generator_genexpr(obj):
384388 def get_generator_genfunc (obj ):
385389 return modify_f_locals (self .genfunc (), 'it' , obj )
386390
387- self .process_tests (get_generator_genexpr )
388- self .process_tests (get_generator_genfunc )
391+ self .process_tests (get_generator_genexpr , False )
392+ self .process_tests (get_generator_genfunc , True )
389393
390394 def test_new_gen_from_gi_code (self ):
391395 def new_gen_from_gi_code (g , obj ):
392396 generator_func = types .FunctionType (g .gi_code , {})
393397 return generator_func (obj )
394398
395- def get_generator_genexpr (obj ):
396- return new_gen_from_gi_code (self .genexpr (), obj )
399+ for obj in self .non_iterables :
400+ with self .assertRaises (TypeError ):
401+ new_gen_from_gi_code (self .genexpr (), obj )
397402
398403 def get_generator_genfunc (obj ):
399404 return new_gen_from_gi_code (self .genfunc (), obj )
400405
401- self .process_tests (get_generator_genexpr )
402- self .process_tests (get_generator_genfunc )
406+ self .process_tests (get_generator_genfunc , True )
403407
404408
405409class ExceptionTest (unittest .TestCase ):
0 commit comments