##// END OF EJS Templates
Update the main documentation with new magics API....
Update the main documentation with new magics API. Added detailed description to the docs, as well as comprehensive examples of magic creation with the new APIs.

File last commit:

r5915:2a7b50f1
r7009:0876e92f
Show More
test_irunner_pylab_magic.py
118 lines | 3.8 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
Thomas Spura
Skip tests that require X, when importing pylab results in RuntimeError....
r5844 def pylab_not_importable():
"""Test if importing pylab fails with RuntimeError (true when having no display)"""
try:
import pylab
return False
except RuntimeError:
return True
Jens Hedegaard Nielsen
Add irunner test for pylab_import_all.
r4790 # 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
Thomas Kluyver
Fix for skipping tests when matplotlib not available.
r5915 @decorators.skipif(pylab_not_importable, "Likely a run without X.")
Jens Hedegaard Nielsen
Add irunner test for pylab_import_all.
r4790 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
Thomas Kluyver
Fix for skipping tests when matplotlib not available.
r5915 @decorators.skipif(pylab_not_importable, "Likely a run without X.")
Jens Hedegaard Nielsen
Add irunner test for pylab_import_all.
r4790 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)