##// END OF EJS Templates
Display the length of the input history and the position of the...
Display the length of the input history and the position of the cursor in the input history for the find, findbackwards and goto command.

File last commit:

r302:36826fc8
r327:a1b1e4ed
Show More
test_irunner.py
156 lines | 3.1 KiB | text/x-python | PythonLexer
#!/usr/bin/env python
"""Test suite for the irunner module.
Not the most elegant or fine-grained, but it does cover at least the bulk
functionality."""
# Global to make tests extra verbose and help debugging
VERBOSE = True
# stdlib imports
import cStringIO as StringIO
import unittest
# IPython imports
from IPython import irunner
from IPython.OutputTrap import OutputTrap
# Testing code begins
class RunnerTestCase(unittest.TestCase):
def _test_runner(self,runner,source,output):
"""Test that a given runner's input/output match."""
log = OutputTrap(out_head='',quiet_out=True)
log.trap_out()
runner.run_source(source)
log.release_out()
out = log.summary_out()
# this output contains nasty \r\n lineends, and the initial ipython
# banner. clean it up for comparison
output_l = output.split()
out_l = out.split()
mismatch = 0
for n in range(len(output_l)):
ol1 = output_l[n].strip()
ol2 = out_l[n].strip()
if 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)
def testIPython(self):
"""Test the IPython runner."""
source = """
print 'hello, this is python'
# some more code
x=1;y=2
x+y**2
# An example of autocall functionality
from math import *
autocall 1
cos pi
autocall 0
cos pi
cos(pi)
for i in range(5):
print i,
print "that's all folks!"
%Exit
"""
output = """\
In [1]: print 'hello, this is python'
hello, this is python
In [2]: # some more code
In [3]: x=1;y=2
In [4]: x+y**2
Out[4]: 5
In [5]: # An example of autocall functionality
In [6]: from math import *
In [7]: autocall 1
Automatic calling is: Smart
In [8]: cos pi
------> cos(pi)
Out[8]: -1.0
In [9]: autocall 0
Automatic calling is: OFF
In [10]: cos pi
------------------------------------------------------------
File "<ipython console>", line 1
cos pi
^
SyntaxError: invalid syntax
In [11]: cos(pi)
Out[11]: -1.0
In [12]: for i in range(5):
....: print i,
....:
0 1 2 3 4
In [13]: print "that's all folks!"
that's all folks!
In [14]: %Exit"""
runner = irunner.IPythonRunner()
self._test_runner(runner,source,output)
def testPython(self):
"""Test the Python runner."""
runner = irunner.PythonRunner()
source = """
print 'hello, this is python'
# some more code
x=1;y=2
x+y**2
from math import *
cos(pi)
for i in range(5):
print i,
print "that's all folks!"
"""
output = """\
>>> print 'hello, this is python'
hello, this is python
>>> # some more code
... x=1;y=2
>>> x+y**2
5
>>> from math import *
>>> cos(pi)
-1.0
>>> for i in range(5):
... print i,
...
0 1 2 3 4
>>> print "that's all folks!"
that's all folks!"""
self._test_runner(runner,source,output)
if __name__ == '__main__':
unittest.main()