##// END OF EJS Templates
Remove uses of @parametric decorator
Thomas Kluyver -
Show More
@@ -6,12 +6,11 b''
6 # The full license is in the file COPYING.txt, distributed with this software.
6 # The full license is in the file COPYING.txt, distributed with this software.
7 #-----------------------------------------------------------------------------
7 #-----------------------------------------------------------------------------
8
8
9 from nose.tools import assert_equal, assert_true
9 from nose.tools import assert_equal
10
10
11 from IPython.external import argparse
11 from IPython.external import argparse
12 from IPython.core.magic_arguments import (argument, argument_group, kwds,
12 from IPython.core.magic_arguments import (argument, argument_group, kwds,
13 magic_arguments, parse_argstring, real_name)
13 magic_arguments, parse_argstring, real_name)
14 from IPython.testing.decorators import parametric
15
14
16
15
17 @magic_arguments()
16 @magic_arguments()
@@ -74,48 +73,46 b' def foo(self, args):'
74 return parse_argstring(foo, args)
73 return parse_argstring(foo, args)
75
74
76
75
77 @parametric
78 def test_magic_arguments():
76 def test_magic_arguments():
79 # Ideally, these would be doctests, but I could not get it to work.
77 assert_equal(magic_foo1.__doc__, '%foo1 [-f FOO]\n\n A docstring.\n\noptional arguments:\n -f FOO, --foo FOO an argument\n')
80 yield assert_equal(magic_foo1.__doc__, '%foo1 [-f FOO]\n\n A docstring.\n\noptional arguments:\n -f FOO, --foo FOO an argument\n')
78 assert_equal(getattr(magic_foo1, 'argcmd_name', None), None)
81 yield assert_equal(getattr(magic_foo1, 'argcmd_name', None), None)
79 assert_equal(real_name(magic_foo1), 'foo1')
82 yield assert_equal(real_name(magic_foo1), 'foo1')
80 assert_equal(magic_foo1(None, ''), argparse.Namespace(foo=None))
83 yield assert_equal(magic_foo1(None, ''), argparse.Namespace(foo=None))
81 assert hasattr(magic_foo1, 'has_arguments')
84 yield assert_true(hasattr(magic_foo1, 'has_arguments'))
82
85
83 assert_equal(magic_foo2.__doc__, '%foo2\n\n A docstring.\n')
86 yield assert_equal(magic_foo2.__doc__, '%foo2\n\n A docstring.\n')
84 assert_equal(getattr(magic_foo2, 'argcmd_name', None), None)
87 yield assert_equal(getattr(magic_foo2, 'argcmd_name', None), None)
85 assert_equal(real_name(magic_foo2), 'foo2')
88 yield assert_equal(real_name(magic_foo2), 'foo2')
86 assert_equal(magic_foo2(None, ''), argparse.Namespace())
89 yield assert_equal(magic_foo2(None, ''), argparse.Namespace())
87 assert hasattr(magic_foo2, 'has_arguments')
90 yield assert_true(hasattr(magic_foo2, 'has_arguments'))
88
91
89 assert_equal(magic_foo3.__doc__, '%foo3 [-f FOO] [-b BAR] [-z BAZ]\n\n A docstring.\n\noptional arguments:\n -f FOO, --foo FOO an argument\n\nGroup:\n -b BAR, --bar BAR a grouped argument\n\nSecond Group:\n -z BAZ, --baz BAZ another grouped argument\n')
92 yield assert_equal(magic_foo3.__doc__, '%foo3 [-f FOO] [-b BAR] [-z BAZ]\n\n A docstring.\n\noptional arguments:\n -f FOO, --foo FOO an argument\n\nGroup:\n -b BAR, --bar BAR a grouped argument\n\nSecond Group:\n -z BAZ, --baz BAZ another grouped argument\n')
90 assert_equal(getattr(magic_foo3, 'argcmd_name', None), None)
93 yield assert_equal(getattr(magic_foo3, 'argcmd_name', None), None)
91 assert_equal(real_name(magic_foo3), 'foo3')
94 yield assert_equal(real_name(magic_foo3), 'foo3')
92 assert_equal(magic_foo3(None, ''),
95 yield assert_equal(magic_foo3(None, ''),
96 argparse.Namespace(bar=None, baz=None, foo=None))
93 argparse.Namespace(bar=None, baz=None, foo=None))
97 yield assert_true(hasattr(magic_foo3, 'has_arguments'))
94 assert hasattr(magic_foo3, 'has_arguments')
98
95
99 yield assert_equal(magic_foo4.__doc__, '%foo4 [-f FOO]\n\n A docstring.\n\noptional arguments:\n -f FOO, --foo FOO an argument\n')
96 assert_equal(magic_foo4.__doc__, '%foo4 [-f FOO]\n\n A docstring.\n\noptional arguments:\n -f FOO, --foo FOO an argument\n')
100 yield assert_equal(getattr(magic_foo4, 'argcmd_name', None), None)
97 assert_equal(getattr(magic_foo4, 'argcmd_name', None), None)
101 yield assert_equal(real_name(magic_foo4), 'foo4')
98 assert_equal(real_name(magic_foo4), 'foo4')
102 yield assert_equal(magic_foo4(None, ''), argparse.Namespace())
99 assert_equal(magic_foo4(None, ''), argparse.Namespace())
103 yield assert_true(hasattr(magic_foo4, 'has_arguments'))
100 assert hasattr(magic_foo4, 'has_arguments')
104
101
105 yield assert_equal(magic_foo5.__doc__, '%frobnicate [-f FOO]\n\n A docstring.\n\noptional arguments:\n -f FOO, --foo FOO an argument\n')
102 assert_equal(magic_foo5.__doc__, '%frobnicate [-f FOO]\n\n A docstring.\n\noptional arguments:\n -f FOO, --foo FOO an argument\n')
106 yield assert_equal(getattr(magic_foo5, 'argcmd_name', None), 'frobnicate')
103 assert_equal(getattr(magic_foo5, 'argcmd_name', None), 'frobnicate')
107 yield assert_equal(real_name(magic_foo5), 'frobnicate')
104 assert_equal(real_name(magic_foo5), 'frobnicate')
108 yield assert_equal(magic_foo5(None, ''), argparse.Namespace(foo=None))
105 assert_equal(magic_foo5(None, ''), argparse.Namespace(foo=None))
109 yield assert_true(hasattr(magic_foo5, 'has_arguments'))
106 assert hasattr(magic_foo5, 'has_arguments')
110
107
111 yield assert_equal(magic_magic_foo.__doc__, '%magic_foo [-f FOO]\n\n A docstring.\n\noptional arguments:\n -f FOO, --foo FOO an argument\n')
108 assert_equal(magic_magic_foo.__doc__, '%magic_foo [-f FOO]\n\n A docstring.\n\noptional arguments:\n -f FOO, --foo FOO an argument\n')
112 yield assert_equal(getattr(magic_magic_foo, 'argcmd_name', None), None)
109 assert_equal(getattr(magic_magic_foo, 'argcmd_name', None), None)
113 yield assert_equal(real_name(magic_magic_foo), 'magic_foo')
110 assert_equal(real_name(magic_magic_foo), 'magic_foo')
114 yield assert_equal(magic_magic_foo(None, ''), argparse.Namespace(foo=None))
111 assert_equal(magic_magic_foo(None, ''), argparse.Namespace(foo=None))
115 yield assert_true(hasattr(magic_magic_foo, 'has_arguments'))
112 assert hasattr(magic_magic_foo, 'has_arguments')
116
113
117 yield assert_equal(foo.__doc__, '%foo [-f FOO]\n\n A docstring.\n\noptional arguments:\n -f FOO, --foo FOO an argument\n')
114 assert_equal(foo.__doc__, '%foo [-f FOO]\n\n A docstring.\n\noptional arguments:\n -f FOO, --foo FOO an argument\n')
118 yield assert_equal(getattr(foo, 'argcmd_name', None), None)
115 assert_equal(getattr(foo, 'argcmd_name', None), None)
119 yield assert_equal(real_name(foo), 'foo')
116 assert_equal(real_name(foo), 'foo')
120 yield assert_equal(foo(None, ''), argparse.Namespace(foo=None))
117 assert_equal(foo(None, ''), argparse.Namespace(foo=None))
121 yield assert_true(hasattr(foo, 'has_arguments'))
118 assert hasattr(foo, 'has_arguments')
@@ -14,7 +14,6 b' from IPython.testing.globalipapp import get_ipython'
14 #-----------------------------------------------------------------------------
14 #-----------------------------------------------------------------------------
15 ip = get_ipython()
15 ip = get_ipython()
16
16
17 @dec.parametric
18 def test_prefilter():
17 def test_prefilter():
19 """Test user input conversions"""
18 """Test user input conversions"""
20
19
@@ -23,19 +22,18 b' def test_prefilter():'
23 ]
22 ]
24
23
25 for raw, correct in pairs:
24 for raw, correct in pairs:
26 yield nt.assert_equal(ip.prefilter(raw), correct)
25 nt.assert_equal(ip.prefilter(raw), correct)
27
26
28
27
29 @dec.parametric
30 def test_autocall_binops():
28 def test_autocall_binops():
31 """See https://github.com/ipython/ipython/issues/81"""
29 """See https://github.com/ipython/ipython/issues/81"""
32 ip.magic('autocall 2')
30 ip.magic('autocall 2')
33 f = lambda x: x
31 f = lambda x: x
34 ip.user_ns['f'] = f
32 ip.user_ns['f'] = f
35 try:
33 try:
36 yield nt.assert_equal(ip.prefilter('f 1'),'f(1)')
34 nt.assert_equal(ip.prefilter('f 1'),'f(1)')
37 for t in ['f +1', 'f -1']:
35 for t in ['f +1', 'f -1']:
38 yield nt.assert_equal(ip.prefilter(t), t)
36 nt.assert_equal(ip.prefilter(t), t)
39
37
40 # Run tests again with a more permissive exclude_regexp, which will
38 # Run tests again with a more permissive exclude_regexp, which will
41 # allow transformation of binary operations ('f -1' -> 'f(-1)').
39 # allow transformation of binary operations ('f -1' -> 'f(-1)').
@@ -47,8 +45,8 b' def test_autocall_binops():'
47 ac.exclude_regexp = r'^[,&^\|\*/]|^is |^not |^in |^and |^or '
45 ac.exclude_regexp = r'^[,&^\|\*/]|^is |^not |^in |^and |^or '
48 pm.sort_checkers()
46 pm.sort_checkers()
49
47
50 yield nt.assert_equal(ip.prefilter('f -1'), 'f(-1)')
48 nt.assert_equal(ip.prefilter('f -1'), 'f(-1)')
51 yield nt.assert_equal(ip.prefilter('f +1'), 'f(+1)')
49 nt.assert_equal(ip.prefilter('f +1'), 'f(+1)')
52 finally:
50 finally:
53 pm.unregister_checker(ac)
51 pm.unregister_checker(ac)
54 finally:
52 finally:
@@ -56,7 +54,6 b' def test_autocall_binops():'
56 del ip.user_ns['f']
54 del ip.user_ns['f']
57
55
58
56
59 @dec.parametric
60 def test_issue_114():
57 def test_issue_114():
61 """Check that multiline string literals don't expand as magic
58 """Check that multiline string literals don't expand as magic
62 see http://github.com/ipython/ipython/issues/114"""
59 see http://github.com/ipython/ipython/issues/114"""
@@ -70,7 +67,7 b' def test_issue_114():'
70 try:
67 try:
71 for mgk in ip.magics_manager.lsmagic()['line']:
68 for mgk in ip.magics_manager.lsmagic()['line']:
72 raw = template % mgk
69 raw = template % mgk
73 yield nt.assert_equal(ip.prefilter(raw), raw)
70 nt.assert_equal(ip.prefilter(raw), raw)
74 finally:
71 finally:
75 ip.prefilter_manager.multi_line_specials = msp
72 ip.prefilter_manager.multi_line_specials = msp
76
73
@@ -24,7 +24,6 b' import numpy as np'
24
24
25 # Our own imports
25 # Our own imports
26 from IPython.core.interactiveshell import InteractiveShell
26 from IPython.core.interactiveshell import InteractiveShell
27 from IPython.testing import decorators as dec
28 from .. import pylabtools as pt
27 from .. import pylabtools as pt
29
28
30 #-----------------------------------------------------------------------------
29 #-----------------------------------------------------------------------------
@@ -39,11 +38,10 b' from .. import pylabtools as pt'
39 # Classes and functions
38 # Classes and functions
40 #-----------------------------------------------------------------------------
39 #-----------------------------------------------------------------------------
41
40
42 @dec.parametric
43 def test_figure_to_svg():
41 def test_figure_to_svg():
44 # simple empty-figure test
42 # simple empty-figure test
45 fig = plt.figure()
43 fig = plt.figure()
46 yield nt.assert_equal(pt.print_figure(fig, 'svg'), None)
44 nt.assert_equal(pt.print_figure(fig, 'svg'), None)
47
45
48 plt.close('all')
46 plt.close('all')
49
47
@@ -53,7 +51,7 b' def test_figure_to_svg():'
53 ax.plot([1,2,3])
51 ax.plot([1,2,3])
54 plt.draw()
52 plt.draw()
55 svg = pt.print_figure(fig, 'svg')[:100].lower()
53 svg = pt.print_figure(fig, 'svg')[:100].lower()
56 yield nt.assert_true('doctype svg' in svg)
54 nt.assert_in('doctype svg', svg)
57
55
58
56
59 def test_import_pylab():
57 def test_import_pylab():
@@ -27,7 +27,6 b' from IPython.kernel.launcher import swallow_argv'
27 # Classes and functions
27 # Classes and functions
28 #-----------------------------------------------------------------------------
28 #-----------------------------------------------------------------------------
29
29
30 @dec.parametric
31 def test_swallow_argv():
30 def test_swallow_argv():
32 tests = [
31 tests = [
33 # expected , argv , aliases, flags
32 # expected , argv , aliases, flags
@@ -56,5 +55,5 b' def test_swallow_argv():'
56 "expected : %r" % expected,
55 "expected : %r" % expected,
57 "returned : %r" % stripped,
56 "returned : %r" % stripped,
58 ])
57 ])
59 yield nt.assert_equal(expected, stripped, message)
58 nt.assert_equal(expected, stripped, message)
60
59
@@ -15,7 +15,6 b' import nose.tools as nt'
15
15
16 from IPython.kernel import KernelManager
16 from IPython.kernel import KernelManager
17
17
18 from IPython.testing import decorators as dec
19 from IPython.utils.traitlets import (
18 from IPython.utils.traitlets import (
20 HasTraits, TraitError, Bool, Unicode, Dict, Integer, List, Enum, Any,
19 HasTraits, TraitError, Bool, Unicode, Dict, Integer, List, Enum, Any,
21 )
20 )
@@ -101,14 +100,14 b' class Reference(HasTraits):'
101 def check(self, d):
100 def check(self, d):
102 """validate a dict against our traits"""
101 """validate a dict against our traits"""
103 for key in self.trait_names():
102 for key in self.trait_names():
104 yield nt.assert_true(key in d, "Missing key: %r, should be found in %s" % (key, d))
103 nt.assert_in(key, d)
105 # FIXME: always allow None, probably not a good idea
104 # FIXME: always allow None, probably not a good idea
106 if d[key] is None:
105 if d[key] is None:
107 continue
106 continue
108 try:
107 try:
109 setattr(self, key, d[key])
108 setattr(self, key, d[key])
110 except TraitError as e:
109 except TraitError as e:
111 yield nt.assert_true(False, str(e))
110 nt.assert_true(False, str(e))
112
111
113
112
114 class RMessage(Reference):
113 class RMessage(Reference):
@@ -133,14 +132,11 b' class ExecuteReply(Reference):'
133 status = Enum((u'ok', u'error'))
132 status = Enum((u'ok', u'error'))
134
133
135 def check(self, d):
134 def check(self, d):
136 for tst in Reference.check(self, d):
135 Reference.check(self, d)
137 yield tst
138 if d['status'] == 'ok':
136 if d['status'] == 'ok':
139 for tst in ExecuteReplyOkay().check(d):
137 ExecuteReplyOkay().check(d)
140 yield tst
141 elif d['status'] == 'error':
138 elif d['status'] == 'error':
142 for tst in ExecuteReplyError().check(d):
139 ExecuteReplyError().check(d)
143 yield tst
144
140
145
141
146 class ExecuteReplyOkay(Reference):
142 class ExecuteReplyOkay(Reference):
@@ -177,11 +173,9 b' class OInfoReply(Reference):'
177 source = Unicode()
173 source = Unicode()
178
174
179 def check(self, d):
175 def check(self, d):
180 for tst in Reference.check(self, d):
176 Reference.check(self, d)
181 yield tst
182 if d['argspec'] is not None:
177 if d['argspec'] is not None:
183 for tst in ArgSpec().check(d['argspec']):
178 ArgSpec().check(d['argspec'])
184 yield tst
185
179
186
180
187 class ArgSpec(Reference):
181 class ArgSpec(Reference):
@@ -212,10 +206,8 b' class KernelInfoReply(Reference):'
212
206
213 def _ipython_version_changed(self, name, old, new):
207 def _ipython_version_changed(self, name, old, new):
214 for v in new:
208 for v in new:
215 nt.assert_true(
209 assert isinstance(v, int) or isinstance(v, basestring), \
216 isinstance(v, int) or isinstance(v, basestring),
210 'expected int or string as version component, got {0!r}'.format(v)
217 'expected int or string as version component, got {0!r}'
218 .format(v))
219
211
220
212
221 # IOPub messages
213 # IOPub messages
@@ -241,8 +233,8 b' class DisplayData(Reference):'
241 data = Dict()
233 data = Dict()
242 def _data_changed(self, name, old, new):
234 def _data_changed(self, name, old, new):
243 for k,v in new.iteritems():
235 for k,v in new.iteritems():
244 nt.assert_true(mime_pat.match(k))
236 assert mime_pat.match(k)
245 nt.assert_true(isinstance(v, basestring), "expected string data, got %r" % v)
237 nt.assert_is_instance(v, basestring)
246
238
247
239
248 class PyOut(Reference):
240 class PyOut(Reference):
@@ -250,8 +242,8 b' class PyOut(Reference):'
250 data = Dict()
242 data = Dict()
251 def _data_changed(self, name, old, new):
243 def _data_changed(self, name, old, new):
252 for k,v in new.iteritems():
244 for k,v in new.iteritems():
253 nt.assert_true(mime_pat.match(k))
245 assert mime_pat.match(k)
254 nt.assert_true(isinstance(v, basestring), "expected string data, got %r" % v)
246 nt.assert_is_instance(v, basestring)
255
247
256
248
257 references = {
249 references = {
@@ -282,13 +274,12 b' def validate_message(msg, msg_type=None, parent=None):'
282 """
274 """
283 RMessage().check(msg)
275 RMessage().check(msg)
284 if msg_type:
276 if msg_type:
285 yield nt.assert_equal(msg['msg_type'], msg_type)
277 nt.assert_equal(msg['msg_type'], msg_type)
286 if parent:
278 if parent:
287 yield nt.assert_equal(msg['parent_header']['msg_id'], parent)
279 nt.assert_equal(msg['parent_header']['msg_id'], parent)
288 content = msg['content']
280 content = msg['content']
289 ref = references[msg['msg_type']]
281 ref = references[msg['msg_type']]
290 for tst in ref.check(content):
282 ref.check(content)
291 yield tst
292
283
293
284
294 #-----------------------------------------------------------------------------
285 #-----------------------------------------------------------------------------
@@ -297,54 +288,47 b' def validate_message(msg, msg_type=None, parent=None):'
297
288
298 # Shell channel
289 # Shell channel
299
290
300 @dec.parametric
301 def test_execute():
291 def test_execute():
302 flush_channels()
292 flush_channels()
303
293
304 msg_id = KC.execute(code='x=1')
294 msg_id = KC.execute(code='x=1')
305 reply = KC.get_shell_msg(timeout=TIMEOUT)
295 reply = KC.get_shell_msg(timeout=TIMEOUT)
306 for tst in validate_message(reply, 'execute_reply', msg_id):
296 validate_message(reply, 'execute_reply', msg_id)
307 yield tst
308
297
309
298
310 @dec.parametric
311 def test_execute_silent():
299 def test_execute_silent():
312 flush_channels()
300 flush_channels()
313 msg_id, reply = execute(code='x=1', silent=True)
301 msg_id, reply = execute(code='x=1', silent=True)
314
302
315 # flush status=idle
303 # flush status=idle
316 status = KC.iopub_channel.get_msg(timeout=TIMEOUT)
304 status = KC.iopub_channel.get_msg(timeout=TIMEOUT)
317 for tst in validate_message(status, 'status', msg_id):
305 validate_message(status, 'status', msg_id)
318 yield tst
319 nt.assert_equal(status['content']['execution_state'], 'idle')
306 nt.assert_equal(status['content']['execution_state'], 'idle')
320
307
321 yield nt.assert_raises(Empty, KC.iopub_channel.get_msg, timeout=0.1)
308 nt.assert_raises(Empty, KC.iopub_channel.get_msg, timeout=0.1)
322 count = reply['execution_count']
309 count = reply['execution_count']
323
310
324 msg_id, reply = execute(code='x=2', silent=True)
311 msg_id, reply = execute(code='x=2', silent=True)
325
312
326 # flush status=idle
313 # flush status=idle
327 status = KC.iopub_channel.get_msg(timeout=TIMEOUT)
314 status = KC.iopub_channel.get_msg(timeout=TIMEOUT)
328 for tst in validate_message(status, 'status', msg_id):
315 validate_message(status, 'status', msg_id)
329 yield tst
316 nt.assert_equal(status['content']['execution_state'], 'idle')
330 yield nt.assert_equal(status['content']['execution_state'], 'idle')
331
317
332 yield nt.assert_raises(Empty, KC.iopub_channel.get_msg, timeout=0.1)
318 nt.assert_raises(Empty, KC.iopub_channel.get_msg, timeout=0.1)
333 count_2 = reply['execution_count']
319 count_2 = reply['execution_count']
334 yield nt.assert_equal(count_2, count)
320 nt.assert_equal(count_2, count)
335
321
336
322
337 @dec.parametric
338 def test_execute_error():
323 def test_execute_error():
339 flush_channels()
324 flush_channels()
340
325
341 msg_id, reply = execute(code='1/0')
326 msg_id, reply = execute(code='1/0')
342 yield nt.assert_equal(reply['status'], 'error')
327 nt.assert_equal(reply['status'], 'error')
343 yield nt.assert_equal(reply['ename'], 'ZeroDivisionError')
328 nt.assert_equal(reply['ename'], 'ZeroDivisionError')
344
329
345 pyerr = KC.iopub_channel.get_msg(timeout=TIMEOUT)
330 pyerr = KC.iopub_channel.get_msg(timeout=TIMEOUT)
346 for tst in validate_message(pyerr, 'pyerr', msg_id):
331 validate_message(pyerr, 'pyerr', msg_id)
347 yield tst
348
332
349
333
350 def test_execute_inc():
334 def test_execute_inc():
@@ -405,17 +389,14 b' def test_user_expressions_fail():'
405 nt.assert_equal(foo['ename'], 'NameError')
389 nt.assert_equal(foo['ename'], 'NameError')
406
390
407
391
408 @dec.parametric
409 def test_oinfo():
392 def test_oinfo():
410 flush_channels()
393 flush_channels()
411
394
412 msg_id = KC.object_info('a')
395 msg_id = KC.object_info('a')
413 reply = KC.get_shell_msg(timeout=TIMEOUT)
396 reply = KC.get_shell_msg(timeout=TIMEOUT)
414 for tst in validate_message(reply, 'object_info_reply', msg_id):
397 validate_message(reply, 'object_info_reply', msg_id)
415 yield tst
416
398
417
399
418 @dec.parametric
419 def test_oinfo_found():
400 def test_oinfo_found():
420 flush_channels()
401 flush_channels()
421
402
@@ -423,15 +404,13 b' def test_oinfo_found():'
423
404
424 msg_id = KC.object_info('a')
405 msg_id = KC.object_info('a')
425 reply = KC.get_shell_msg(timeout=TIMEOUT)
406 reply = KC.get_shell_msg(timeout=TIMEOUT)
426 for tst in validate_message(reply, 'object_info_reply', msg_id):
407 validate_message(reply, 'object_info_reply', msg_id)
427 yield tst
428 content = reply['content']
408 content = reply['content']
429 yield nt.assert_true(content['found'])
409 assert content['found']
430 argspec = content['argspec']
410 argspec = content['argspec']
431 yield nt.assert_true(argspec is None, "didn't expect argspec dict, got %r" % argspec)
411 nt.assert_is(argspec, None)
432
412
433
413
434 @dec.parametric
435 def test_oinfo_detail():
414 def test_oinfo_detail():
436 flush_channels()
415 flush_channels()
437
416
@@ -439,28 +418,24 b' def test_oinfo_detail():'
439
418
440 msg_id = KC.object_info('ip.object_inspect', detail_level=2)
419 msg_id = KC.object_info('ip.object_inspect', detail_level=2)
441 reply = KC.get_shell_msg(timeout=TIMEOUT)
420 reply = KC.get_shell_msg(timeout=TIMEOUT)
442 for tst in validate_message(reply, 'object_info_reply', msg_id):
421 validate_message(reply, 'object_info_reply', msg_id)
443 yield tst
444 content = reply['content']
422 content = reply['content']
445 yield nt.assert_true(content['found'])
423 assert content['found']
446 argspec = content['argspec']
424 argspec = content['argspec']
447 yield nt.assert_true(isinstance(argspec, dict), "expected non-empty argspec dict, got %r" % argspec)
425 nt.assert_is_instance(argspec, dict, "expected non-empty argspec dict, got %r" % argspec)
448 yield nt.assert_equal(argspec['defaults'], [0])
426 nt.assert_equal(argspec['defaults'], [0])
449
427
450
428
451 @dec.parametric
452 def test_oinfo_not_found():
429 def test_oinfo_not_found():
453 flush_channels()
430 flush_channels()
454
431
455 msg_id = KC.object_info('dne')
432 msg_id = KC.object_info('dne')
456 reply = KC.get_shell_msg(timeout=TIMEOUT)
433 reply = KC.get_shell_msg(timeout=TIMEOUT)
457 for tst in validate_message(reply, 'object_info_reply', msg_id):
434 validate_message(reply, 'object_info_reply', msg_id)
458 yield tst
459 content = reply['content']
435 content = reply['content']
460 yield nt.assert_false(content['found'])
436 nt.assert_false(content['found'])
461
437
462
438
463 @dec.parametric
464 def test_complete():
439 def test_complete():
465 flush_channels()
440 flush_channels()
466
441
@@ -468,49 +443,42 b' def test_complete():'
468
443
469 msg_id = KC.complete('al', 'al', 2)
444 msg_id = KC.complete('al', 'al', 2)
470 reply = KC.get_shell_msg(timeout=TIMEOUT)
445 reply = KC.get_shell_msg(timeout=TIMEOUT)
471 for tst in validate_message(reply, 'complete_reply', msg_id):
446 validate_message(reply, 'complete_reply', msg_id)
472 yield tst
473 matches = reply['content']['matches']
447 matches = reply['content']['matches']
474 for name in ('alpha', 'albert'):
448 for name in ('alpha', 'albert'):
475 yield nt.assert_true(name in matches, "Missing match: %r" % name)
449 nt.assert_in(name, matches)
476
450
477
451
478 @dec.parametric
479 def test_kernel_info_request():
452 def test_kernel_info_request():
480 flush_channels()
453 flush_channels()
481
454
482 msg_id = KC.kernel_info()
455 msg_id = KC.kernel_info()
483 reply = KC.get_shell_msg(timeout=TIMEOUT)
456 reply = KC.get_shell_msg(timeout=TIMEOUT)
484 for tst in validate_message(reply, 'kernel_info_reply', msg_id):
457 validate_message(reply, 'kernel_info_reply', msg_id)
485 yield tst
486
458
487
459
488 # IOPub channel
460 # IOPub channel
489
461
490
462
491 @dec.parametric
492 def test_stream():
463 def test_stream():
493 flush_channels()
464 flush_channels()
494
465
495 msg_id, reply = execute("print('hi')")
466 msg_id, reply = execute("print('hi')")
496
467
497 stdout = KC.iopub_channel.get_msg(timeout=TIMEOUT)
468 stdout = KC.iopub_channel.get_msg(timeout=TIMEOUT)
498 for tst in validate_message(stdout, 'stream', msg_id):
469 validate_message(stdout, 'stream', msg_id)
499 yield tst
500 content = stdout['content']
470 content = stdout['content']
501 yield nt.assert_equal(content['name'], u'stdout')
471 nt.assert_equal(content['name'], u'stdout')
502 yield nt.assert_equal(content['data'], u'hi\n')
472 nt.assert_equal(content['data'], u'hi\n')
503
473
504
474
505 @dec.parametric
506 def test_display_data():
475 def test_display_data():
507 flush_channels()
476 flush_channels()
508
477
509 msg_id, reply = execute("from IPython.core.display import display; display(1)")
478 msg_id, reply = execute("from IPython.core.display import display; display(1)")
510
479
511 display = KC.iopub_channel.get_msg(timeout=TIMEOUT)
480 display = KC.iopub_channel.get_msg(timeout=TIMEOUT)
512 for tst in validate_message(display, 'display_data', parent=msg_id):
481 validate_message(display, 'display_data', parent=msg_id)
513 yield tst
514 data = display['content']['data']
482 data = display['content']['data']
515 yield nt.assert_equal(data['text/plain'], u'1')
483 nt.assert_equal(data['text/plain'], u'1')
516
484
@@ -14,8 +14,6 b' Authors'
14
14
15 import nose.tools as nt
15 import nose.tools as nt
16
16
17 from IPython.testing import decorators as dec
18
19 from IPython.kernel import launcher, connect
17 from IPython.kernel import launcher, connect
20 from IPython import kernel
18 from IPython import kernel
21
19
@@ -23,25 +21,21 b' from IPython import kernel'
23 # Classes and functions
21 # Classes and functions
24 #-----------------------------------------------------------------------------
22 #-----------------------------------------------------------------------------
25
23
26 @dec.parametric
27 def test_kms():
24 def test_kms():
28 for base in ("", "Multi"):
25 for base in ("", "Multi"):
29 KM = base + "KernelManager"
26 KM = base + "KernelManager"
30 yield nt.assert_true(KM in dir(kernel), KM)
27 nt.assert_in(KM, dir(kernel))
31
28
32 @dec.parametric
33 def test_kcs():
29 def test_kcs():
34 for base in ("", "Blocking"):
30 for base in ("", "Blocking"):
35 KM = base + "KernelClient"
31 KM = base + "KernelClient"
36 yield nt.assert_true(KM in dir(kernel), KM)
32 nt.assert_in(KM, dir(kernel))
37
33
38 @dec.parametric
39 def test_launcher():
34 def test_launcher():
40 for name in launcher.__all__:
35 for name in launcher.__all__:
41 yield nt.assert_true(name in dir(kernel), name)
36 nt.assert_in(name, dir(kernel))
42
37
43 @dec.parametric
44 def test_connect():
38 def test_connect():
45 for name in connect.__all__:
39 for name in connect.__all__:
46 yield nt.assert_true(name in dir(kernel), name)
40 nt.assert_in(name, dir(kernel))
47
41
@@ -46,7 +46,6 b" DTYPES = ('uint8', 'float64', 'int32', [('g', 'float32')], '|S10')"
46 # Tests
46 # Tests
47 #-------------------------------------------------------------------------------
47 #-------------------------------------------------------------------------------
48
48
49 @dec.parametric
50 def test_roundtrip_simple():
49 def test_roundtrip_simple():
51 for obj in [
50 for obj in [
52 'hello',
51 'hello',
@@ -55,18 +54,16 b' def test_roundtrip_simple():'
55 (b'123', 'hello'),
54 (b'123', 'hello'),
56 ]:
55 ]:
57 obj2 = roundtrip(obj)
56 obj2 = roundtrip(obj)
58 yield nt.assert_equals(obj, obj2)
57 nt.assert_equal(obj, obj2)
59
58
60 @dec.parametric
61 def test_roundtrip_nested():
59 def test_roundtrip_nested():
62 for obj in [
60 for obj in [
63 dict(a=range(5), b={1:b'hello'}),
61 dict(a=range(5), b={1:b'hello'}),
64 [range(5),[range(3),(1,[b'whoda'])]],
62 [range(5),[range(3),(1,[b'whoda'])]],
65 ]:
63 ]:
66 obj2 = roundtrip(obj)
64 obj2 = roundtrip(obj)
67 yield nt.assert_equals(obj, obj2)
65 nt.assert_equal(obj, obj2)
68
66
69 @dec.parametric
70 def test_roundtrip_buffered():
67 def test_roundtrip_buffered():
71 for obj in [
68 for obj in [
72 dict(a=b"x"*1025),
69 dict(a=b"x"*1025),
@@ -74,10 +71,10 b' def test_roundtrip_buffered():'
74 [b"hello"*501, 1,2,3]
71 [b"hello"*501, 1,2,3]
75 ]:
72 ]:
76 bufs = serialize_object(obj)
73 bufs = serialize_object(obj)
77 yield nt.assert_equals(len(bufs), 2)
74 nt.assert_equal(len(bufs), 2)
78 obj2, remainder = unserialize_object(bufs)
75 obj2, remainder = unserialize_object(bufs)
79 yield nt.assert_equals(remainder, [])
76 nt.assert_equal(remainder, [])
80 yield nt.assert_equals(obj, obj2)
77 nt.assert_equal(obj, obj2)
81
78
82 def _scrub_nan(A):
79 def _scrub_nan(A):
83 """scrub nans out of empty arrays
80 """scrub nans out of empty arrays
@@ -93,7 +90,6 b' def _scrub_nan(A):'
93 # e.g. str dtype
90 # e.g. str dtype
94 pass
91 pass
95
92
96 @dec.parametric
97 @dec.skip_without('numpy')
93 @dec.skip_without('numpy')
98 def test_numpy():
94 def test_numpy():
99 import numpy
95 import numpy
@@ -104,12 +100,11 b' def test_numpy():'
104 _scrub_nan(A)
100 _scrub_nan(A)
105 bufs = serialize_object(A)
101 bufs = serialize_object(A)
106 B, r = unserialize_object(bufs)
102 B, r = unserialize_object(bufs)
107 yield nt.assert_equals(r, [])
103 nt.assert_equal(r, [])
108 yield nt.assert_equals(A.shape, B.shape)
104 nt.assert_equal(A.shape, B.shape)
109 yield nt.assert_equals(A.dtype, B.dtype)
105 nt.assert_equal(A.dtype, B.dtype)
110 yield assert_array_equal(A,B)
106 assert_array_equal(A,B)
111
107
112 @dec.parametric
113 @dec.skip_without('numpy')
108 @dec.skip_without('numpy')
114 def test_recarray():
109 def test_recarray():
115 import numpy
110 import numpy
@@ -124,12 +119,11 b' def test_recarray():'
124
119
125 bufs = serialize_object(A)
120 bufs = serialize_object(A)
126 B, r = unserialize_object(bufs)
121 B, r = unserialize_object(bufs)
127 yield nt.assert_equals(r, [])
122 nt.assert_equal(r, [])
128 yield nt.assert_equals(A.shape, B.shape)
123 nt.assert_equal(A.shape, B.shape)
129 yield nt.assert_equals(A.dtype, B.dtype)
124 nt.assert_equal(A.dtype, B.dtype)
130 yield assert_array_equal(A,B)
125 assert_array_equal(A,B)
131
126
132 @dec.parametric
133 @dec.skip_without('numpy')
127 @dec.skip_without('numpy')
134 def test_numpy_in_seq():
128 def test_numpy_in_seq():
135 import numpy
129 import numpy
@@ -140,15 +134,14 b' def test_numpy_in_seq():'
140 _scrub_nan(A)
134 _scrub_nan(A)
141 bufs = serialize_object((A,1,2,b'hello'))
135 bufs = serialize_object((A,1,2,b'hello'))
142 canned = pickle.loads(bufs[0])
136 canned = pickle.loads(bufs[0])
143 yield nt.assert_true(canned[0], CannedArray)
137 nt.assert_is_instance(canned[0], CannedArray)
144 tup, r = unserialize_object(bufs)
138 tup, r = unserialize_object(bufs)
145 B = tup[0]
139 B = tup[0]
146 yield nt.assert_equals(r, [])
140 nt.assert_equal(r, [])
147 yield nt.assert_equals(A.shape, B.shape)
141 nt.assert_equal(A.shape, B.shape)
148 yield nt.assert_equals(A.dtype, B.dtype)
142 nt.assert_equal(A.dtype, B.dtype)
149 yield assert_array_equal(A,B)
143 assert_array_equal(A,B)
150
144
151 @dec.parametric
152 @dec.skip_without('numpy')
145 @dec.skip_without('numpy')
153 def test_numpy_in_dict():
146 def test_numpy_in_dict():
154 import numpy
147 import numpy
@@ -159,27 +152,25 b' def test_numpy_in_dict():'
159 _scrub_nan(A)
152 _scrub_nan(A)
160 bufs = serialize_object(dict(a=A,b=1,c=range(20)))
153 bufs = serialize_object(dict(a=A,b=1,c=range(20)))
161 canned = pickle.loads(bufs[0])
154 canned = pickle.loads(bufs[0])
162 yield nt.assert_true(canned['a'], CannedArray)
155 nt.assert_is_instance(canned['a'], CannedArray)
163 d, r = unserialize_object(bufs)
156 d, r = unserialize_object(bufs)
164 B = d['a']
157 B = d['a']
165 yield nt.assert_equals(r, [])
158 nt.assert_equal(r, [])
166 yield nt.assert_equals(A.shape, B.shape)
159 nt.assert_equal(A.shape, B.shape)
167 yield nt.assert_equals(A.dtype, B.dtype)
160 nt.assert_equal(A.dtype, B.dtype)
168 yield assert_array_equal(A,B)
161 assert_array_equal(A,B)
169
162
170 @dec.parametric
171 def test_class():
163 def test_class():
172 @interactive
164 @interactive
173 class C(object):
165 class C(object):
174 a=5
166 a=5
175 bufs = serialize_object(dict(C=C))
167 bufs = serialize_object(dict(C=C))
176 canned = pickle.loads(bufs[0])
168 canned = pickle.loads(bufs[0])
177 yield nt.assert_true(canned['C'], CannedClass)
169 nt.assert_is_instance(canned['C'], CannedClass)
178 d, r = unserialize_object(bufs)
170 d, r = unserialize_object(bufs)
179 C2 = d['C']
171 C2 = d['C']
180 yield nt.assert_equal(C2.a, C.a)
172 nt.assert_equal(C2.a, C.a)
181
173
182 @dec.parametric
183 def test_class_oldstyle():
174 def test_class_oldstyle():
184 @interactive
175 @interactive
185 class C:
176 class C:
@@ -187,42 +178,38 b' def test_class_oldstyle():'
187
178
188 bufs = serialize_object(dict(C=C))
179 bufs = serialize_object(dict(C=C))
189 canned = pickle.loads(bufs[0])
180 canned = pickle.loads(bufs[0])
190 yield nt.assert_true(isinstance(canned['C'], CannedClass))
181 nt.assert_is_instance(canned['C'], CannedClass)
191 d, r = unserialize_object(bufs)
182 d, r = unserialize_object(bufs)
192 C2 = d['C']
183 C2 = d['C']
193 yield nt.assert_equal(C2.a, C.a)
184 nt.assert_equal(C2.a, C.a)
194
185
195 @dec.parametric
196 def test_tuple():
186 def test_tuple():
197 tup = (lambda x:x, 1)
187 tup = (lambda x:x, 1)
198 bufs = serialize_object(tup)
188 bufs = serialize_object(tup)
199 canned = pickle.loads(bufs[0])
189 canned = pickle.loads(bufs[0])
200 yield nt.assert_true(isinstance(canned, tuple))
190 nt.assert_is_instance(canned, tuple)
201 t2, r = unserialize_object(bufs)
191 t2, r = unserialize_object(bufs)
202 yield nt.assert_equal(t2[0](t2[1]), tup[0](tup[1]))
192 nt.assert_equal(t2[0](t2[1]), tup[0](tup[1]))
203
193
204 point = namedtuple('point', 'x y')
194 point = namedtuple('point', 'x y')
205
195
206 @dec.parametric
207 def test_namedtuple():
196 def test_namedtuple():
208 p = point(1,2)
197 p = point(1,2)
209 bufs = serialize_object(p)
198 bufs = serialize_object(p)
210 canned = pickle.loads(bufs[0])
199 canned = pickle.loads(bufs[0])
211 yield nt.assert_true(isinstance(canned, point))
200 nt.assert_is_instance(canned, point)
212 p2, r = unserialize_object(bufs, globals())
201 p2, r = unserialize_object(bufs, globals())
213 yield nt.assert_equal(p2.x, p.x)
202 nt.assert_equal(p2.x, p.x)
214 yield nt.assert_equal(p2.y, p.y)
203 nt.assert_equal(p2.y, p.y)
215
204
216 @dec.parametric
217 def test_list():
205 def test_list():
218 lis = [lambda x:x, 1]
206 lis = [lambda x:x, 1]
219 bufs = serialize_object(lis)
207 bufs = serialize_object(lis)
220 canned = pickle.loads(bufs[0])
208 canned = pickle.loads(bufs[0])
221 yield nt.assert_true(isinstance(canned, list))
209 nt.assert_is_instance(canned, list)
222 l2, r = unserialize_object(bufs)
210 l2, r = unserialize_object(bufs)
223 yield nt.assert_equal(l2[0](l2[1]), lis[0](lis[1]))
211 nt.assert_equal(l2[0](l2[1]), lis[0](lis[1]))
224
212
225 @dec.parametric
226 def test_class_inheritance():
213 def test_class_inheritance():
227 @interactive
214 @interactive
228 class C(object):
215 class C(object):
@@ -234,8 +221,8 b' def test_class_inheritance():'
234
221
235 bufs = serialize_object(dict(D=D))
222 bufs = serialize_object(dict(D=D))
236 canned = pickle.loads(bufs[0])
223 canned = pickle.loads(bufs[0])
237 yield nt.assert_true(canned['D'], CannedClass)
224 nt.assert_is_instance(canned['D'], CannedClass)
238 d, r = unserialize_object(bufs)
225 d, r = unserialize_object(bufs)
239 D2 = d['D']
226 D2 = d['D']
240 yield nt.assert_equal(D2.a, D.a)
227 nt.assert_equal(D2.a, D.a)
241 yield nt.assert_equal(D2.b, D.b)
228 nt.assert_equal(D2.b, D.b)
@@ -19,7 +19,6 b' from base64 import decodestring'
19 import nose.tools as nt
19 import nose.tools as nt
20
20
21 # our own
21 # our own
22 from IPython.testing import decorators as dec
23 from IPython.utils import jsonutil, tz
22 from IPython.utils import jsonutil, tz
24 from ..jsonutil import json_clean, encode_images
23 from ..jsonutil import json_clean, encode_images
25 from ..py3compat import unicode_to_str, str_to_bytes
24 from ..py3compat import unicode_to_str, str_to_bytes
@@ -62,7 +61,6 b' def test():'
62
61
63
62
64
63
65 @dec.parametric
66 def test_encode_images():
64 def test_encode_images():
67 # invalid data, but the header and footer are from real files
65 # invalid data, but the header and footer are from real files
68 pngdata = b'\x89PNG\r\n\x1a\nblahblahnotactuallyvalidIEND\xaeB`\x82'
66 pngdata = b'\x89PNG\r\n\x1a\nblahblahnotactuallyvalidIEND\xaeB`\x82'
@@ -76,19 +74,19 b' def test_encode_images():'
76 for key, value in fmt.iteritems():
74 for key, value in fmt.iteritems():
77 # encoded has unicode, want bytes
75 # encoded has unicode, want bytes
78 decoded = decodestring(encoded[key].encode('ascii'))
76 decoded = decodestring(encoded[key].encode('ascii'))
79 yield nt.assert_equal(decoded, value)
77 nt.assert_equal(decoded, value)
80 encoded2 = encode_images(encoded)
78 encoded2 = encode_images(encoded)
81 yield nt.assert_equal(encoded, encoded2)
79 nt.assert_equal(encoded, encoded2)
82
80
83 b64_str = {}
81 b64_str = {}
84 for key, encoded in encoded.iteritems():
82 for key, encoded in encoded.iteritems():
85 b64_str[key] = unicode_to_str(encoded)
83 b64_str[key] = unicode_to_str(encoded)
86 encoded3 = encode_images(b64_str)
84 encoded3 = encode_images(b64_str)
87 yield nt.assert_equal(encoded3, b64_str)
85 nt.assert_equal(encoded3, b64_str)
88 for key, value in fmt.iteritems():
86 for key, value in fmt.iteritems():
89 # encoded3 has str, want bytes
87 # encoded3 has str, want bytes
90 decoded = decodestring(str_to_bytes(encoded3[key]))
88 decoded = decodestring(str_to_bytes(encoded3[key]))
91 yield nt.assert_equal(decoded, value)
89 nt.assert_equal(decoded, value)
92
90
93 def test_lambda():
91 def test_lambda():
94 jc = json_clean(lambda : 1)
92 jc = json_clean(lambda : 1)
General Comments 0
You need to be logged in to leave comments. Login now