python-2.5.2/win32/Lib/test/test_select.py
changeset 0 ae805ac0140d
equal deleted inserted replaced
-1:000000000000 0:ae805ac0140d
       
     1 # Testing select module
       
     2 from test.test_support import verbose, reap_children
       
     3 import select
       
     4 import os
       
     5 
       
     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'
       
    13 
       
    14 class Nope:
       
    15     pass
       
    16 
       
    17 class Almost:
       
    18     def fileno(self):
       
    19         return 'fileno'
       
    20 
       
    21 try:
       
    22     rfd, wfd, xfd = select.select([Nope()], [], [])
       
    23 except TypeError:
       
    24     pass
       
    25 else:
       
    26     print 'expected TypeError exception not raised'
       
    27 
       
    28 try:
       
    29     rfd, wfd, xfd = select.select([Almost()], [], [])
       
    30 except TypeError:
       
    31     pass
       
    32 else:
       
    33     print 'expected TypeError exception not raised'
       
    34 
       
    35 try:
       
    36     rfd, wfd, xfd = select.select([], [], [], 'not a number')
       
    37 except TypeError:
       
    38     pass
       
    39 else:
       
    40     print 'expected TypeError exception not raised'
       
    41 
       
    42 
       
    43 def test():
       
    44     import sys
       
    45     if sys.platform[:3] in ('win', 'mac', 'os2', 'riscos'):
       
    46         if verbose:
       
    47             print "Can't test select easily on", sys.platform
       
    48         return
       
    49     cmd = 'for i in 0 1 2 3 4 5 6 7 8 9; do echo testing...; sleep 1; done'
       
    50     p = os.popen(cmd, 'r')
       
    51     for tout in (0, 1, 2, 4, 8, 16) + (None,)*10:
       
    52         if verbose:
       
    53             print 'timeout =', tout
       
    54         rfd, wfd, xfd = select.select([p], [], [], tout)
       
    55         if (rfd, wfd, xfd) == ([], [], []):
       
    56             continue
       
    57         if (rfd, wfd, xfd) == ([p], [], []):
       
    58             line = p.readline()
       
    59             if verbose:
       
    60                 print repr(line)
       
    61             if not line:
       
    62                 if verbose:
       
    63                     print 'EOF'
       
    64                 break
       
    65             continue
       
    66         print 'Unexpected return values from select():', rfd, wfd, xfd
       
    67     p.close()
       
    68     reap_children()
       
    69 
       
    70 test()