mirror of
https://github.com/python/cpython.git
synced 2025-07-25 12:14:38 +00:00

be called at the end of each test that spawns children (perhaps it should be called from regrtest instead?). This will hopefully prevent some of the unexplained failures in the buildbots (hppa and alpha) during tests that spawn children. The problems were not reproducible. There were many zombies that remained at the end of several tests. In the worst case, this shouldn't cause any more problems, though it may not help either. Time will tell.
70 lines
1.6 KiB
Python
70 lines
1.6 KiB
Python
# Testing select module
|
|
from test.test_support import verbose, reap_children
|
|
import select
|
|
import os
|
|
|
|
# test some known error conditions
|
|
try:
|
|
rfd, wfd, xfd = select.select(1, 2, 3)
|
|
except TypeError:
|
|
pass
|
|
else:
|
|
print 'expected TypeError exception not raised'
|
|
|
|
class Nope:
|
|
pass
|
|
|
|
class Almost:
|
|
def fileno(self):
|
|
return 'fileno'
|
|
|
|
try:
|
|
rfd, wfd, xfd = select.select([Nope()], [], [])
|
|
except TypeError:
|
|
pass
|
|
else:
|
|
print 'expected TypeError exception not raised'
|
|
|
|
try:
|
|
rfd, wfd, xfd = select.select([Almost()], [], [])
|
|
except TypeError:
|
|
pass
|
|
else:
|
|
print 'expected TypeError exception not raised'
|
|
|
|
try:
|
|
rfd, wfd, xfd = select.select([], [], [], 'not a number')
|
|
except TypeError:
|
|
pass
|
|
else:
|
|
print 'expected TypeError exception not raised'
|
|
|
|
|
|
def test():
|
|
import sys
|
|
if sys.platform[:3] in ('win', 'mac', 'os2', 'riscos'):
|
|
if verbose:
|
|
print "Can't test select easily on", sys.platform
|
|
return
|
|
cmd = 'for i in 0 1 2 3 4 5 6 7 8 9; do echo testing...; sleep 1; done'
|
|
p = os.popen(cmd, 'r')
|
|
for tout in (0, 1, 2, 4, 8, 16) + (None,)*10:
|
|
if verbose:
|
|
print 'timeout =', tout
|
|
rfd, wfd, xfd = select.select([p], [], [], tout)
|
|
if (rfd, wfd, xfd) == ([], [], []):
|
|
continue
|
|
if (rfd, wfd, xfd) == ([p], [], []):
|
|
line = p.readline()
|
|
if verbose:
|
|
print repr(line)
|
|
if not line:
|
|
if verbose:
|
|
print 'EOF'
|
|
break
|
|
continue
|
|
print 'Unexpected return values from select():', rfd, wfd, xfd
|
|
p.close()
|
|
reap_children()
|
|
|
|
test()
|