##// END OF EJS Templates
replace "Yes, close all" button text with 'Quit'...
replace "Yes, close all" button text with 'Quit' The explanation is already in the body of the message, and the 'close all' is confusing for `%qtconsole` launched consoles, which don't halt their kernels.

File last commit:

r5431:8eb48468
r5716:05cbf58d
Show More
test_irunner_pylab_magic.py
108 lines | 3.5 KiB | text/x-python | PythonLexer
/ IPython / lib / tests / test_irunner_pylab_magic.py
Jens Hedegaard Nielsen
Add irunner test for pylab_import_all.
r4790 """Test suite for pylab_import_all magic
Bernardo B. Marques
remove all trailling spaces
r4872 Modified from the irunner module but using regex.
Jens Hedegaard Nielsen
Add irunner test for pylab_import_all.
r4790 """
# Global to make tests extra verbose and help debugging
VERBOSE = True
# stdlib imports
MinRK
always use StringIO, never cStringIO...
r4794 import StringIO
Jens Hedegaard Nielsen
Add irunner test for pylab_import_all.
r4790 import sys
import unittest
import re
# IPython imports
from IPython.lib import irunner
from IPython.testing import decorators
# Testing code begins
class RunnerTestCase(unittest.TestCase):
def setUp(self):
self.out = StringIO.StringIO()
#self.out = sys.stdout
def _test_runner(self,runner,source,output):
"""Test that a given runner's input/output match."""
Bernardo B. Marques
remove all trailling spaces
r4872
Jens Hedegaard Nielsen
Add irunner test for pylab_import_all.
r4790 runner.run_source(source)
out = self.out.getvalue()
#out = ''
# this output contains nasty \r\n lineends, and the initial ipython
# banner. clean it up for comparison, removing lines of whitespace
output_l = [l for l in output.splitlines() if l and not l.isspace()]
out_l = [l for l in out.splitlines() if l and not l.isspace()]
mismatch = 0
if len(output_l) != len(out_l):
message = ("Mismatch in number of lines\n\n"
"Expected:\n"
"~~~~~~~~~\n"
"%s\n\n"
"Got:\n"
"~~~~~~~~~\n"
"%s"
) % ("\n".join(output_l), "\n".join(out_l))
self.fail(message)
for n in range(len(output_l)):
# Do a line-by-line comparison
ol1 = output_l[n].strip()
ol2 = out_l[n].strip()
if not re.match(ol1,ol2):
mismatch += 1
if VERBOSE:
print '<<< line %s does not match:' % n
print repr(ol1)
print repr(ol2)
print '>>>'
self.assert_(mismatch==0,'Number of mismatched lines: %s' %
mismatch)
@decorators.skipif_not_matplotlib
def test_pylab_import_all_enabled(self):
"Verify that plot is available when pylab_import_all = True"
source = """
from IPython.config.application import Application
app = Application.instance()
app.pylab_import_all = True
pylab
ip=get_ipython()
'plot' in ip.user_ns
"""
output = """
In \[1\]: from IPython\.config\.application import Application
In \[2\]: app = Application\.instance\(\)
In \[3\]: app\.pylab_import_all = True
In \[4\]: pylab
^Welcome to pylab, a matplotlib-based Python environment
For more information, type 'help\(pylab\)'\.
In \[5\]: ip=get_ipython\(\)
In \[6\]: \'plot\' in ip\.user_ns
Out\[6\]: True
"""
runner = irunner.IPythonRunner(out=self.out)
self._test_runner(runner,source,output)
@decorators.skipif_not_matplotlib
def test_pylab_import_all_disabled(self):
"Verify that plot is not available when pylab_import_all = False"
source = """
from IPython.config.application import Application
app = Application.instance()
app.pylab_import_all = False
pylab
ip=get_ipython()
'plot' in ip.user_ns
"""
output = """
In \[1\]: from IPython\.config\.application import Application
In \[2\]: app = Application\.instance\(\)
In \[3\]: app\.pylab_import_all = False
In \[4\]: pylab
^Welcome to pylab, a matplotlib-based Python environment
For more information, type 'help\(pylab\)'\.
In \[5\]: ip=get_ipython\(\)
In \[6\]: \'plot\' in ip\.user_ns
Out\[6\]: False
"""
runner = irunner.IPythonRunner(out=self.out)
self._test_runner(runner,source,output)