diff --git a/Lib/test/test_deque.py b/Lib/test/test_deque.py index 1d5b4b01c..0cf3a3663 100644 --- a/Lib/test/test_deque.py +++ b/Lib/test/test_deque.py @@ -1,7 +1,6 @@ from collections import deque import unittest from test import support, seq_tests -from test.support import os_helper import gc import weakref import copy @@ -67,28 +66,9 @@ class TestBasic(unittest.TestCase): self.assertEqual(list(d), [7, 8, 9]) d = deque(range(200), maxlen=10) d.append(d) - os_helper.unlink(os_helper.TESTFN) - fo = open(os_helper.TESTFN, "w") - try: - fo.write(str(d)) - fo.close() - fo = open(os_helper.TESTFN, "r") - self.assertEqual(fo.read(), repr(d)) - finally: - fo.close() - os_helper.unlink(os_helper.TESTFN) - + self.assertEqual(repr(d)[-30:], ', 198, 199, [...]], maxlen=10)') d = deque(range(10), maxlen=None) self.assertEqual(repr(d), 'deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])') - fo = open(os_helper.TESTFN, "w") - try: - fo.write(str(d)) - fo.close() - fo = open(os_helper.TESTFN, "r") - self.assertEqual(fo.read(), repr(d)) - finally: - fo.close() - os_helper.unlink(os_helper.TESTFN) def test_maxlen_zero(self): it = iter(range(100)) @@ -149,7 +129,8 @@ class TestBasic(unittest.TestCase): self.assertEqual(d.count(None), 16) def test_comparisons(self): - d = deque('xabc'); d.popleft() + d = deque('xabc') + d.popleft() for e in [d, deque('abc'), deque('ab'), deque(), list(d)]: self.assertEqual(d==e, type(d)==type(e) and list(d)==list(e)) self.assertEqual(d!=e, not(type(d)==type(e) and list(d)==list(e))) @@ -184,6 +165,18 @@ class TestBasic(unittest.TestCase): with self.assertRaises(RuntimeError): n in d + def test_contains_count_stop_crashes(self): + class A: + def __eq__(self, other): + d.clear() + return NotImplemented + d = deque([A(), A()]) + with self.assertRaises(RuntimeError): + _ = 3 in d + d = deque([A(), A()]) + with self.assertRaises(RuntimeError): + _ = d.count(3) + def test_extend(self): d = deque('a') self.assertRaises(TypeError, d.extend, 1) @@ -534,25 +527,11 @@ class TestBasic(unittest.TestCase): e = eval(repr(d)) self.assertEqual(list(d), list(e)) d.append(d) - self.assertIn('...', repr(d)) - - def test_print(self): - d = deque(range(200)) - d.append(d) - try: - os_helper.unlink(os_helper.TESTFN) - fo = open(os_helper.TESTFN, "w") - print(d, file=fo, end='') - fo.close() - fo = open(os_helper.TESTFN, "r") - self.assertEqual(fo.read(), repr(d)) - finally: - fo.close() - os_helper.unlink(os_helper.TESTFN) + self.assertEqual(repr(d)[-20:], '7, 198, 199, [...]])') def test_init(self): - self.assertRaises(TypeError, deque, 'abc', 2, 3); - self.assertRaises(TypeError, deque, 1); + self.assertRaises(TypeError, deque, 'abc', 2, 3) + self.assertRaises(TypeError, deque, 1) def test_hash(self): self.assertRaises(TypeError, hash, deque('abc')) @@ -894,6 +873,7 @@ class TestSubclass(unittest.TestCase): p = weakref.proxy(d) self.assertEqual(str(p), str(d)) d = None + support.gc_collect() # For PyPy or other GCs. self.assertRaises(ReferenceError, str, p) def test_strange_subclass(self):