| 
									
										
										
										
											2006-03-20 06:30:08 +00:00
										 |  |  | """This test checks for correct wait3() behavior.
 | 
					
						
							|  |  |  | """
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import os | 
					
						
							|  |  |  | from test.fork_wait import ForkWait | 
					
						
							| 
									
										
										
										
											2006-06-29 04:10:08 +00:00
										 |  |  | from test.test_support import TestSkipped, run_unittest, reap_children | 
					
						
							| 
									
										
										
										
											2006-03-20 06:30:08 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | try: | 
					
						
							|  |  |  |     os.fork | 
					
						
							|  |  |  | except AttributeError: | 
					
						
							|  |  |  |     raise TestSkipped, "os.fork not defined -- skipping test_wait3" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | try: | 
					
						
							|  |  |  |     os.wait3 | 
					
						
							|  |  |  | except AttributeError: | 
					
						
							|  |  |  |     raise TestSkipped, "os.wait3 not defined -- skipping test_wait3" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Wait3Test(ForkWait): | 
					
						
							|  |  |  |     def wait_impl(self, cpid): | 
					
						
							| 
									
										
										
										
											2006-06-18 20:10:24 +00:00
										 |  |  |         while 1: | 
					
						
							|  |  |  |             spid, status, rusage = os.wait3(0) | 
					
						
							| 
									
										
										
										
											2006-03-20 07:10:01 +00:00
										 |  |  |             if spid == cpid: | 
					
						
							|  |  |  |                 break | 
					
						
							| 
									
										
										
										
											2006-03-20 06:30:08 +00:00
										 |  |  |         self.assertEqual(spid, cpid) | 
					
						
							|  |  |  |         self.assertEqual(status, 0, "cause = %d, exit = %d" % (status&0xff, status>>8)) | 
					
						
							|  |  |  |         self.assertTrue(rusage) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def test_main(): | 
					
						
							|  |  |  |     run_unittest(Wait3Test) | 
					
						
							| 
									
										
										
										
											2006-06-29 04:10:08 +00:00
										 |  |  |     reap_children() | 
					
						
							| 
									
										
										
										
											2006-03-20 06:30:08 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | if __name__ == "__main__": | 
					
						
							|  |  |  |     test_main() |