diff options
author | Michael Foord <fuzzyman@voidspace.org.uk> | 2010-06-05 10:39:42 (GMT) |
---|---|---|
committer | Michael Foord <fuzzyman@voidspace.org.uk> | 2010-06-05 10:39:42 (GMT) |
commit | 9ef5d33084f72ed209ec59a9ea4b0a1d968ee8d6 (patch) | |
tree | 6f22462505815864082c56ef365f60c65aa302cb /Lib | |
parent | d5adb5d73d3daac54f600f9affa59ce325708ca9 (diff) | |
download | cpython-9ef5d33084f72ed209ec59a9ea4b0a1d968ee8d6.zip cpython-9ef5d33084f72ed209ec59a9ea4b0a1d968ee8d6.tar.gz cpython-9ef5d33084f72ed209ec59a9ea4b0a1d968ee8d6.tar.bz2 |
unittest TestLoader test discovery filename matching done in a method. This makes it easier to override the matching strategy in subclasses. No behaviour change in actual implementation.
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/unittest/loader.py | 44 |
1 files changed, 24 insertions, 20 deletions
diff --git a/Lib/unittest/loader.py b/Lib/unittest/loader.py index a6fb95d..e88f536 100644 --- a/Lib/unittest/loader.py +++ b/Lib/unittest/loader.py @@ -230,6 +230,10 @@ class TestLoader(object): __import__(name) return sys.modules[name] + def _match_path(self, path, full_path, pattern): + # override this method to use alternative matching strategy + return fnmatch(path, pattern) + def _find_tests(self, start_dir, pattern): """Used by discovery. Yields test suites it loads.""" paths = os.listdir(start_dir) @@ -240,26 +244,26 @@ class TestLoader(object): if not VALID_MODULE_NAME.match(path): # valid Python identifiers only continue - - if fnmatch(path, pattern): - # if the test file matches, load it - name = self._get_name_from_path(full_path) - try: - module = self._get_module_from_name(name) - except: - yield _make_failed_import_test(name, self.suiteClass) - else: - mod_file = os.path.abspath(getattr(module, '__file__', full_path)) - realpath = os.path.splitext(mod_file)[0] - fullpath_noext = os.path.splitext(full_path)[0] - if realpath.lower() != fullpath_noext.lower(): - module_dir = os.path.dirname(realpath) - mod_name = os.path.splitext(os.path.basename(full_path))[0] - expected_dir = os.path.dirname(full_path) - msg = ("%r module incorrectly imported from %r. Expected %r. " - "Is this module globally installed?") - raise ImportError(msg % (mod_name, module_dir, expected_dir)) - yield self.loadTestsFromModule(module) + if not self._match_path(path, full_path, pattern): + continue + # if the test file matches, load it + name = self._get_name_from_path(full_path) + try: + module = self._get_module_from_name(name) + except: + yield _make_failed_import_test(name, self.suiteClass) + else: + mod_file = os.path.abspath(getattr(module, '__file__', full_path)) + realpath = os.path.splitext(mod_file)[0] + fullpath_noext = os.path.splitext(full_path)[0] + if realpath.lower() != fullpath_noext.lower(): + module_dir = os.path.dirname(realpath) + mod_name = os.path.splitext(os.path.basename(full_path))[0] + expected_dir = os.path.dirname(full_path) + msg = ("%r module incorrectly imported from %r. Expected %r. " + "Is this module globally installed?") + raise ImportError(msg % (mod_name, module_dir, expected_dir)) + yield self.loadTestsFromModule(module) elif os.path.isdir(full_path): if not os.path.isfile(os.path.join(full_path, '__init__.py')): continue |