blob: 32ccfd16fe1aac96565d5ea59ae11b1314731495 [file] [log] [blame]
Guido van Rossum5c971671996-07-22 15:23:25 +00001# Testing select module
Guido van Rossumde554ec1997-05-08 23:14:57 +00002from test_support import verbose
Guido van Rossum228b8e81997-04-02 06:13:34 +00003import select
4import os
5
6# test some known error conditions
7try:
8 rfd, wfd, xfd = select.select(1, 2, 3)
9except TypeError:
10 pass
11else:
12 print 'expected TypeError exception not raised'
13
14class Nope:
15 pass
16
17class Almost:
18 def fileno(self):
19 return 'fileno'
20
21try:
22 rfd, wfd, xfd = select.select([Nope()], [], [])
23except TypeError:
24 pass
25else:
26 print 'expected TypeError exception not raised'
27
28try:
29 rfd, wfd, xfd = select.select([Almost()], [], [])
30except TypeError:
31 pass
32else:
33 print 'expected TypeError exception not raised'
34
Guido van Rossum5c971671996-07-22 15:23:25 +000035
36def test():
Guido van Rossumde554ec1997-05-08 23:14:57 +000037 import sys
38 if sys.platform in ('win', 'mac'):
39 if verbose:
40 print "Can't test select easily"
41 return
Guido van Rossum228b8e81997-04-02 06:13:34 +000042 cmd = 'for i in 0 1 2 3 4 5 6 7 8 9; do echo testing...; sleep 1; done'
Guido van Rossum5c971671996-07-22 15:23:25 +000043 p = os.popen(cmd, 'r')
44 for tout in (0, 1, 2, 4, 8, 16) + (None,)*10:
Guido van Rossumde554ec1997-05-08 23:14:57 +000045 if verbose:
46 print 'timeout =', tout
Guido van Rossum5c971671996-07-22 15:23:25 +000047 rfd, wfd, xfd = select.select([p], [], [], tout)
Guido van Rossum228b8e81997-04-02 06:13:34 +000048## print rfd, wfd, xfd
Guido van Rossum5c971671996-07-22 15:23:25 +000049 if (rfd, wfd, xfd) == ([], [], []):
50 continue
51 if (rfd, wfd, xfd) == ([p], [], []):
52 line = p.readline()
Guido van Rossumde554ec1997-05-08 23:14:57 +000053 if verbose:
54 print `line`
Guido van Rossum5c971671996-07-22 15:23:25 +000055 if not line:
Guido van Rossumde554ec1997-05-08 23:14:57 +000056 if verbose:
57 print 'EOF'
Guido van Rossum5c971671996-07-22 15:23:25 +000058 break
59 continue
60 print 'Heh?'
Guido van Rossum228b8e81997-04-02 06:13:34 +000061 p.close()
Guido van Rossum5c971671996-07-22 15:23:25 +000062
63test()
Guido van Rossum228b8e81997-04-02 06:13:34 +000064