8000 Make some tests more frienly to MemoryError. · python/cpython@9db5500 · GitHub
[go: up one dir, main page]

Skip to content

Commit 9db5500

Browse files
Make some tests more frienly to MemoryError.
Free memory, unlock hanging threads.
1 parent d7aa524 commit 9db5500

File tree

6 files changed

+43
-16
lines changed

6 files changed

+43
-16
lines changed

Lib/ctypes/test/test_find.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,25 @@ def setUpClass(cls):
3030

3131
cls.gl = cls.glu = cls.gle = None
3232
if lib_gl:
33-
cls.gl = CDLL(lib_gl, mode=RTLD_GLOBAL)
33+
try:
34+
cls.gl = CDLL(lib_gl, mode=RTLD_GLOBAL)
35+
except OSError:
36+
pass
3437
if lib_glu:
35-
cls.glu = CDLL(lib_glu, RTLD_GLOBAL)
38+
try:
39+
cls.glu = CDLL(lib_glu, RTLD_GLOBAL)
40+
except OSError:
41+
pass
3642
if lib_gle:
3743
try:
3844
cls.gle = CDLL(lib_gle)
3945
except OSError:
4046
pass
4147

48+
@classmethod
49+
def tearDownClass(cls):
50+
cls.gl = cls.glu = cls.gle = None
51+
4252
def test_gl(self):
4353
if self.gl is None:
4454
self.skipTest('lib_gl not available')

Lib/ctypes/test/test_pointers.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@
77
c_long, c_ulong, c_longlong, c_ulonglong, c_double, c_float]
88
python_types = [int, int, int, int, int, int,
99
int, int, int, int, float, float]
10-
LargeNamedType = type('T' * 2 ** 25, (Structure,), {})
11-
large_string = 'T' * 2 ** 25
1210

1311
class PointersTestCase(unittest.TestCase):
1412

@@ -191,9 +189,11 @@ def test_pointers_bool(self):
191189
self.assertEqual(bool(mth), True)
192190

193191
def test_pointer_type_name(self):
192+
LargeNamedType = type('T' * 2 ** 25, (Structure,), {})
194193
self.assertTrue(POINTER(LargeNamedType))
195194

196195
def test_pointer_type_str_name(self):
196+
large_string = 'T' * 2 ** 25
197197
self.assertTrue(POINTER(large_string))
198198

199199
if __name__ == '__main__':

Lib/test/lock_tests.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,12 @@ def task():
3939
self.finished.append(tid)
4040
while not self._can_exit:
4141
_wait()
42-
for i in range(n):
43-
start_new_thread(task, ())
42+
try:
43+
for i in range(n):
44+
start_new_thread(task, ())
45+
except:
46+
self._can_exit = True
47+
raise
4448

4549
def wait_for_started(self):
4650
while len(self.started) < self.n:

Lib/test/test_gc.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -402,10 +402,12 @@ def run_thread():
402402
for i in range(N_THREADS):
403403
t = threading.Thread(target=run_thread)
404404
threads.append(t)
405-
for t in threads:
406-
t.start()
407-
time.sleep(1.0)
408-
exit = True
405+
try:
406+
for t in threads:
407+
t.start()
408+
finally:
409+
time.sleep(1.0)
410+
exit = True
409411
for t in threads:
410412
t.join()
411413
finally:

Lib/test/test_io.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3514,11 +3514,16 @@ def check_interrupted_write_retry(self, item, **fdopen_kwargs):
35143514
# received (forcing a first EINTR in write()).
35153515
read_results = []
35163516
write_finished = False
3517+
error = None
35173518
def _read():
3518-
while not write_finished:
3519-
while r in select.select([r], [], [], 1.0)[0]:
3520-
s = os.read(r, 1024)
3521-
read_results.append(s)
3519+
try:
3520+
while not write_finished:
3521+
while r in select.select([r], [], [], 1.0)[0]:
3522+
s = os.read(r, 1024)
3523+
read_results.append(s)
3524+
except BaseException as exc:
3525+
nonlocal error
3526+
error = exc
35223527
t = threading.Thread(target=_read)
35233528
t.daemon = True
35243529
def alarm1(sig, frame):
@@ -3539,6 +3544,8 @@ def alarm2(sig, frame):
35393544
wio.flush()
35403545
write_finished = True
35413546
t.join()
3547+
3548+
self.assertIsNone(error)
35423549
self.assertEqual(N, sum(len(x) for x in read_results))
35433550
finally:
35443551
write_finished = True

Lib/test/test_itertools.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1338,8 +1338,12 @@ def test_tee(self):
13381338
# Issue 13454: Crash when deleting backward iterator from tee()
13391339
def test_tee_del_backward(self):
13401340
forward, backward = tee(repeat(None, 20000000))
1341-
any(forward) # exhaust the iterator
1342-
del backward
1341+
try:
1342+
any(forward) # exhaust the iterator
1343+
del backward
1344+
except:
1345+
del forward, backward
1346+
raise
13431347

13441348
def test_StopIteration(self):
13451349
self.assertRaises(StopIteration, next, zip())

0 commit comments

Comments
 (0)
0