Added 'list_only' option (and modified 'run()' to respect it).
[python/dscho.git] / Lib / test / test_select.py
blob60de3600bc214c003b7c9c7648e259b591f03091
1 # Testing select module
2 from test_support import verbose
3 import select
4 import os
6 # test some known error conditions
7 try:
8 rfd, wfd, xfd = select.select(1, 2, 3)
9 except TypeError:
10 pass
11 else:
12 print 'expected TypeError exception not raised'
14 class Nope:
15 pass
17 class Almost:
18 def fileno(self):
19 return 'fileno'
21 try:
22 rfd, wfd, xfd = select.select([Nope()], [], [])
23 except TypeError:
24 pass
25 else:
26 print 'expected TypeError exception not raised'
28 try:
29 rfd, wfd, xfd = select.select([Almost()], [], [])
30 except TypeError:
31 pass
32 else:
33 print 'expected TypeError exception not raised'
36 def test():
37 import sys
38 if sys.platform[:3] in ('win', 'mac', 'os2'):
39 if verbose:
40 print "Can't test select easily on", sys.platform
41 return
42 cmd = 'for i in 0 1 2 3 4 5 6 7 8 9; do echo testing...; sleep 1; done'
43 p = os.popen(cmd, 'r')
44 for tout in (0, 1, 2, 4, 8, 16) + (None,)*10:
45 if verbose:
46 print 'timeout =', tout
47 rfd, wfd, xfd = select.select([p], [], [], tout)
48 ## print rfd, wfd, xfd
49 if (rfd, wfd, xfd) == ([], [], []):
50 continue
51 if (rfd, wfd, xfd) == ([p], [], []):
52 line = p.readline()
53 if verbose:
54 print `line`
55 if not line:
56 if verbose:
57 print 'EOF'
58 break
59 continue
60 print 'Heh?'
61 p.close()
63 test()