| # 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() |