[Python-checkins] r81760 - python/trunk/Lib/unittest/suite.py
michael.foord
python-checkins at python.org
Sat Jun 5 21:38:42 CEST 2010
Author: michael.foord
Date: Sat Jun 5 21:38:42 2010
New Revision: 81760
Log:
Issue 8302. SkipTest exception is setUpClass or setUpModule is now reported as a skip rather than an error.
Modified:
python/trunk/Lib/unittest/suite.py
Modified: python/trunk/Lib/unittest/suite.py
==============================================================================
--- python/trunk/Lib/unittest/suite.py (original)
+++ python/trunk/Lib/unittest/suite.py Sat Jun 5 21:38:42 2010
@@ -130,9 +130,12 @@
if setUpClass is not None:
try:
setUpClass()
- except:
+ except Exception as e:
currentClass._classSetupFailed = True
- self._addClassSetUpError(result, currentClass)
+ className = util.strclass(currentClass)
+ errorName = 'classSetUp (%s)' % className
+ self._addClassOrModuleLevelException(result, e, errorName)
+
def _get_previous_module(self, result):
previousModule = None
@@ -150,7 +153,6 @@
self._handleModuleTearDown(result)
-
result._moduleSetUpFailed = False
try:
module = sys.modules[currentModule]
@@ -160,10 +162,18 @@
if setUpModule is not None:
try:
setUpModule()
- except:
+ except Exception, e:
result._moduleSetUpFailed = True
- error = _ErrorHolder('setUpModule (%s)' % currentModule)
- result.addError(error, sys.exc_info())
+ errorName = 'setUpModule (%s)' % currentModule
+ self._addClassOrModuleLevelException(result, e, errorName)
+
+ def _addClassOrModuleLevelException(self, result, exception, errorName):
+ error = _ErrorHolder(errorName)
+ addSkip = getattr(result, 'addSkip', None)
+ if addSkip is not None and isinstance(exception, case.SkipTest):
+ addSkip(error, str(exception))
+ else:
+ result.addError(error, sys.exc_info())
def _handleModuleTearDown(self, result):
previousModule = self._get_previous_module(result)
@@ -181,9 +191,9 @@
if tearDownModule is not None:
try:
tearDownModule()
- except:
- error = _ErrorHolder('tearDownModule (%s)' % previousModule)
- result.addError(error, sys.exc_info())
+ except Exception as e:
+ errorName = 'tearDownModule (%s)' % previousModule
+ self._addClassOrModuleLevelException(result, e, errorName)
def _tearDownPreviousClass(self, test, result):
previousClass = getattr(result, '_previousTestClass', None)
@@ -201,18 +211,10 @@
if tearDownClass is not None:
try:
tearDownClass()
- except:
- self._addClassTearDownError(result)
-
- def _addClassTearDownError(self, result):
- className = util.strclass(result._previousTestClass)
- error = _ErrorHolder('classTearDown (%s)' % className)
- result.addError(error, sys.exc_info())
-
- def _addClassSetUpError(self, result, klass):
- className = util.strclass(klass)
- error = _ErrorHolder('classSetUp (%s)' % className)
- result.addError(error, sys.exc_info())
+ except Exception, e:
+ className = util.strclass(previousClass)
+ errorName = 'classTearDown (%s)' % className
+ self._addClassOrModuleLevelException(result, e, errorName)
class _ErrorHolder(object):
More information about the Python-checkins
mailing list