diff --git a/tools/test.py b/tools/test.py index 33f3e40115ce05..8a7e8987bd1f8e 100755 --- a/tools/test.py +++ b/tools/test.py @@ -29,7 +29,6 @@ from __future__ import print_function -import imp import logging import optparse import os @@ -45,6 +44,27 @@ import errno import copy + +if sys.version_info >= (3, 5): + from importlib import machinery, util + def get_module(name, path): + loader_details = (machinery.SourceFileLoader, machinery.SOURCE_SUFFIXES) + spec = machinery.FileFinder(path, loader_details).find_spec(name) + module = util.module_from_spec(spec) + spec.loader.exec_module(module) + return module +else: + import imp + def get_module(name, path): + file = None + try: + (file, pathname, description) = imp.find_module(name, [path]) + return imp.load_module(name, file, pathname, description) + finally: + if file: + file.close() + + from io import open from os.path import join, dirname, abspath, basename, isdir, exists from datetime import datetime @@ -786,18 +806,13 @@ def GetConfiguration(self, context): if self.is_loaded: return self.config self.is_loaded = True - file = None - try: - (file, pathname, description) = imp.find_module('testcfg', [ self.path ]) - module = imp.load_module('testcfg', file, pathname, description) - self.config = module.GetConfiguration(context, self.path) - if hasattr(self.config, 'additional_flags'): - self.config.additional_flags += context.node_args - else: - self.config.additional_flags = context.node_args - finally: - if file: - file.close() + + module = get_module('testcfg', self.path) + self.config = module.GetConfiguration(context, self.path) + if hasattr(self.config, 'additional_flags'): + self.config.additional_flags += context.node_args + else: + self.config.additional_flags = context.node_args return self.config def GetBuildRequirements(self, path, context):