def test_errbackWithNoArgsNoDebug(self):
"""
C{Deferred.errback()} creates a failure from the current Python
exception. When Deferred.debug is not set no globals or locals are
captured in that failure.
"""
defer.setDebugging(False)
d = defer.Deferred()
l = []
exc = GenericError("Bang")
try:
raise exc
except:
d.errback()
d.addErrback(l.append)
fail = l[0]
self.assertEqual(fail.value, exc)
localz, globalz = fail.frames[0][-2:]
self.assertEqual([], localz)
self.assertEqual([], globalz)
python类setDebugging()的实例源码
def test_errbackWithNoArgs(self):
"""
C{Deferred.errback()} creates a failure from the current Python
exception. When Deferred.debug is set globals and locals are captured
in that failure.
"""
defer.setDebugging(True)
d = defer.Deferred()
l = []
exc = GenericError("Bang")
try:
raise exc
except:
d.errback()
d.addErrback(l.append)
fail = l[0]
self.assertEqual(fail.value, exc)
localz, globalz = fail.frames[0][-2:]
self.assertNotEqual([], localz)
self.assertNotEqual([], globalz)
def test_errorInCallbackCapturesVarsWhenDebugging(self):
"""
An error raised by a callback creates a Failure. The Failure captures
locals and globals if and only if C{Deferred.debug} is set.
"""
d = defer.Deferred()
d.callback(None)
defer.setDebugging(True)
def raiseError(ignored):
raise GenericError("Bang")
d.addCallback(raiseError)
l = []
d.addErrback(l.append)
fail = l[0]
localz, globalz = fail.frames[0][-2:]
self.assertNotEqual([], localz)
self.assertNotEqual([], globalz)
def _initialDebugSetup(config):
# do this part of debug setup first for easy debugging of import failures
if config['debug']:
failure.startDebugMode()
if config['debug'] or config['debug-stacktraces']:
defer.setDebugging(True)
def opt_debug(self):
"""
run the application in the Python Debugger (implies nodaemon),
sending SIGUSR2 will drop into debugger
"""
defer.setDebugging(True)
failure.startDebugMode()
self['debug'] = True
def setUp(self):
self._deferredWasDebugging = defer.getDebugging()
defer.setDebugging(True)
def tearDown(self):
defer.setDebugging(self._deferredWasDebugging)
def testNoDebugging(self):
defer.setDebugging(False)
d = defer.Deferred()
d.addCallbacks(self._callback, self._errback)
self._call_1(d)
try:
self._call_2(d)
except defer.AlreadyCalledError, e:
self.failIf(e.args)
else:
self.fail("second callback failed to raise AlreadyCalledError")
def _initialDebugSetup(config):
# do this part of debug setup first for easy debugging of import failures
if config['debug']:
failure.startDebugMode()
if config['debug'] or config['debug-stacktraces']:
defer.setDebugging(True)
def opt_debug(self):
"""
run the application in the Python Debugger (implies nodaemon),
sending SIGUSR2 will drop into debugger
"""
defer.setDebugging(True)
failure.startDebugMode()
self['debug'] = True
def setUp(self):
self._deferredWasDebugging = defer.getDebugging()
defer.setDebugging(True)
def tearDown(self):
defer.setDebugging(self._deferredWasDebugging)
def testNoDebugging(self):
defer.setDebugging(False)
d = defer.Deferred()
d.addCallbacks(self._callback, self._errback)
self._call_1(d)
try:
self._call_2(d)
except defer.AlreadyCalledError, e:
self.failIf(e.args)
else:
self.fail("second callback failed to raise AlreadyCalledError")
def _initialDebugSetup(config):
# do this part of debug setup first for easy debugging of import failures
if config['debug']:
failure.startDebugMode()
if config['debug'] or config['debug-stacktraces']:
defer.setDebugging(True)
def opt_debug(self):
"""
Run the application in the Python Debugger (implies nodaemon),
sending SIGUSR2 will drop into debugger
"""
defer.setDebugging(True)
failure.startDebugMode()
self['debug'] = True
def setUp(self):
self.callbackResults = None
self.errbackResults = None
self.callback2Results = None
# Restore the debug flag to its original state when done.
self.addCleanup(defer.setDebugging, defer.getDebugging())
def setUp(self):
self._deferredWasDebugging = defer.getDebugging()
defer.setDebugging(True)
def tearDown(self):
defer.setDebugging(self._deferredWasDebugging)
def testNoDebugging(self):
defer.setDebugging(False)
d = defer.Deferred()
d.addCallbacks(self._callback, self._errback)
self._call_1(d)
try:
self._call_2(d)
except defer.AlreadyCalledError as e:
self.assertFalse(e.args)
else:
self.fail("second callback failed to raise AlreadyCalledError")
def testSwitchDebugging(self):
# Make sure Deferreds can deal with debug state flipping
# around randomly. This is covering a particular fixed bug.
defer.setDebugging(False)
d = defer.Deferred()
d.addBoth(lambda ign: None)
defer.setDebugging(True)
d.callback(None)
defer.setDebugging(False)
d = defer.Deferred()
d.callback(None)
defer.setDebugging(True)
d.addBoth(lambda ign: None)
def main(utility):
args = _parse_args(utility)
if args.debug:
log.setLevel(level=logging.DEBUG)
defer.setDebugging(True)
if args.config:
config = _parse_config_file(args.config, utility)
else:
config = _adapt_args_to_config(args, utility)
reactor.callWhenRunning(utility.tx_main, args, config)
reactor.run()
sys.exit(_exit_status)