|
1 | 1 | from collections import deque |
2 | 2 | import unittest |
3 | 3 | from test import support, seq_tests |
4 | | -from test.support import os_helper |
5 | 4 | import gc |
6 | 5 | import weakref |
7 | 6 | import copy |
@@ -67,28 +66,9 @@ def test_maxlen(self): |
67 | 66 | self.assertEqual(list(d), [7, 8, 9]) |
68 | 67 | d = deque(range(200), maxlen=10) |
69 | 68 | d.append(d) |
70 | | - os_helper.unlink(os_helper.TESTFN) |
71 | | - fo = open(os_helper.TESTFN, "w") |
72 | | - try: |
73 | | - fo.write(str(d)) |
74 | | - fo.close() |
75 | | - fo = open(os_helper.TESTFN, "r") |
76 | | - self.assertEqual(fo.read(), repr(d)) |
77 | | - finally: |
78 | | - fo.close() |
79 | | - os_helper.unlink(os_helper.TESTFN) |
80 | | - |
| 69 | + self.assertEqual(repr(d)[-30:], ', 198, 199, [...]], maxlen=10)') |
81 | 70 | d = deque(range(10), maxlen=None) |
82 | 71 | self.assertEqual(repr(d), 'deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])') |
83 | | - fo = open(os_helper.TESTFN, "w") |
84 | | - try: |
85 | | - fo.write(str(d)) |
86 | | - fo.close() |
87 | | - fo = open(os_helper.TESTFN, "r") |
88 | | - self.assertEqual(fo.read(), repr(d)) |
89 | | - finally: |
90 | | - fo.close() |
91 | | - os_helper.unlink(os_helper.TESTFN) |
92 | 72 |
|
93 | 73 | def test_maxlen_zero(self): |
94 | 74 | it = iter(range(100)) |
@@ -149,7 +129,8 @@ def __eq__(self, other): |
149 | 129 | self.assertEqual(d.count(None), 16) |
150 | 130 |
|
151 | 131 | def test_comparisons(self): |
152 | | - d = deque('xabc'); d.popleft() |
| 132 | + d = deque('xabc') |
| 133 | + d.popleft() |
153 | 134 | for e in [d, deque('abc'), deque('ab'), deque(), list(d)]: |
154 | 135 | self.assertEqual(d==e, type(d)==type(e) and list(d)==list(e)) |
155 | 136 | self.assertEqual(d!=e, not(type(d)==type(e) and list(d)==list(e))) |
@@ -184,6 +165,18 @@ def test_contains(self): |
184 | 165 | with self.assertRaises(RuntimeError): |
185 | 166 | n in d |
186 | 167 |
|
| 168 | + def test_contains_count_stop_crashes(self): |
| 169 | + class A: |
| 170 | + def __eq__(self, other): |
| 171 | + d.clear() |
| 172 | + return NotImplemented |
| 173 | + d = deque([A(), A()]) |
| 174 | + with self.assertRaises(RuntimeError): |
| 175 | + _ = 3 in d |
| 176 | + d = deque([A(), A()]) |
| 177 | + with self.assertRaises(RuntimeError): |
| 178 | + _ = d.count(3) |
| 179 | + |
187 | 180 | def test_extend(self): |
188 | 181 | d = deque('a') |
189 | 182 | self.assertRaises(TypeError, d.extend, 1) |
@@ -534,25 +527,11 @@ def test_repr(self): |
534 | 527 | e = eval(repr(d)) |
535 | 528 | self.assertEqual(list(d), list(e)) |
536 | 529 | d.append(d) |
537 | | - self.assertIn('...', repr(d)) |
538 | | - |
539 | | - def test_print(self): |
540 | | - d = deque(range(200)) |
541 | | - d.append(d) |
542 | | - try: |
543 | | - os_helper.unlink(os_helper.TESTFN) |
544 | | - fo = open(os_helper.TESTFN, "w") |
545 | | - print(d, file=fo, end='') |
546 | | - fo.close() |
547 | | - fo = open(os_helper.TESTFN, "r") |
548 | | - self.assertEqual(fo.read(), repr(d)) |
549 | | - finally: |
550 | | - fo.close() |
551 | | - os_helper.unlink(os_helper.TESTFN) |
| 530 | + self.assertEqual(repr(d)[-20:], '7, 198, 199, [...]])') |
552 | 531 |
|
553 | 532 | def test_init(self): |
554 | | - self.assertRaises(TypeError, deque, 'abc', 2, 3); |
555 | | - self.assertRaises(TypeError, deque, 1); |
| 533 | + self.assertRaises(TypeError, deque, 'abc', 2, 3) |
| 534 | + self.assertRaises(TypeError, deque, 1) |
556 | 535 |
|
557 | 536 | def test_hash(self): |
558 | 537 | self.assertRaises(TypeError, hash, deque('abc')) |
@@ -894,6 +873,7 @@ def test_weakref(self): |
894 | 873 | p = weakref.proxy(d) |
895 | 874 | self.assertEqual(str(p), str(d)) |
896 | 875 | d = None |
| 876 | + support.gc_collect() # For PyPy or other GCs. |
897 | 877 | self.assertRaises(ReferenceError, str, p) |
898 | 878 |
|
899 | 879 | def test_strange_subclass(self): |
|
0 commit comments