summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Behnel <stefan_ml@behnel.de>2020-08-01 08:19:18 +0200
committerStefan Behnel <stefan_ml@behnel.de>2020-08-01 08:19:18 +0200
commitb7fd746d692803807d3334d7f76ef55424bdd395 (patch)
tree1632fb7b596e49e254d78aa6d7e8dc95d0bbce7a
parent9f03226cd3d63e1b0d8f9848eb916cea9b53d024 (diff)
downloadcython-b7fd746d692803807d3334d7f76ef55424bdd395.tar.gz
Print test dependency versions to help with test failure debugging.
-rwxr-xr-xruntests.py26
1 files changed, 24 insertions, 2 deletions
diff --git a/runtests.py b/runtests.py
index 27b9d9da4..240335dd9 100755
--- a/runtests.py
+++ b/runtests.py
@@ -1843,12 +1843,34 @@ class MissingDependencyExcluder(object):
def __init__(self, deps):
# deps: { matcher func : module name }
self.exclude_matchers = []
- for matcher, mod in deps.items():
+ for matcher, module_name in deps.items():
try:
- __import__(mod)
+ module = __import__(module_name)
except ImportError:
self.exclude_matchers.append(string_selector(matcher))
+ print("Test dependency not found: '%s'" % module_name)
+ else:
+ version = self.find_dep_version(module_name, module)
+ print("Test dependency found: '%s' version %s" % (module_name, version))
self.tests_missing_deps = []
+
+ def find_dep_version(self, name, module):
+ try:
+ version = module.__version__
+ except AttributeError:
+ stdlib_dir = os.path.dirname(shutil.__file__) + os.sep
+ module_path = getattr(module, '__file__', stdlib_dir) # no __file__? => builtin stdlib module
+ if module_path.startswith(stdlib_dir):
+ # stdlib module
+ version = sys.version.partition(' ')[0]
+ elif '.' in name:
+ # incrementally look for a parent package with version
+ name = name.rpartition('.')[0]
+ return self.find_dep_version(name, __import__(name))
+ else:
+ version = '?.?'
+ return version
+
def __call__(self, testname, tags=None):
for matcher in self.exclude_matchers:
if matcher(testname, tags):