diff --git a/src/zope/testrunner/find.py b/src/zope/testrunner/find.py index cbbdedd..6a3718b 100644 --- a/src/zope/testrunner/find.py +++ b/src/zope/testrunner/find.py @@ -171,13 +171,8 @@ def find_tests(options, found_suites=None): def find_suites(options): - # Sort prefixes so that longest prefixes come first. - # That is because only first match is evaluated which - # can be a problem with nested source packages. - sorted_prefixes = [x for x in options.prefix] - sorted_prefixes.sort(key=lambda prefix: len(prefix[0]), reverse=True) for fpath, package in find_test_files(options): - for (prefix, prefix_package) in sorted_prefixes: + for (prefix, prefix_package) in options.prefix: if fpath.startswith(prefix) and package == prefix_package: # strip prefix, strip .py suffix and convert separator to dots noprefix = fpath[len(prefix):] diff --git a/src/zope/testrunner/options.py b/src/zope/testrunner/options.py index cab11be..07db865 100644 --- a/src/zope/testrunner/options.py +++ b/src/zope/testrunner/options.py @@ -624,6 +624,12 @@ def apply_auto_progress(args): options.prefix = [(path + os.path.sep, package) for (path, package) in options.test_path] + + # Sort prefixes so that longest prefixes come first. + # That is because only first match is evaluated which + # can be a problem with nested source packages. + options.prefix.sort(key=lambda p: len(p[0]), reverse=True) + if options.all: options.at_level = sys.maxsize