| 
									
										
										
										
											1996-07-22 15:23:25 +00:00
										 |  |  | # Testing select module | 
					
						
							| 
									
										
										
										
											1997-05-08 23:14:57 +00:00
										 |  |  | from test_support import verbose | 
					
						
							| 
									
										
										
										
											1997-04-02 06:13:34 +00:00
										 |  |  | 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): | 
					
						
							| 
									
										
										
										
											1998-03-26 22:14:20 +00:00
										 |  |  |         return 'fileno' | 
					
						
							| 
									
										
										
										
											1997-04-02 06:13:34 +00:00
										 |  |  |      | 
					
						
							|  |  |  | 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' | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1996-07-22 15:23:25 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | def test(): | 
					
						
							| 
									
										
										
										
											1998-03-26 22:14:20 +00:00
										 |  |  |         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 | 
					
						
							| 
									
										
										
										
											2000-09-01 19:25:51 +00:00
										 |  |  |                 print 'Unexpected return values from select():', rfd, wfd, xfd | 
					
						
							| 
									
										
										
										
											1998-03-26 22:14:20 +00:00
										 |  |  |         p.close() | 
					
						
							| 
									
										
										
										
											1996-07-22 15:23:25 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | test() | 
					
						
							| 
									
										
										
										
											1997-04-02 06:13:34 +00:00
										 |  |  | 
 |