mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 10:26:02 +00:00 
			
		
		
		
	 deeaac49e2
			
		
	
	
		deeaac49e2
		
			
		
	
	
	
	
		
			
			- Add requires_fork and requires_subprocess to more tests - Skip extension import tests if dlopen is not available - Don't assume that _testcapi is a shared extension - Skip a lot of socket tests that don't work on Emscripten - Skip mmap tests, mmap emulation is incomplete - venv does not work yet - Cannot get libc from executable The "entire" test suite is now passing on Emscripten with EMSDK from git head (91 suites are skipped).
		
			
				
	
	
		
			49 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| """Support functions for testing scripts in the Tools directory."""
 | |
| import contextlib
 | |
| import importlib
 | |
| import os.path
 | |
| import unittest
 | |
| from test import support
 | |
| from test.support import import_helper
 | |
| 
 | |
| 
 | |
| if support.check_sanitizer(address=True, memory=True):
 | |
|     # bpo-46633: Skip the test because it is too slow when Python is built
 | |
|     # with ASAN/MSAN: between 5 and 20 minutes on GitHub Actions.
 | |
|     raise unittest.SkipTest("test too slow on ASAN/MSAN build")
 | |
| 
 | |
| 
 | |
| if not support.has_subprocess_support:
 | |
|     raise unittest.SkipTest("test module requires subprocess")
 | |
| 
 | |
| 
 | |
| basepath = os.path.normpath(
 | |
|         os.path.dirname(                 # <src/install dir>
 | |
|             os.path.dirname(                # Lib
 | |
|                 os.path.dirname(                # test
 | |
|                     os.path.dirname(__file__)))))    # test_tools
 | |
| 
 | |
| toolsdir = os.path.join(basepath, 'Tools')
 | |
| scriptsdir = os.path.join(toolsdir, 'scripts')
 | |
| 
 | |
| def skip_if_missing(tool=None):
 | |
|     if tool:
 | |
|         tooldir = os.path.join(toolsdir, tool)
 | |
|     else:
 | |
|         tool = 'scripts'
 | |
|         tooldir = scriptsdir
 | |
|     if not os.path.isdir(tooldir):
 | |
|         raise unittest.SkipTest(f'{tool} directory could not be found')
 | |
| 
 | |
| @contextlib.contextmanager
 | |
| def imports_under_tool(name, *subdirs):
 | |
|     tooldir = os.path.join(toolsdir, name, *subdirs)
 | |
|     with import_helper.DirsOnSysPath(tooldir) as cm:
 | |
|         yield cm
 | |
| 
 | |
| def import_tool(toolname):
 | |
|     with import_helper.DirsOnSysPath(scriptsdir):
 | |
|         return importlib.import_module(toolname)
 | |
| 
 | |
| def load_tests(*args):
 | |
|     return support.load_package_tests(os.path.dirname(__file__), *args)
 |