Commit 20e287ca authored by Michael Foord's avatar Michael Foord

Issue 8302. SkipTest exception is setUpClass or setUpModule is now reported as...

Issue 8302. SkipTest exception is setUpClass or setUpModule is now reported as a skip rather than an error.
parent ab2eb0ee
......@@ -130,9 +130,12 @@ class TestSuite(BaseTestSuite):
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 @@ class TestSuite(BaseTestSuite):
self._handleModuleTearDown(result)
result._moduleSetUpFailed = False
try:
module = sys.modules[currentModule]
......@@ -160,10 +162,18 @@ class TestSuite(BaseTestSuite):
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 @@ class TestSuite(BaseTestSuite):
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 @@ class TestSuite(BaseTestSuite):
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):
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment