mirror of
https://github.com/python/cpython.git
synced 2025-07-31 23:23:11 +00:00

The Compare close contains a close method that checks to see if there is any unconsumed data in the Compare instance; i.e. if the canonical output file contains more data than was produced by the current test run. This method was never called, allowing differences to go undetected. Fix is to call close after the test is run (after __import__) output/test_long and output/test_popen2 needed trivial changes output/test_select contained lots of text, but test_select.py produced no output
63 lines
1.6 KiB
Python
63 lines
1.6 KiB
Python
# Testing select module
|
|
from test_support import verbose
|
|
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'
|
|
|
|
|
|
def test():
|
|
import sys
|
|
if sys.platform[:3] in ('win', 'mac', 'os2'):
|
|
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 `line`
|
|
if not line:
|
|
if verbose:
|
|
print 'EOF'
|
|
break
|
|
continue
|
|
print 'Heh?'
|
|
p.close()
|
|
|
|
test()
|
|
|