mirror of
https://github.com/python/cpython.git
synced 2025-07-13 14:25:18 +00:00

The test_peg_generator and test_tools.test_freeze tests now require the 'cpu' resource. Skip these tests unless the 'cpu' resource is enabled (it is disabled by default). These tests are no longer skipped if Python is built with ASAN or MSAN sanitizer.
43 lines
1.3 KiB
Python
43 lines
1.3 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 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)
|