def ipyconsole(qtbot, request): """IPython console fixture.""" class MainWindowMock(QMainWindow): def __getattr__(self, attr): if attr == 'consoles_menu_actions': return [] else: return Mock() # Tests assume inline backend CONF.set('ipython_console', 'pylab/backend', 0) # Start in a new working directory the console use_startup_wdir = request.node.get_closest_marker('use_startup_wdir') if use_startup_wdir: new_wdir = osp.join(os.getcwd(), NEW_DIR) if not osp.exists(new_wdir): os.mkdir(new_wdir) CONF.set('workingdir', 'console/use_fixed_directory', True) CONF.set('workingdir', 'console/fixed_directory', new_wdir) # Test the console with a non-ascii temp dir non_ascii_dir = request.node.get_closest_marker('non_ascii_dir') if non_ascii_dir: test_dir = NON_ASCII_DIR else: test_dir = None # Instruct the console to not use a stderr file no_stderr_file = request.node.get_closest_marker('no_stderr_file') if no_stderr_file: test_no_stderr = True else: test_no_stderr = False # Use the automatic backend if requested auto_backend = request.node.get_closest_marker('auto_backend') if auto_backend: CONF.set('ipython_console', 'pylab/backend', 1) # Start a Pylab client if requested pylab_client = request.node.get_closest_marker('pylab_client') is_pylab = True if pylab_client else False # Start a Sympy client if requested sympy_client = request.node.get_closest_marker('sympy_client') is_sympy = True if sympy_client else False # Start a Cython client if requested cython_client = request.node.get_closest_marker('cython_client') is_cython = True if cython_client else False # Create the console and a new client window = MainWindowMock() console = IPythonConsole(parent=window, testing=True, test_dir=test_dir, test_no_stderr=test_no_stderr) console.dockwidget = Mock() console._toggle_view_action = Mock() console.create_new_client(is_pylab=is_pylab, is_sympy=is_sympy, is_cython=is_cython) window.setCentralWidget(console) # Close callback def close_console(): console.closing_plugin() console.close() request.addfinalizer(close_console) qtbot.addWidget(window) window.show() return console
def ipyconsole(qtbot, request): """IPython console fixture.""" class MainWindowMock(QWidget): def __getattr__(self, attr): if attr == 'consoles_menu_actions': return [] else: return Mock() # Tests assume inline backend CONF.set('ipython_console', 'pylab/backend', 0) # Test the console with a non-ascii temp dir non_ascii_dir = request.node.get_marker('non_ascii_dir') if non_ascii_dir: test_dir = NON_ASCII_DIR else: test_dir = None # Instruct the console to not use a stderr file no_stderr_file = request.node.get_marker('no_stderr_file') if no_stderr_file: test_no_stderr = True else: test_no_stderr = False # Use the automatic backend if requested auto_backend = request.node.get_marker('auto_backend') if auto_backend: CONF.set('ipython_console', 'pylab/backend', 1) # Start a Pylab client if requested pylab_client = request.node.get_marker('pylab_client') is_pylab = True if pylab_client else False # Start a Sympy client if requested sympy_client = request.node.get_marker('sympy_client') is_sympy = True if sympy_client else False # Start a Cython client if requested cython_client = request.node.get_marker('cython_client') is_cython = True if cython_client else False # Create the console and a new client console = IPythonConsole(parent=MainWindowMock(), test_dir=test_dir, test_no_stderr=test_no_stderr) console.dockwidget = Mock() console.create_new_client(is_pylab=is_pylab, is_sympy=is_sympy, is_cython=is_cython) # Close callback def close_console(): console.closing_plugin() console.close() request.addfinalizer(close_console) qtbot.addWidget(console) console.show() return console