##// END OF EJS Templates
Complete implementation of interactive traceback support....
Complete implementation of interactive traceback support. Ever since IPython started, we've had no proper tracebacks for interactively entered code. The terminal version was fairly uncomfortable for more than just a few lines of code, so this was never too big of a deal. But the new architecture allows clients with complex multiline input, and having proper tracebacks becomes now critical for real-world use. Thanks to Robert Kern for key implementation ideas and original patch. Closes gh-177.

File last commit:

r1960:51f38f50
r3175:c94126c2
Show More
test_multiengine.py
55 lines | 1.7 KiB | text/x-python | PythonLexer
# encoding: utf-8
""""""
__docformat__ = "restructuredtext en"
#-----------------------------------------------------------------------------
# Copyright (C) 2008 The IPython Development Team
#
# Distributed under the terms of the BSD License. The full license is in
# the file COPYING, distributed as part of this software.
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------
# Tell nose to skip this module
__test__ = {}
from twisted.internet import defer
from IPython.testing.util import DeferredTestCase
from IPython.kernel.controllerservice import ControllerService
from IPython.kernel import multiengine as me
from IPython.kernel.tests.multienginetest import (IMultiEngineTestCase,
ISynchronousMultiEngineTestCase)
class BasicMultiEngineTestCase(DeferredTestCase, IMultiEngineTestCase):
def setUp(self):
self.controller = ControllerService()
self.controller.startService()
self.multiengine = me.IMultiEngine(self.controller)
self.engines = []
def tearDown(self):
self.controller.stopService()
for e in self.engines:
e.stopService()
class SynchronousMultiEngineTestCase(DeferredTestCase, ISynchronousMultiEngineTestCase):
def setUp(self):
self.controller = ControllerService()
self.controller.startService()
self.multiengine = me.ISynchronousMultiEngine(me.IMultiEngine(self.controller))
self.engines = []
def tearDown(self):
self.controller.stopService()
for e in self.engines:
e.stopService()