def _handleClassSetUp(self, test, result): previousClass = getattr(result, '_previousTestClass', None) currentClass = test.__class__ if currentClass == previousClass: return if result._moduleSetUpFailed: return if getattr(currentClass, "__unittest_skip__", False): return try: currentClass._classSetupFailed = False except TypeError: # test may actually be a function # so its class will be a builtin-type pass setUpClass = getattr(currentClass, 'setUpClass', None) if setUpClass is not None: _call_if_exists(result, '_setupStdout') try: deferred = setUpClass() if isiterable(deferred): yield from deferred except Exception as e: if isinstance(result, _DebugResult): raise currentClass._classSetupFailed = True className = util.strclass(currentClass) errorName = 'setUpClass (%s)' % className self._addClassOrModuleLevelException(result, e, errorName) finally: _call_if_exists(result, '_restoreStdout')
def _tearDownPreviousClass(self, test, result): previousClass = getattr(result, '_previousTestClass', None) currentClass = test.__class__ if currentClass == previousClass: return if getattr(previousClass, '_classSetupFailed', False): return if getattr(result, '_moduleSetUpFailed', False): return if getattr(previousClass, "__unittest_skip__", False): return tearDownClass = getattr(previousClass, 'tearDownClass', None) if tearDownClass is not None: _call_if_exists(result, '_setupStdout') try: deferred = tearDownClass() if isiterable(deferred): yield from deferred except Exception as e: if isinstance(result, _DebugResult): raise className = util.strclass(previousClass) errorName = 'tearDownClass (%s)' % className self._addClassOrModuleLevelException(result, e, errorName) finally: _call_if_exists(result, '_restoreStdout')
def _handleClassSetUpPost38( self, test, result): # pragma: no cover -- because it's just like *Pre38 previousClass = getattr(result, "_previousTestClass", None) currentClass = test.__class__ if currentClass == previousClass: return if result._moduleSetUpFailed: return if getattr(currentClass, "__unittest_skip__", False): return try: currentClass._classSetupFailed = False except TypeError: # test may actually be a function # so its class will be a builtin-type pass setUpClass = getattr(currentClass, "setUpClass", None) if setUpClass is not None: _call_if_exists(result, "_setupStdout") try: setUpClass() # Upstream Python forgets to take SkipTest into account except unittest.case.SkipTest as e: currentClass.__unittest_skip__ = True currentClass.__unittest_skip_why__ = str(e) # -- END of fix except Exception as e: if isinstance(result, _DebugResult): raise currentClass._classSetupFailed = True className = util.strclass(currentClass) self._createClassOrModuleLevelException( result, e, "setUpClass", className) finally: _call_if_exists(result, "_restoreStdout") if currentClass._classSetupFailed is True: currentClass.doClassCleanups() if len(currentClass.tearDown_exceptions) > 0: for exc in currentClass.tearDown_exceptions: self._createClassOrModuleLevelException( result, exc[1], "setUpClass", className, info=exc)
def _tearDownPreviousClass(self, test, result): previousClass = getattr(result, '_previousTestClass', None) currentClass = test.__class__ if currentClass == previousClass: return if getattr(previousClass, '_classSetupFailed', False): return if getattr(result, '_moduleSetUpFailed', False): return if getattr(previousClass, "__unittest_skip__", False): return tearDownClass = getattr(previousClass, 'tearDownClass', None) if tearDownClass is not None: _call_if_exists(result, '_setupStdout') try: deferred = tearDownClass() if isiterable(deferred): yield from deferred except Exception as e: if isinstance(result, _DebugResult): raise className = util.strclass(previousClass) self._createClassOrModuleLevelException( result, e, 'tearDownClass', className) finally: _call_if_exists(result, '_restoreStdout') deferred = previousClass.doClassCleanups() if isiterable(deferred): yield from deferred if len(previousClass.tearDown_exceptions) > 0: for exc in previousClass.tearDown_exceptions: className = util.strclass(previousClass) self._createClassOrModuleLevelException( result, exc[1], 'tearDownClass', className, info=exc)
def _handleClassSetUpPre38(self, test, result): # pragma: nocover previousClass = getattr(result, "_previousTestClass", None) currentClass = test.__class__ if currentClass == previousClass: return if result._moduleSetUpFailed: return if getattr(currentClass, "__unittest_skip__", False): # pragma: no cover return try: currentClass._classSetupFailed = False except TypeError: # pragma: no cover # test may actually be a function # so its class will be a builtin-type pass setUpClass = getattr(currentClass, "setUpClass", None) if setUpClass is not None: _call_if_exists(result, "_setupStdout") try: setUpClass() # Upstream Python forgets to take SkipTest into account except unittest.case.SkipTest as e: currentClass.__unittest_skip__ = True currentClass.__unittest_skip_why__ = str(e) # -- END of fix except Exception as e: # pragma: no cover if isinstance(result, _DebugResult): raise currentClass._classSetupFailed = True className = util.strclass(currentClass) errorName = "setUpClass (%s)" % className self._addClassOrModuleLevelException(result, e, errorName) finally: _call_if_exists(result, "_restoreStdout")
def _handleClassSetUp(self, test, result): previousClass = getattr(result, '_previousTestClass', None) currentClass = test.__class__ if currentClass == previousClass: return if result._moduleSetUpFailed: return if getattr(currentClass, "__unittest_skip__", False): # pragma: no cover return try: currentClass._classSetupFailed = False except TypeError: # pragma: no cover # test may actually be a function # so its class will be a builtin-type pass setUpClass = getattr(currentClass, 'setUpClass', None) if setUpClass is not None: _call_if_exists(result, '_setupStdout') try: setUpClass() # THIS is the part Python forgot to implement -- so Green will except unittest.case.SkipTest as e: currentClass.__unittest_skip__ = True currentClass.__unittest_skip_why__ = str(e) # -- END of fix except Exception as e: # pragma: no cover if isinstance(result, _DebugResult): raise currentClass._classSetupFailed = True className = util.strclass(currentClass) errorName = 'setUpClass (%s)' % className self._addClassOrModuleLevelException(result, e, errorName) finally: _call_if_exists(result, '_restoreStdout')