diff options
author | Stefan Behnel <stefan_ml@behnel.de> | 2020-08-01 08:19:18 +0200 |
---|---|---|
committer | Stefan Behnel <stefan_ml@behnel.de> | 2020-08-01 08:19:18 +0200 |
commit | b7fd746d692803807d3334d7f76ef55424bdd395 (patch) | |
tree | 1632fb7b596e49e254d78aa6d7e8dc95d0bbce7a | |
parent | 9f03226cd3d63e1b0d8f9848eb916cea9b53d024 (diff) | |
download | cython-b7fd746d692803807d3334d7f76ef55424bdd395.tar.gz |
Print test dependency versions to help with test failure debugging.
-rwxr-xr-x | runtests.py | 26 |
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): |