| 
									
										
										
										
											2001-02-04 03:09:53 +00:00
										 |  |  | # Run the _testcapi module tests (tests for the Python/C API):  by defn, | 
					
						
							| 
									
										
										
										
											2001-04-13 17:03:04 +00:00
										 |  |  | # these are all functions _testcapi exports whose name begins with 'test_'. | 
					
						
							| 
									
										
										
										
											2001-02-02 05:57:15 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-03-03 12:26:35 +00:00
										 |  |  | import sys | 
					
						
							| 
									
										
										
										
											2002-07-23 19:04:11 +00:00
										 |  |  | from test import test_support | 
					
						
							| 
									
										
										
										
											2001-02-04 03:09:53 +00:00
										 |  |  | import _testcapi | 
					
						
							| 
									
										
										
										
											2001-02-02 05:57:15 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-02-04 03:09:53 +00:00
										 |  |  | for name in dir(_testcapi): | 
					
						
							| 
									
										
										
										
											2001-02-02 05:57:15 +00:00
										 |  |  |     if name.startswith('test_'): | 
					
						
							| 
									
										
										
										
											2001-02-04 03:09:53 +00:00
										 |  |  |         test = getattr(_testcapi, name) | 
					
						
							| 
									
										
										
										
											2001-02-02 05:57:15 +00:00
										 |  |  |         if test_support.verbose: | 
					
						
							|  |  |  |             print "internal", name | 
					
						
							|  |  |  |         try: | 
					
						
							|  |  |  |             test() | 
					
						
							| 
									
										
										
										
											2001-02-04 03:09:53 +00:00
										 |  |  |         except _testcapi.error: | 
					
						
							| 
									
										
										
										
											2001-02-02 05:57:15 +00:00
										 |  |  |             raise test_support.TestFailed, sys.exc_info()[1] | 
					
						
							| 
									
										
										
										
											2003-04-19 15:41:53 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | # some extra thread-state tests driven via _testcapi | 
					
						
							|  |  |  | def TestThreadState(): | 
					
						
							|  |  |  |     import thread | 
					
						
							|  |  |  |     import time | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if test_support.verbose: | 
					
						
							|  |  |  |         print "auto-thread-state" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     idents = [] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def callback(): | 
					
						
							|  |  |  |         idents.append(thread.get_ident()) | 
					
						
							| 
									
										
										
										
											2003-04-24 16:02:54 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-04-19 15:41:53 +00:00
										 |  |  |     _testcapi._test_thread_state(callback) | 
					
						
							|  |  |  |     time.sleep(1) | 
					
						
							|  |  |  |     # Check our main thread is in the list exactly 3 times. | 
					
						
							|  |  |  |     if idents.count(thread.get_ident()) != 3: | 
					
						
							|  |  |  |         raise test_support.TestFailed, \ | 
					
						
							|  |  |  |               "Couldn't find main thread correctly in the list" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | try: | 
					
						
							|  |  |  |     _testcapi._test_thread_state | 
					
						
							|  |  |  |     have_thread_state = True | 
					
						
							|  |  |  | except AttributeError: | 
					
						
							|  |  |  |     have_thread_state = False | 
					
						
							| 
									
										
										
										
											2003-04-24 16:02:54 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-04-19 15:41:53 +00:00
										 |  |  | if have_thread_state: | 
					
						
							|  |  |  |     TestThreadState() | 
					
						
							| 
									
										
										
										
											2004-08-24 22:24:08 +00:00
										 |  |  |     import threading | 
					
						
							|  |  |  |     t=threading.Thread(target=TestThreadState) | 
					
						
							|  |  |  |     t.start() |