Refs #32532 -- Added DiscoverRunner.load_tests_for_label().
This commit is contained in:
parent
83443e62d3
commit
235d23cf99
|
@ -585,6 +585,30 @@ class DiscoverRunner:
|
||||||
setup_test_environment(debug=self.debug_mode)
|
setup_test_environment(debug=self.debug_mode)
|
||||||
unittest.installHandler()
|
unittest.installHandler()
|
||||||
|
|
||||||
|
def load_tests_for_label(self, label, discover_kwargs):
|
||||||
|
label_as_path = os.path.abspath(label)
|
||||||
|
tests = None
|
||||||
|
|
||||||
|
# If a module, or "module.ClassName[.method_name]", just run those.
|
||||||
|
if not os.path.exists(label_as_path):
|
||||||
|
tests = self.test_loader.loadTestsFromName(label)
|
||||||
|
if tests.countTestCases():
|
||||||
|
return tests
|
||||||
|
# Try discovery if "label" is a package or directory.
|
||||||
|
if not is_discoverable(label):
|
||||||
|
return tests
|
||||||
|
|
||||||
|
kwargs = discover_kwargs.copy()
|
||||||
|
if os.path.isdir(label_as_path) and not self.top_level:
|
||||||
|
kwargs['top_level_dir'] = find_top_level(label_as_path)
|
||||||
|
|
||||||
|
tests = self.test_loader.discover(start_dir=label, **kwargs)
|
||||||
|
|
||||||
|
# Make unittest forget the top-level dir it calculated from this run,
|
||||||
|
# to support running tests from two different top-levels.
|
||||||
|
self.test_loader._top_level_dir = None
|
||||||
|
return tests
|
||||||
|
|
||||||
def build_suite(self, test_labels=None, extra_tests=None, **kwargs):
|
def build_suite(self, test_labels=None, extra_tests=None, **kwargs):
|
||||||
test_labels = test_labels or ['.']
|
test_labels = test_labels or ['.']
|
||||||
extra_tests = extra_tests or []
|
extra_tests = extra_tests or []
|
||||||
|
@ -598,25 +622,7 @@ class DiscoverRunner:
|
||||||
|
|
||||||
all_tests = []
|
all_tests = []
|
||||||
for label in test_labels:
|
for label in test_labels:
|
||||||
label_as_path = os.path.abspath(label)
|
tests = self.load_tests_for_label(label, discover_kwargs)
|
||||||
tests = None
|
|
||||||
|
|
||||||
# if a module, or "module.ClassName[.method_name]", just run those
|
|
||||||
if not os.path.exists(label_as_path):
|
|
||||||
tests = self.test_loader.loadTestsFromName(label)
|
|
||||||
|
|
||||||
# Try discovery if "label" is a package or directory.
|
|
||||||
if not (tests and tests.countTestCases()) and is_discoverable(label):
|
|
||||||
kwargs = discover_kwargs.copy()
|
|
||||||
if os.path.isdir(label_as_path) and not self.top_level:
|
|
||||||
kwargs['top_level_dir'] = find_top_level(label_as_path)
|
|
||||||
|
|
||||||
tests = self.test_loader.discover(start_dir=label, **kwargs)
|
|
||||||
|
|
||||||
# Make unittest forget the top-level dir it calculated from this
|
|
||||||
# run, to support running tests from two different top-levels.
|
|
||||||
self.test_loader._top_level_dir = None
|
|
||||||
|
|
||||||
all_tests.extend(iter_test_cases(tests))
|
all_tests.extend(iter_test_cases(tests))
|
||||||
|
|
||||||
all_tests.extend(iter_test_cases(extra_tests))
|
all_tests.extend(iter_test_cases(extra_tests))
|
||||||
|
|
Loading…
Reference in New Issue