22Tests common to list and UserList.UserList
33"""
44
5- import unittest
65import sys
7- import os
86from functools import cmp_to_key
97
10- from test import support , seq_tests
11- from test .support import ALWAYS_EQ , NEVER_EQ
8+ from test import seq_tests
9+ from test .support import ALWAYS_EQ , NEVER_EQ , get_c_recursion_limit
1210
1311
1412class CommonTest (seq_tests .CommonTest ):
@@ -33,13 +31,13 @@ def test_init(self):
3331 self .assertEqual (a , b )
3432
3533 def test_getitem_error (self ):
36- a = []
34+ a = self . type2test ([])
3735 msg = "list indices must be integers or slices"
3836 with self .assertRaisesRegex (TypeError , msg ):
3937 a ['a' ]
4038
4139 def test_setitem_error (self ):
42- a = []
40+ a = self . type2test ([])
4341 msg = "list indices must be integers or slices"
4442 with self .assertRaisesRegex (TypeError , msg ):
4543 a ['a' ] = "python"
@@ -63,7 +61,7 @@ def test_repr(self):
6361
6462 def test_repr_deep (self ):
6563 a = self .type2test ([])
66- for i in range (sys . getrecursionlimit () + 100 ):
64+ for i in range (get_c_recursion_limit () + 1 ):
6765 a = self .type2test ([a ])
6866 self .assertRaises (RecursionError , repr , a )
6967
@@ -193,6 +191,14 @@ def test_setslice(self):
193191
194192 self .assertRaises (TypeError , a .__setitem__ )
195193
194+ def test_slice_assign_iterator (self ):
195+ x = self .type2test (range (5 ))
196+ x [0 :3 ] = reversed (range (3 ))
197+ self .assertEqual (x , self .type2test ([2 , 1 , 0 , 3 , 4 ]))
198+
199+ x [:] = reversed (range (3 ))
200+ self .assertEqual (x , self .type2test ([2 , 1 , 0 ]))
201+
196202 def test_delslice (self ):
197203 a = self .type2test ([0 , 1 ])
198204 del a [1 :2 ]
@@ -552,7 +558,7 @@ def test_constructor_exception_handling(self):
552558 class F (object ):
553559 def __iter__ (self ):
554560 raise KeyboardInterrupt
555- self .assertRaises (KeyboardInterrupt , list , F ())
561+ self .assertRaises (KeyboardInterrupt , self . type2test , F ())
556562
557563 def test_exhausted_iterator (self ):
558564 a = self .type2test ([1 , 2 , 3 ])
@@ -564,3 +570,8 @@ def test_exhausted_iterator(self):
564570 self .assertEqual (list (exhit ), [])
565571 self .assertEqual (list (empit ), [9 ])
566572 self .assertEqual (a , self .type2test ([1 , 2 , 3 , 9 ]))
573+
574+ # gh-115733: Crash when iterating over exhausted iterator
575+ exhit = iter (self .type2test ([1 , 2 , 3 ]))
576+ for _ in exhit :
577+ next (exhit , 1 )
0 commit comments