home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / pyos2bin.zip / Lib / test / test_select.py < prev    next >
Text File  |  1997-11-22  |  1KB  |  65 lines

  1. # Testing select module
  2. from test_support import verbose
  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.  
  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()
  62.  
  63. test()
  64.  
  65.