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 importhelper if not support hassubprocesssupport raise unittest skiptesttest module requires subprocess basepath os path normpath os path dirname srcinstall dir os path dirname lib os path dirname test os path dirnamefile testtools toolsdir os path joinbasepath tools scriptsdir os path jointoolsdir scripts def skipifmissingtoolnone if tool tooldir os path jointoolsdir tool else tool scripts tooldir scriptsdir if not os path isdirtooldir raise unittest skiptestf tool directory could not be found contextlib contextmanager def importsundertoolname subdirs tooldir os path jointoolsdir name subdirs with importhelper dirsonsyspathtooldir as cm yield cm def importtooltoolname with importhelper dirsonsyspathscriptsdir return importlib importmoduletoolname def loadtestsargs return support loadpackagetestsos path dirnamefile args src install dir lib test test_tools
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(                 
            os.path.dirname(                
                os.path.dirname(                
                    os.path.dirname(__file__)))))    

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)