From e01c62cd6bc413db0895696f22d7188890757431 Mon Sep 17 00:00:00 2001 From: Michael Foord Date: Tue, 13 Mar 2012 00:09:54 -0700 Subject: [PATCH] Fix unittest test discovery for Jython --- Lib/unittest/loader.py | 13 +++++++++---- Misc/NEWS | 2 ++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/Lib/unittest/loader.py b/Lib/unittest/loader.py index ab364002e20..541884e4161 100644 --- a/Lib/unittest/loader.py +++ b/Lib/unittest/loader.py @@ -34,6 +34,11 @@ def _make_failed_test(classname, methodname, exception, suiteClass): TestClass = type(classname, (case.TestCase,), attrs) return suiteClass((TestClass(methodname),)) +def _jython_aware_splitext(path): + if path.lower().endswith('$py.class'): + return path[:-9] + return os.path.splitext(path)[0] + class TestLoader(object): """ @@ -221,7 +226,7 @@ class TestLoader(object): return os.path.dirname(full_path) def _get_name_from_path(self, path): - path = os.path.splitext(os.path.normpath(path))[0] + path = _jython_aware_splitext(os.path.normpath(path)) _relpath = os.path.relpath(path, self._top_level_dir) assert not os.path.isabs(_relpath), "Path must be within the project" @@ -258,11 +263,11 @@ class TestLoader(object): 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] + realpath = _jython_aware_splitext(mod_file) + fullpath_noext = _jython_aware_splitext(full_path) if realpath.lower() != fullpath_noext.lower(): module_dir = os.path.dirname(realpath) - mod_name = os.path.splitext(os.path.basename(full_path))[0] + mod_name = _jython_aware_splitext(os.path.basename(full_path)) expected_dir = os.path.dirname(full_path) msg = ("%r module incorrectly imported from %r. Expected %r. " "Is this module globally installed?") diff --git a/Misc/NEWS b/Misc/NEWS index 5d03fee8e74..93b5a74cef7 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -22,6 +22,8 @@ Core and Builtins Library ------- +- Issue #10543: Fix unittest test discovery with Jython bytecode files. + - Issue #14252: Fix subprocess.Popen.terminate() to not raise an error under Windows when the child process has already exited.