| 
									
										
										
										
											2014-07-16 14:26:09 -05:00
										 |  |  | """Tests for scripts in the Tools directory.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | This file contains extremely basic regression tests for the scripts found in | 
					
						
							|  |  |  | the Tools directory of a Python checkout or tarball which don't have separate | 
					
						
							| 
									
										
										
										
											2019-07-30 17:45:09 +02:00
										 |  |  | tests of their own. | 
					
						
							| 
									
										
										
										
											2014-07-16 14:26:09 -05:00
										 |  |  | """
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import os | 
					
						
							|  |  |  | import sys | 
					
						
							|  |  |  | import unittest | 
					
						
							| 
									
										
										
										
											2020-08-04 23:53:12 +08:00
										 |  |  | from test.support import import_helper | 
					
						
							| 
									
										
										
										
											2014-07-16 14:26:09 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | from test.test_tools import scriptsdir, import_tool, skip_if_missing | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | skip_if_missing() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class TestSundryScripts(unittest.TestCase): | 
					
						
							|  |  |  |     # At least make sure the rest don't have syntax errors.  When tests are | 
					
						
							| 
									
										
										
										
											2020-08-11 15:26:59 +02:00
										 |  |  |     # added for a script it should be added to the allowlist below. | 
					
						
							| 
									
										
										
										
											2014-07-16 14:26:09 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |     # scripts that have independent tests. | 
					
						
							| 
									
										
										
										
											2022-10-11 10:07:57 +02:00
										 |  |  |     allowlist = ['reindent'] | 
					
						
							| 
									
										
										
										
											2014-07-16 14:26:09 -05:00
										 |  |  |     # scripts that can't be imported without running | 
					
						
							| 
									
										
										
										
											2020-08-11 15:26:59 +02:00
										 |  |  |     denylist = ['make_ctype'] | 
					
						
							|  |  |  |     # denylisted for other reasons | 
					
						
							| 
									
										
										
										
											2022-10-04 15:28:57 +02:00
										 |  |  |     other = ['2to3'] | 
					
						
							| 
									
										
										
										
											2014-07-16 14:26:09 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-11 10:07:57 +02:00
										 |  |  |     skiplist = denylist + allowlist + other | 
					
						
							| 
									
										
										
										
											2014-07-16 14:26:09 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-12 17:26:21 +02:00
										 |  |  |     # import logging registers "atfork" functions which keep indirectly the | 
					
						
							|  |  |  |     # logging module dictionary alive. Mock the function to be able to unload | 
					
						
							|  |  |  |     # cleanly the logging module. | 
					
						
							|  |  |  |     @import_helper.mock_register_at_fork | 
					
						
							|  |  |  |     def test_sundry(self, mock_os): | 
					
						
							| 
									
										
										
										
											2020-08-04 23:53:12 +08:00
										 |  |  |         old_modules = import_helper.modules_setup() | 
					
						
							| 
									
										
										
										
											2018-07-23 13:17:59 +02:00
										 |  |  |         try: | 
					
						
							|  |  |  |             for fn in os.listdir(scriptsdir): | 
					
						
							|  |  |  |                 if not fn.endswith('.py'): | 
					
						
							|  |  |  |                     continue | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 name = fn[:-3] | 
					
						
							|  |  |  |                 if name in self.skiplist: | 
					
						
							|  |  |  |                     continue | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-07-16 14:26:09 -05:00
										 |  |  |                 import_tool(name) | 
					
						
							| 
									
										
										
										
											2018-07-23 13:17:59 +02:00
										 |  |  |         finally: | 
					
						
							|  |  |  |             # Unload all modules loaded in this test | 
					
						
							| 
									
										
										
										
											2020-08-04 23:53:12 +08:00
										 |  |  |             import_helper.modules_cleanup(*old_modules) | 
					
						
							| 
									
										
										
										
											2014-07-16 14:26:09 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if __name__ == '__main__': | 
					
						
							|  |  |  |     unittest.main() |