home *** CD-ROM | disk | FTP | other *** search
- # 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 'Unexpected return values from select():', rfd, wfd, xfd
- p.close()
-
- test()
-
-