Merge "Remove load_modules method"

This commit is contained in:
Zuul 2019-01-11 11:39:18 +00:00 committed by Gerrit Code Review
commit 80f77f1dfd
3 changed files with 7 additions and 53 deletions

View File

@ -26,5 +26,4 @@ get_fixture = fixture_manager.FIXTURES.get
create_fixture = fixture_manager.FIXTURES.create
delete_fixture = fixture_manager.FIXTURES.delete
discover_testcases = testcase_manager.TESTCASES.discover
load_testcase_modules = testcase_manager.TESTCASES.load_modules
discover_testcases = testcase_manager.discover_testcases

View File

@ -13,7 +13,6 @@
# under the License.
from __future__ import absolute_import
import importlib
import os
import sys
@ -25,6 +24,11 @@ LOG = log.getLogger(__name__)
os.environ.setdefault('PYTHON', sys.executable)
def discover_testcases(manager=None, **kwargs):
manager = manager or TESTCASES
return manager.discover(**kwargs)
class TestCaseManager(object):
def __init__(self, config='.stestr.conf', repo_type='file', repo_url=None,
@ -69,41 +73,6 @@ class TestCaseManager(object):
self.black_regex = black_regex
self.filters = filters
def load_modules(self, **kwargs):
failed = {}
imported = {}
modules = []
for testcase_id in self.discover(**kwargs):
id_parts = testcase_id.split('.')
for i in range(len(id_parts)):
module_id = '.'.join(id_parts[:i + 1])
if module_id in failed:
# failed modules have no child modules to import
break
# import every module only once
module = imported.get(module_id)
if module is None:
try:
module = importlib.import_module(module_id)
except ImportError as ex:
failed[module_id] = ex
self.on_import_error(module_id)
# failed modules have no child modules to import
break
assert module_id == module.__name__
imported[module_id] = module
if is_leaf_module(module):
# leaf modules have no child modules to import
modules.append(module)
break
return modules
def on_import_error(self, test_module_id):
LOG.exception("Error importing module %r", test_module_id)
def discover(self, **kwargs):
"""Iterate over test_ids for a project
This method will print the test_ids for tests in a project. You can
@ -151,8 +120,4 @@ class TestCaseManager(object):
return sorted(ids)
def is_leaf_module(module):
return not os.path.basename(module.__file__).startswith('__init__.')
TESTCASES = TestCaseManager()

View File

@ -14,7 +14,6 @@
from __future__ import absolute_import
import os
import sys
import tobiko
from tobiko.tests import unit
@ -42,18 +41,9 @@ class TestCasesManagerTest(unit.TobikoUnitTest):
os.chdir(self.top_dir)
self.addCleanup(os.chdir, original_work_dir)
def test_discover(self):
def test_discover_testcases(self):
testcases = tobiko.discover_testcases(test_path=self.test_path,
top_dir=self.top_dir,
repo_url=self.repo_url,
filters=[self.id()])
self.assertIn(self.id(), testcases)
def test_load_testcase_modules(self):
this_module = sys.modules[self.__module__]
modules = tobiko.load_testcase_modules(test_path=self.test_path,
top_dir=self.top_dir,
repo_url=self.repo_url,
filters=[self.id()])
self.assertIn(this_module, modules)