You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ORPA-pyOpenRPA/Resources/WPy64-3720/python-3.7.2.amd64/Scripts/pywin32_testall.py

88 lines
3.3 KiB

"""A test runner for pywin32"""
import sys
import os
import distutils.sysconfig
import win32api
# locate the dirs based on where this script is - it may be either in the
# source tree, or in an installed Python 'Scripts' tree.
this_dir = os.path.dirname(__file__)
site_packages = distutils.sysconfig.get_python_lib(plat_specific=1)
if hasattr(os, 'popen3'):
def run_test(script, cmdline_rest=""):
dirname, scriptname = os.path.split(script)
# some tests prefer to be run from their directory.
cwd = os.getcwd()
os.chdir(dirname)
try:
executable = win32api.GetShortPathName(sys.executable)
cmd = '%s "%s" %s' % (sys.executable, scriptname, cmdline_rest)
print(script)
stdin, stdout, stderr = os.popen3(cmd)
stdin.close()
while 1:
char = stderr.read(1)
if not char:
break
sys.stdout.write(char)
for line in stdout.readlines():
print(line)
stdout.close()
result = stderr.close()
if result is not None:
print("****** %s failed: %s" % (script, result))
finally:
os.chdir(cwd)
else:
# a subprocess version - but we prefer the popen one if we can as we can
# see test results as they are run (whereas this one waits until the test
# is finished...)
import subprocess
def run_test(script, cmdline_rest=""):
dirname, scriptname = os.path.split(script)
# some tests prefer to be run from their directory.
cmd = [sys.executable, "-u", scriptname] + cmdline_rest.split()
print(script)
popen = subprocess.Popen(cmd, shell=True, cwd=dirname,
stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
data = popen.communicate()[0]
sys.stdout.buffer.write(data)
if popen.returncode:
print("****** %s failed: %s" % (script, popen.returncode))
def find_and_run(possible_locations, script, cmdline_rest=""):
for maybe in possible_locations:
if os.path.isfile(os.path.join(maybe, script)):
run_test(os.path.abspath(os.path.join(maybe, script)), cmdline_rest)
break
else:
raise RuntimeError("Failed to locate the test script '%s' in one of %s"
% (script, possible_locations))
if __name__=='__main__':
# win32
maybes = [os.path.join(this_dir, "win32", "test"),
os.path.join(site_packages, "win32", "test"),
]
find_and_run(maybes, 'testall.py')
# win32com
maybes = [os.path.join(this_dir, "com", "win32com", "test"),
os.path.join(site_packages, "win32com", "test"),
]
find_and_run(maybes, 'testall.py', "2")
# adodbapi
maybes = [os.path.join(this_dir, "adodbapi", "tests"),
os.path.join(site_packages, "adodbapi", "tests"),
]
find_and_run(maybes, 'adodbapitest.py')
# This script has a hard-coded sql server name in it, (and markh typically
# doesn't have a different server to test on) so don't bother trying to
# run it...
# find_and_run(maybes, 'test_adodbapi_dbapi20.py')
if sys.version_info > (3,):
print("** The tests have some issues on py3k - not all failures are a problem...")