##// END OF EJS Templates
Add tests for object inspector with magics of all types.
Fernando Perez -
Show More
@@ -20,6 +20,10 b' import nose.tools as nt'
20 20
21 21 # Our own imports
22 22 from .. import oinspect
23 from IPython.core.magic import (Magics, magics_class, line_magic,
24 cell_magic, line_cell_magic,
25 register_line_magic, register_cell_magic,
26 register_line_cell_magic)
23 27 from IPython.utils import py3compat
24 28
25 29 #-----------------------------------------------------------------------------
@@ -27,6 +31,7 b' from IPython.utils import py3compat'
27 31 #-----------------------------------------------------------------------------
28 32
29 33 inspector = oinspect.Inspector()
34 ip = get_ipython()
30 35
31 36 #-----------------------------------------------------------------------------
32 37 # Local utilities
@@ -46,17 +51,50 b' class Call(object):'
46 51 def method(self, x, z=2):
47 52 """Some method's docstring"""
48 53
54
49 55 class OldStyle:
50 56 """An old-style class for testing."""
51 57 pass
52 58
59
53 60 def f(x, y=2, *a, **kw):
54 61 """A simple function."""
55 62
63
56 64 def g(y, z=3, *a, **kw):
57 65 pass # no docstring
58 66
59 67
68 @register_line_magic
69 def lmagic(line):
70 "A line magic"
71
72
73 @register_cell_magic
74 def cmagic(line, cell):
75 "A cell magic"
76
77
78 @register_line_cell_magic
79 def lcmagic(line, cell=None):
80 "A line/cell magic"
81
82
83 @magics_class
84 class SimpleMagics(Magics):
85 @line_magic
86 def Clmagic(self, cline):
87 "A class-based line magic"
88
89 @cell_magic
90 def Ccmagic(self, cline, ccell):
91 "A class-based cell magic"
92
93 @line_cell_magic
94 def Clcmagic(self, cline, ccell=None):
95 "A class-based line/cell magic"
96
97
60 98 def check_calltip(obj, name, call, docstring):
61 99 """Generic check pattern all calltip tests will use"""
62 100 info = inspector.info(obj, name)
@@ -93,6 +131,31 b' def test_calltip_function2():'
93 131 def test_calltip_builtin():
94 132 check_calltip(sum, 'sum', None, sum.__doc__)
95 133
134
135 def test_calltip_line_magic():
136 check_calltip(lmagic, 'lmagic', 'lmagic(line)', "A line magic")
137
138
139 def test_calltip_cell_magic():
140 check_calltip(cmagic, 'cmagic', 'cmagic(line, cell)', "A cell magic")
141
142
143 def test_calltip_line_magic():
144 check_calltip(lcmagic, 'lcmagic', 'lcmagic(line, cell=None)',
145 "A line/cell magic")
146
147
148 def test_class_magics():
149 cm = SimpleMagics(ip)
150 ip.register_magics(cm)
151 check_calltip(cm.Clmagic, 'Clmagic', 'Clmagic(cline)',
152 "A class-based line magic")
153 check_calltip(cm.Ccmagic, 'Ccmagic', 'Ccmagic(cline, ccell)',
154 "A class-based cell magic")
155 check_calltip(cm.Clcmagic, 'Clcmagic', 'Clcmagic(cline, ccell=None)',
156 "A class-based line/cell magic")
157
158
96 159 def test_info():
97 160 "Check that Inspector.info fills out various fields as expected."
98 161 i = inspector.info(Call, oname='Call')
General Comments 0
You need to be logged in to leave comments. Login now