From 17a781bc69d73326455ca7f129bdf57528f4ad8b Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 9 Apr 2001 15:37:31 +0000 Subject: [PATCH] * Remove exc_info() kludge -- it actually messed up the Jython output * Fixed TestLoader.loadTestsFromName() for nested packages * Corrected the command-line usage summary --- Lib/unittest.py | 30 +++++++++++++----------------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/Lib/unittest.py b/Lib/unittest.py index eac5e78a115..1c2163f689f 100644 --- a/Lib/unittest.py +++ b/Lib/unittest.py @@ -189,7 +189,7 @@ def __call__(self, result=None): try: self.setUp() except: - result.addError(self,self.__exc_info()) + result.addError(self,sys.exc_info()) return ok = 0 @@ -197,14 +197,14 @@ def __call__(self, result=None): testMethod() ok = 1 except AssertionError, e: - result.addFailure(self,self.__exc_info()) + result.addFailure(self,sys.exc_info()) except: - result.addError(self,self.__exc_info()) + result.addError(self,sys.exc_info()) try: self.tearDown() except: - result.addError(self,self.__exc_info()) + result.addError(self,sys.exc_info()) ok = 0 if ok: result.addSuccess(self) finally: @@ -266,17 +266,6 @@ def fail(self, msg=None): """Fail immediately, with the given message.""" raise AssertionError, msg - def __exc_info(self): - """Return a version of sys.exc_info() with the traceback frame - minimised; usually the top level of the traceback frame is not - needed. - """ - exctype, excvalue, tb = sys.exc_info() - newtb = tb.tb_next - if newtb is None: - return (exctype, excvalue, tb) - return (exctype, excvalue, newtb) - class TestSuite: """A test suite is a composite test consisting of a number of TestCases. @@ -400,7 +389,14 @@ def loadTestsFromName(self, name, module=None): if not parts: raise ValueError, "incomplete test name: %s" % name else: - module = __import__(parts) + parts_copy = parts[:] + while parts_copy: + try: + module = __import__(string.join(parts_copy,'.')) + break + except ImportError: + del parts_copy[-1] + if not parts_copy: raise parts = parts[1:] obj = module for part in parts: @@ -599,7 +595,7 @@ class TestProgram: for making test modules conveniently executable. """ USAGE = """\ -Usage: %(progName)s [options] [test[:(casename|prefix-)]] [...] +Usage: %(progName)s [options] [test] [...] Options: -h, --help Show this message