diff --git a/Lib/test/test_csv.py b/Lib/test/test_csv.py index 8af2f0b33..0e1f020d3 100644 --- a/Lib/test/test_csv.py +++ b/Lib/test/test_csv.py @@ -571,6 +571,34 @@ class Test_Csv(unittest.TestCase): self.assertEqual(row, rows[i]) + @unittest.expectedFailure # TODO: RUSTPYTHON; AssertionError: Error not raised + def test_reader_reentrant_iterator(self): + # gh-145105: re-entering the reader from the iterator must not crash. + class ReentrantIter: + def __init__(self): + self.reader = None + self.n = 0 + def __iter__(self): + return self + def __next__(self): + self.n += 1 + if self.n == 1: + try: + next(self.reader) + except StopIteration: + pass + return "a,b" + if self.n == 2: + return "x" + raise StopIteration + + it = ReentrantIter() + reader = csv.reader(it) + it.reader = reader + with self.assertRaises(csv.Error): + next(reader) + + class TestDialectRegistry(unittest.TestCase): def test_registry_badargs(self): self.assertRaises(TypeError, csv.list_dialects, None)