##// END OF EJS Templates
Merge pull request #4165 from takluyver/parametric-begone...
Min RK -
r12407:f8a7c9a5 merge
parent child Browse files
Show More
@@ -6,12 +6,11 b''
6 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 11 from IPython.external import argparse
12 12 from IPython.core.magic_arguments import (argument, argument_group, kwds,
13 13 magic_arguments, parse_argstring, real_name)
14 from IPython.testing.decorators import parametric
15 14
16 15
17 16 @magic_arguments()
@@ -74,48 +73,46 b' def foo(self, args):'
74 73 return parse_argstring(foo, args)
75 74
76 75
77 @parametric
78 76 def test_magic_arguments():
79 # Ideally, these would be doctests, but I could not get it to work.
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')
81 yield assert_equal(getattr(magic_foo1, 'argcmd_name', None), None)
82 yield assert_equal(real_name(magic_foo1), 'foo1')
83 yield assert_equal(magic_foo1(None, ''), argparse.Namespace(foo=None))
84 yield assert_true(hasattr(magic_foo1, 'has_arguments'))
85
86 yield assert_equal(magic_foo2.__doc__, '%foo2\n\n A docstring.\n')
87 yield assert_equal(getattr(magic_foo2, 'argcmd_name', None), None)
88 yield assert_equal(real_name(magic_foo2), 'foo2')
89 yield assert_equal(magic_foo2(None, ''), argparse.Namespace())
90 yield assert_true(hasattr(magic_foo2, 'has_arguments'))
91
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')
93 yield assert_equal(getattr(magic_foo3, 'argcmd_name', None), None)
94 yield assert_equal(real_name(magic_foo3), 'foo3')
95 yield assert_equal(magic_foo3(None, ''),
77 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)
79 assert_equal(real_name(magic_foo1), 'foo1')
80 assert_equal(magic_foo1(None, ''), argparse.Namespace(foo=None))
81 assert hasattr(magic_foo1, 'has_arguments')
82
83 assert_equal(magic_foo2.__doc__, '%foo2\n\n A docstring.\n')
84 assert_equal(getattr(magic_foo2, 'argcmd_name', None), None)
85 assert_equal(real_name(magic_foo2), 'foo2')
86 assert_equal(magic_foo2(None, ''), argparse.Namespace())
87 assert hasattr(magic_foo2, 'has_arguments')
88
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')
90 assert_equal(getattr(magic_foo3, 'argcmd_name', None), None)
91 assert_equal(real_name(magic_foo3), 'foo3')
92 assert_equal(magic_foo3(None, ''),
96 93 argparse.Namespace(bar=None, baz=None, foo=None))
97 yield assert_true(hasattr(magic_foo3, 'has_arguments'))
98
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')
100 yield assert_equal(getattr(magic_foo4, 'argcmd_name', None), None)
101 yield assert_equal(real_name(magic_foo4), 'foo4')
102 yield assert_equal(magic_foo4(None, ''), argparse.Namespace())
103 yield assert_true(hasattr(magic_foo4, 'has_arguments'))
104
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')
106 yield assert_equal(getattr(magic_foo5, 'argcmd_name', None), 'frobnicate')
107 yield assert_equal(real_name(magic_foo5), 'frobnicate')
108 yield assert_equal(magic_foo5(None, ''), argparse.Namespace(foo=None))
109 yield assert_true(hasattr(magic_foo5, 'has_arguments'))
110
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')
112 yield assert_equal(getattr(magic_magic_foo, 'argcmd_name', None), None)
113 yield assert_equal(real_name(magic_magic_foo), 'magic_foo')
114 yield assert_equal(magic_magic_foo(None, ''), argparse.Namespace(foo=None))
115 yield assert_true(hasattr(magic_magic_foo, 'has_arguments'))
116
117 yield 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)
119 yield assert_equal(real_name(foo), 'foo')
120 yield assert_equal(foo(None, ''), argparse.Namespace(foo=None))
121 yield assert_true(hasattr(foo, 'has_arguments'))
94 assert hasattr(magic_foo3, 'has_arguments')
95
96 assert_equal(magic_foo4.__doc__, '%foo4 [-f FOO]\n\n A docstring.\n\noptional arguments:\n -f FOO, --foo FOO an argument\n')
97 assert_equal(getattr(magic_foo4, 'argcmd_name', None), None)
98 assert_equal(real_name(magic_foo4), 'foo4')
99 assert_equal(magic_foo4(None, ''), argparse.Namespace())
100 assert hasattr(magic_foo4, 'has_arguments')
101
102 assert_equal(magic_foo5.__doc__, '%frobnicate [-f FOO]\n\n A docstring.\n\noptional arguments:\n -f FOO, --foo FOO an argument\n')
103 assert_equal(getattr(magic_foo5, 'argcmd_name', None), 'frobnicate')
104 assert_equal(real_name(magic_foo5), 'frobnicate')
105 assert_equal(magic_foo5(None, ''), argparse.Namespace(foo=None))
106 assert hasattr(magic_foo5, 'has_arguments')
107
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')
109 assert_equal(getattr(magic_magic_foo, 'argcmd_name', None), None)
110 assert_equal(real_name(magic_magic_foo), 'magic_foo')
111 assert_equal(magic_magic_foo(None, ''), argparse.Namespace(foo=None))
112 assert hasattr(magic_magic_foo, 'has_arguments')
113
114 assert_equal(foo.__doc__, '%foo [-f FOO]\n\n A docstring.\n\noptional arguments:\n -f FOO, --foo FOO an argument\n')
115 assert_equal(getattr(foo, 'argcmd_name', None), None)
116 assert_equal(real_name(foo), 'foo')
117 assert_equal(foo(None, ''), argparse.Namespace(foo=None))
118 assert hasattr(foo, 'has_arguments')
@@ -6,7 +6,6 b''
6 6 import nose.tools as nt
7 7
8 8 from IPython.core.prefilter import AutocallChecker
9 from IPython.testing import decorators as dec
10 9 from IPython.testing.globalipapp import get_ipython
11 10
12 11 #-----------------------------------------------------------------------------
@@ -14,7 +13,6 b' from IPython.testing.globalipapp import get_ipython'
14 13 #-----------------------------------------------------------------------------
15 14 ip = get_ipython()
16 15
17 @dec.parametric
18 16 def test_prefilter():
19 17 """Test user input conversions"""
20 18
@@ -23,19 +21,18 b' def test_prefilter():'
23 21 ]
24 22
25 23 for raw, correct in pairs:
26 yield nt.assert_equal(ip.prefilter(raw), correct)
24 nt.assert_equal(ip.prefilter(raw), correct)
27 25
28 26
29 @dec.parametric
30 27 def test_autocall_binops():
31 28 """See https://github.com/ipython/ipython/issues/81"""
32 29 ip.magic('autocall 2')
33 30 f = lambda x: x
34 31 ip.user_ns['f'] = f
35 32 try:
36 yield nt.assert_equal(ip.prefilter('f 1'),'f(1)')
33 nt.assert_equal(ip.prefilter('f 1'),'f(1)')
37 34 for t in ['f +1', 'f -1']:
38 yield nt.assert_equal(ip.prefilter(t), t)
35 nt.assert_equal(ip.prefilter(t), t)
39 36
40 37 # Run tests again with a more permissive exclude_regexp, which will
41 38 # allow transformation of binary operations ('f -1' -> 'f(-1)').
@@ -47,8 +44,8 b' def test_autocall_binops():'
47 44 ac.exclude_regexp = r'^[,&^\|\*/]|^is |^not |^in |^and |^or '
48 45 pm.sort_checkers()
49 46
50 yield nt.assert_equal(ip.prefilter('f -1'), 'f(-1)')
51 yield nt.assert_equal(ip.prefilter('f +1'), 'f(+1)')
47 nt.assert_equal(ip.prefilter('f -1'), 'f(-1)')
48 nt.assert_equal(ip.prefilter('f +1'), 'f(+1)')
52 49 finally:
53 50 pm.unregister_checker(ac)
54 51 finally:
@@ -56,7 +53,6 b' def test_autocall_binops():'
56 53 del ip.user_ns['f']
57 54
58 55
59 @dec.parametric
60 56 def test_issue_114():
61 57 """Check that multiline string literals don't expand as magic
62 58 see http://github.com/ipython/ipython/issues/114"""
@@ -70,7 +66,7 b' def test_issue_114():'
70 66 try:
71 67 for mgk in ip.magics_manager.lsmagic()['line']:
72 68 raw = template % mgk
73 yield nt.assert_equal(ip.prefilter(raw), raw)
69 nt.assert_equal(ip.prefilter(raw), raw)
74 70 finally:
75 71 ip.prefilter_manager.multi_line_specials = msp
76 72
@@ -24,7 +24,6 b' import numpy as np'
24 24
25 25 # Our own imports
26 26 from IPython.core.interactiveshell import InteractiveShell
27 from IPython.testing import decorators as dec
28 27 from .. import pylabtools as pt
29 28
30 29 #-----------------------------------------------------------------------------
@@ -39,11 +38,10 b' from .. import pylabtools as pt'
39 38 # Classes and functions
40 39 #-----------------------------------------------------------------------------
41 40
42 @dec.parametric
43 41 def test_figure_to_svg():
44 42 # simple empty-figure test
45 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 46 plt.close('all')
49 47
@@ -53,7 +51,7 b' def test_figure_to_svg():'
53 51 ax.plot([1,2,3])
54 52 plt.draw()
55 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 57 def test_import_pylab():
@@ -275,7 +275,7 b' def main() :'
275 275 if __name__ == '__main__' :
276 276 sys.exit(main())
277 277
278 __all__ = ['install_mathjax', 'main', 'dest']
278 __all__ = ['install_mathjax', 'main', 'default_dest']
279 279
280 280 """
281 281 Test notes:
@@ -20,14 +20,12 b' Authors'
20 20 import nose.tools as nt
21 21
22 22 # Our own imports
23 from IPython.testing import decorators as dec
24 23 from IPython.kernel.launcher import swallow_argv
25 24
26 25 #-----------------------------------------------------------------------------
27 26 # Classes and functions
28 27 #-----------------------------------------------------------------------------
29 28
30 @dec.parametric
31 29 def test_swallow_argv():
32 30 tests = [
33 31 # expected , argv , aliases, flags
@@ -56,5 +54,5 b' def test_swallow_argv():'
56 54 "expected : %r" % expected,
57 55 "returned : %r" % stripped,
58 56 ])
59 yield nt.assert_equal(expected, stripped, message)
57 nt.assert_equal(expected, stripped, message)
60 58
@@ -15,7 +15,6 b' import nose.tools as nt'
15 15
16 16 from IPython.kernel import KernelManager
17 17
18 from IPython.testing import decorators as dec
19 18 from IPython.utils.traitlets import (
20 19 HasTraits, TraitError, Bool, Unicode, Dict, Integer, List, Enum, Any,
21 20 )
@@ -60,7 +59,7 b' def flush_channels(kc=None):'
60 59 except Empty:
61 60 break
62 61 else:
63 list(validate_message(msg))
62 validate_message(msg)
64 63
65 64
66 65 def execute(code='', kc=None, **kwargs):
@@ -69,14 +68,14 b" def execute(code='', kc=None, **kwargs):"
69 68 kc = KC
70 69 msg_id = kc.execute(code=code, **kwargs)
71 70 reply = kc.get_shell_msg(timeout=TIMEOUT)
72 list(validate_message(reply, 'execute_reply', msg_id))
71 validate_message(reply, 'execute_reply', msg_id)
73 72 busy = kc.get_iopub_msg(timeout=TIMEOUT)
74 list(validate_message(busy, 'status', msg_id))
73 validate_message(busy, 'status', msg_id)
75 74 nt.assert_equal(busy['content']['execution_state'], 'busy')
76 75
77 76 if not kwargs.get('silent'):
78 77 pyin = kc.get_iopub_msg(timeout=TIMEOUT)
79 list(validate_message(pyin, 'pyin', msg_id))
78 validate_message(pyin, 'pyin', msg_id)
80 79 nt.assert_equal(pyin['content']['code'], code)
81 80
82 81 return msg_id, reply['content']
@@ -101,14 +100,14 b' class Reference(HasTraits):'
101 100 def check(self, d):
102 101 """validate a dict against our traits"""
103 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 104 # FIXME: always allow None, probably not a good idea
106 105 if d[key] is None:
107 106 continue
108 107 try:
109 108 setattr(self, key, d[key])
110 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 113 class RMessage(Reference):
@@ -133,14 +132,11 b' class ExecuteReply(Reference):'
133 132 status = Enum((u'ok', u'error'))
134 133
135 134 def check(self, d):
136 for tst in Reference.check(self, d):
137 yield tst
135 Reference.check(self, d)
138 136 if d['status'] == 'ok':
139 for tst in ExecuteReplyOkay().check(d):
140 yield tst
137 ExecuteReplyOkay().check(d)
141 138 elif d['status'] == 'error':
142 for tst in ExecuteReplyError().check(d):
143 yield tst
139 ExecuteReplyError().check(d)
144 140
145 141
146 142 class ExecuteReplyOkay(Reference):
@@ -177,11 +173,9 b' class OInfoReply(Reference):'
177 173 source = Unicode()
178 174
179 175 def check(self, d):
180 for tst in Reference.check(self, d):
181 yield tst
176 Reference.check(self, d)
182 177 if d['argspec'] is not None:
183 for tst in ArgSpec().check(d['argspec']):
184 yield tst
178 ArgSpec().check(d['argspec'])
185 179
186 180
187 181 class ArgSpec(Reference):
@@ -212,10 +206,8 b' class KernelInfoReply(Reference):'
212 206
213 207 def _ipython_version_changed(self, name, old, new):
214 208 for v in new:
215 nt.assert_true(
216 isinstance(v, int) or isinstance(v, basestring),
217 'expected int or string as version component, got {0!r}'
218 .format(v))
209 assert isinstance(v, int) or isinstance(v, basestring), \
210 'expected int or string as version component, got {0!r}'.format(v)
219 211
220 212
221 213 # IOPub messages
@@ -241,8 +233,8 b' class DisplayData(Reference):'
241 233 data = Dict()
242 234 def _data_changed(self, name, old, new):
243 235 for k,v in new.iteritems():
244 nt.assert_true(mime_pat.match(k))
245 nt.assert_true(isinstance(v, basestring), "expected string data, got %r" % v)
236 assert mime_pat.match(k)
237 nt.assert_is_instance(v, basestring)
246 238
247 239
248 240 class PyOut(Reference):
@@ -250,8 +242,8 b' class PyOut(Reference):'
250 242 data = Dict()
251 243 def _data_changed(self, name, old, new):
252 244 for k,v in new.iteritems():
253 nt.assert_true(mime_pat.match(k))
254 nt.assert_true(isinstance(v, basestring), "expected string data, got %r" % v)
245 assert mime_pat.match(k)
246 nt.assert_is_instance(v, basestring)
255 247
256 248
257 249 references = {
@@ -282,13 +274,12 b' def validate_message(msg, msg_type=None, parent=None):'
282 274 """
283 275 RMessage().check(msg)
284 276 if msg_type:
285 yield nt.assert_equal(msg['msg_type'], msg_type)
277 nt.assert_equal(msg['msg_type'], msg_type)
286 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 280 content = msg['content']
289 281 ref = references[msg['msg_type']]
290 for tst in ref.check(content):
291 yield tst
282 ref.check(content)
292 283
293 284
294 285 #-----------------------------------------------------------------------------
@@ -297,54 +288,47 b' def validate_message(msg, msg_type=None, parent=None):'
297 288
298 289 # Shell channel
299 290
300 @dec.parametric
301 291 def test_execute():
302 292 flush_channels()
303 293
304 294 msg_id = KC.execute(code='x=1')
305 295 reply = KC.get_shell_msg(timeout=TIMEOUT)
306 for tst in validate_message(reply, 'execute_reply', msg_id):
307 yield tst
296 validate_message(reply, 'execute_reply', msg_id)
308 297
309 298
310 @dec.parametric
311 299 def test_execute_silent():
312 300 flush_channels()
313 301 msg_id, reply = execute(code='x=1', silent=True)
314 302
315 303 # flush status=idle
316 304 status = KC.iopub_channel.get_msg(timeout=TIMEOUT)
317 for tst in validate_message(status, 'status', msg_id):
318 yield tst
305 validate_message(status, 'status', msg_id)
319 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 309 count = reply['execution_count']
323 310
324 311 msg_id, reply = execute(code='x=2', silent=True)
325 312
326 313 # flush status=idle
327 314 status = KC.iopub_channel.get_msg(timeout=TIMEOUT)
328 for tst in validate_message(status, 'status', msg_id):
329 yield tst
330 yield nt.assert_equal(status['content']['execution_state'], 'idle')
315 validate_message(status, 'status', msg_id)
316 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 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 323 def test_execute_error():
339 324 flush_channels()
340 325
341 326 msg_id, reply = execute(code='1/0')
342 yield nt.assert_equal(reply['status'], 'error')
343 yield nt.assert_equal(reply['ename'], 'ZeroDivisionError')
327 nt.assert_equal(reply['status'], 'error')
328 nt.assert_equal(reply['ename'], 'ZeroDivisionError')
344 329
345 330 pyerr = KC.iopub_channel.get_msg(timeout=TIMEOUT)
346 for tst in validate_message(pyerr, 'pyerr', msg_id):
347 yield tst
331 validate_message(pyerr, 'pyerr', msg_id)
348 332
349 333
350 334 def test_execute_inc():
@@ -405,17 +389,14 b' def test_user_expressions_fail():'
405 389 nt.assert_equal(foo['ename'], 'NameError')
406 390
407 391
408 @dec.parametric
409 392 def test_oinfo():
410 393 flush_channels()
411 394
412 395 msg_id = KC.object_info('a')
413 396 reply = KC.get_shell_msg(timeout=TIMEOUT)
414 for tst in validate_message(reply, 'object_info_reply', msg_id):
415 yield tst
397 validate_message(reply, 'object_info_reply', msg_id)
416 398
417 399
418 @dec.parametric
419 400 def test_oinfo_found():
420 401 flush_channels()
421 402
@@ -423,15 +404,13 b' def test_oinfo_found():'
423 404
424 405 msg_id = KC.object_info('a')
425 406 reply = KC.get_shell_msg(timeout=TIMEOUT)
426 for tst in validate_message(reply, 'object_info_reply', msg_id):
427 yield tst
407 validate_message(reply, 'object_info_reply', msg_id)
428 408 content = reply['content']
429 yield nt.assert_true(content['found'])
409 assert content['found']
430 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 414 def test_oinfo_detail():
436 415 flush_channels()
437 416
@@ -439,28 +418,24 b' def test_oinfo_detail():'
439 418
440 419 msg_id = KC.object_info('ip.object_inspect', detail_level=2)
441 420 reply = KC.get_shell_msg(timeout=TIMEOUT)
442 for tst in validate_message(reply, 'object_info_reply', msg_id):
443 yield tst
421 validate_message(reply, 'object_info_reply', msg_id)
444 422 content = reply['content']
445 yield nt.assert_true(content['found'])
423 assert content['found']
446 424 argspec = content['argspec']
447 yield nt.assert_true(isinstance(argspec, dict), "expected non-empty argspec dict, got %r" % argspec)
448 yield nt.assert_equal(argspec['defaults'], [0])
425 nt.assert_is_instance(argspec, dict, "expected non-empty argspec dict, got %r" % argspec)
426 nt.assert_equal(argspec['defaults'], [0])
449 427
450 428
451 @dec.parametric
452 429 def test_oinfo_not_found():
453 430 flush_channels()
454 431
455 432 msg_id = KC.object_info('dne')
456 433 reply = KC.get_shell_msg(timeout=TIMEOUT)
457 for tst in validate_message(reply, 'object_info_reply', msg_id):
458 yield tst
434 validate_message(reply, 'object_info_reply', msg_id)
459 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 439 def test_complete():
465 440 flush_channels()
466 441
@@ -468,49 +443,42 b' def test_complete():'
468 443
469 444 msg_id = KC.complete('al', 'al', 2)
470 445 reply = KC.get_shell_msg(timeout=TIMEOUT)
471 for tst in validate_message(reply, 'complete_reply', msg_id):
472 yield tst
446 validate_message(reply, 'complete_reply', msg_id)
473 447 matches = reply['content']['matches']
474 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 452 def test_kernel_info_request():
480 453 flush_channels()
481 454
482 455 msg_id = KC.kernel_info()
483 456 reply = KC.get_shell_msg(timeout=TIMEOUT)
484 for tst in validate_message(reply, 'kernel_info_reply', msg_id):
485 yield tst
457 validate_message(reply, 'kernel_info_reply', msg_id)
486 458
487 459
488 460 # IOPub channel
489 461
490 462
491 @dec.parametric
492 463 def test_stream():
493 464 flush_channels()
494 465
495 466 msg_id, reply = execute("print('hi')")
496 467
497 468 stdout = KC.iopub_channel.get_msg(timeout=TIMEOUT)
498 for tst in validate_message(stdout, 'stream', msg_id):
499 yield tst
469 validate_message(stdout, 'stream', msg_id)
500 470 content = stdout['content']
501 yield nt.assert_equal(content['name'], u'stdout')
502 yield nt.assert_equal(content['data'], u'hi\n')
471 nt.assert_equal(content['name'], u'stdout')
472 nt.assert_equal(content['data'], u'hi\n')
503 473
504 474
505 @dec.parametric
506 475 def test_display_data():
507 476 flush_channels()
508 477
509 478 msg_id, reply = execute("from IPython.core.display import display; display(1)")
510 479
511 480 display = KC.iopub_channel.get_msg(timeout=TIMEOUT)
512 for tst in validate_message(display, 'display_data', parent=msg_id):
513 yield tst
481 validate_message(display, 'display_data', parent=msg_id)
514 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 15 import nose.tools as nt
16 16
17 from IPython.testing import decorators as dec
18
19 17 from IPython.kernel import launcher, connect
20 18 from IPython import kernel
21 19
@@ -23,25 +21,21 b' from IPython import kernel'
23 21 # Classes and functions
24 22 #-----------------------------------------------------------------------------
25 23
26 @dec.parametric
27 24 def test_kms():
28 25 for base in ("", "Multi"):
29 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 29 def test_kcs():
34 30 for base in ("", "Blocking"):
35 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 34 def test_launcher():
40 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 38 def test_connect():
45 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 46 # Tests
47 47 #-------------------------------------------------------------------------------
48 48
49 @dec.parametric
50 49 def test_roundtrip_simple():
51 50 for obj in [
52 51 'hello',
@@ -55,18 +54,16 b' def test_roundtrip_simple():'
55 54 (b'123', 'hello'),
56 55 ]:
57 56 obj2 = roundtrip(obj)
58 yield nt.assert_equals(obj, obj2)
57 nt.assert_equal(obj, obj2)
59 58
60 @dec.parametric
61 59 def test_roundtrip_nested():
62 60 for obj in [
63 61 dict(a=range(5), b={1:b'hello'}),
64 62 [range(5),[range(3),(1,[b'whoda'])]],
65 63 ]:
66 64 obj2 = roundtrip(obj)
67 yield nt.assert_equals(obj, obj2)
65 nt.assert_equal(obj, obj2)
68 66
69 @dec.parametric
70 67 def test_roundtrip_buffered():
71 68 for obj in [
72 69 dict(a=b"x"*1025),
@@ -74,10 +71,10 b' def test_roundtrip_buffered():'
74 71 [b"hello"*501, 1,2,3]
75 72 ]:
76 73 bufs = serialize_object(obj)
77 yield nt.assert_equals(len(bufs), 2)
74 nt.assert_equal(len(bufs), 2)
78 75 obj2, remainder = unserialize_object(bufs)
79 yield nt.assert_equals(remainder, [])
80 yield nt.assert_equals(obj, obj2)
76 nt.assert_equal(remainder, [])
77 nt.assert_equal(obj, obj2)
81 78
82 79 def _scrub_nan(A):
83 80 """scrub nans out of empty arrays
@@ -93,7 +90,6 b' def _scrub_nan(A):'
93 90 # e.g. str dtype
94 91 pass
95 92
96 @dec.parametric
97 93 @dec.skip_without('numpy')
98 94 def test_numpy():
99 95 import numpy
@@ -104,12 +100,11 b' def test_numpy():'
104 100 _scrub_nan(A)
105 101 bufs = serialize_object(A)
106 102 B, r = unserialize_object(bufs)
107 yield nt.assert_equals(r, [])
108 yield nt.assert_equals(A.shape, B.shape)
109 yield nt.assert_equals(A.dtype, B.dtype)
110 yield assert_array_equal(A,B)
103 nt.assert_equal(r, [])
104 nt.assert_equal(A.shape, B.shape)
105 nt.assert_equal(A.dtype, B.dtype)
106 assert_array_equal(A,B)
111 107
112 @dec.parametric
113 108 @dec.skip_without('numpy')
114 109 def test_recarray():
115 110 import numpy
@@ -124,12 +119,11 b' def test_recarray():'
124 119
125 120 bufs = serialize_object(A)
126 121 B, r = unserialize_object(bufs)
127 yield nt.assert_equals(r, [])
128 yield nt.assert_equals(A.shape, B.shape)
129 yield nt.assert_equals(A.dtype, B.dtype)
130 yield assert_array_equal(A,B)
122 nt.assert_equal(r, [])
123 nt.assert_equal(A.shape, B.shape)
124 nt.assert_equal(A.dtype, B.dtype)
125 assert_array_equal(A,B)
131 126
132 @dec.parametric
133 127 @dec.skip_without('numpy')
134 128 def test_numpy_in_seq():
135 129 import numpy
@@ -140,15 +134,14 b' def test_numpy_in_seq():'
140 134 _scrub_nan(A)
141 135 bufs = serialize_object((A,1,2,b'hello'))
142 136 canned = pickle.loads(bufs[0])
143 yield nt.assert_true(canned[0], CannedArray)
137 nt.assert_is_instance(canned[0], CannedArray)
144 138 tup, r = unserialize_object(bufs)
145 139 B = tup[0]
146 yield nt.assert_equals(r, [])
147 yield nt.assert_equals(A.shape, B.shape)
148 yield nt.assert_equals(A.dtype, B.dtype)
149 yield assert_array_equal(A,B)
140 nt.assert_equal(r, [])
141 nt.assert_equal(A.shape, B.shape)
142 nt.assert_equal(A.dtype, B.dtype)
143 assert_array_equal(A,B)
150 144
151 @dec.parametric
152 145 @dec.skip_without('numpy')
153 146 def test_numpy_in_dict():
154 147 import numpy
@@ -159,27 +152,25 b' def test_numpy_in_dict():'
159 152 _scrub_nan(A)
160 153 bufs = serialize_object(dict(a=A,b=1,c=range(20)))
161 154 canned = pickle.loads(bufs[0])
162 yield nt.assert_true(canned['a'], CannedArray)
155 nt.assert_is_instance(canned['a'], CannedArray)
163 156 d, r = unserialize_object(bufs)
164 157 B = d['a']
165 yield nt.assert_equals(r, [])
166 yield nt.assert_equals(A.shape, B.shape)
167 yield nt.assert_equals(A.dtype, B.dtype)
168 yield assert_array_equal(A,B)
158 nt.assert_equal(r, [])
159 nt.assert_equal(A.shape, B.shape)
160 nt.assert_equal(A.dtype, B.dtype)
161 assert_array_equal(A,B)
169 162
170 @dec.parametric
171 163 def test_class():
172 164 @interactive
173 165 class C(object):
174 166 a=5
175 167 bufs = serialize_object(dict(C=C))
176 168 canned = pickle.loads(bufs[0])
177 yield nt.assert_true(canned['C'], CannedClass)
169 nt.assert_is_instance(canned['C'], CannedClass)
178 170 d, r = unserialize_object(bufs)
179 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 174 def test_class_oldstyle():
184 175 @interactive
185 176 class C:
@@ -187,42 +178,38 b' def test_class_oldstyle():'
187 178
188 179 bufs = serialize_object(dict(C=C))
189 180 canned = pickle.loads(bufs[0])
190 yield nt.assert_true(isinstance(canned['C'], CannedClass))
181 nt.assert_is_instance(canned['C'], CannedClass)
191 182 d, r = unserialize_object(bufs)
192 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 186 def test_tuple():
197 187 tup = (lambda x:x, 1)
198 188 bufs = serialize_object(tup)
199 189 canned = pickle.loads(bufs[0])
200 yield nt.assert_true(isinstance(canned, tuple))
190 nt.assert_is_instance(canned, tuple)
201 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 194 point = namedtuple('point', 'x y')
205 195
206 @dec.parametric
207 196 def test_namedtuple():
208 197 p = point(1,2)
209 198 bufs = serialize_object(p)
210 199 canned = pickle.loads(bufs[0])
211 yield nt.assert_true(isinstance(canned, point))
200 nt.assert_is_instance(canned, point)
212 201 p2, r = unserialize_object(bufs, globals())
213 yield nt.assert_equal(p2.x, p.x)
214 yield nt.assert_equal(p2.y, p.y)
202 nt.assert_equal(p2.x, p.x)
203 nt.assert_equal(p2.y, p.y)
215 204
216 @dec.parametric
217 205 def test_list():
218 206 lis = [lambda x:x, 1]
219 207 bufs = serialize_object(lis)
220 208 canned = pickle.loads(bufs[0])
221 yield nt.assert_true(isinstance(canned, list))
209 nt.assert_is_instance(canned, list)
222 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 213 def test_class_inheritance():
227 214 @interactive
228 215 class C(object):
@@ -234,8 +221,8 b' def test_class_inheritance():'
234 221
235 222 bufs = serialize_object(dict(D=D))
236 223 canned = pickle.loads(bufs[0])
237 yield nt.assert_true(canned['D'], CannedClass)
224 nt.assert_is_instance(canned['D'], CannedClass)
238 225 d, r = unserialize_object(bufs)
239 226 D2 = d['D']
240 yield nt.assert_equal(D2.a, D.a)
241 yield nt.assert_equal(D2.b, D.b)
227 nt.assert_equal(D2.a, D.a)
228 nt.assert_equal(D2.b, D.b)
@@ -39,7 +39,7 b' class TestAnsi(TestsBase):'
39 39 'hello' : 'hello'}
40 40
41 41 for inval, outval in correct_outputs.items():
42 yield self._try_strip_ansi(inval, outval)
42 self._try_strip_ansi(inval, outval)
43 43
44 44
45 45 def _try_strip_ansi(self, inval, outval):
@@ -58,7 +58,7 b' class TestAnsi(TestsBase):'
58 58 'hello' : 'hello'}
59 59
60 60 for inval, outval in correct_outputs.items():
61 yield self._try_ansi2html(inval, outval)
61 self._try_ansi2html(inval, outval)
62 62
63 63
64 64 def _try_ansi2html(self, inval, outval):
@@ -77,7 +77,7 b' class TestAnsi(TestsBase):'
77 77 'hello' : 'hello'}
78 78
79 79 for inval, outval in correct_outputs.items():
80 yield self._try_ansi2latex(inval, outval)
80 self._try_ansi2latex(inval, outval)
81 81
82 82
83 83 def _try_ansi2latex(self, inval, outval):
@@ -49,13 +49,13 b' class TestHighlight(TestsBase):'
49 49 def test_highlight2html(self):
50 50 """highlight2html test"""
51 51 for index, test in enumerate(self.tests):
52 yield self._try_highlight(highlight2html, test, self.tokens[index])
52 self._try_highlight(highlight2html, test, self.tokens[index])
53 53
54 54
55 55 def test_highlight2latex(self):
56 56 """highlight2latex test"""
57 57 for index, test in enumerate(self.tests):
58 yield self._try_highlight(highlight2latex, test, self.tokens[index])
58 self._try_highlight(highlight2latex, test, self.tokens[index])
59 59
60 60
61 61 def _try_highlight(self, method, test, tokens):
@@ -35,7 +35,7 b' class TestLatex(TestsBase):'
35 35 ('','')]
36 36
37 37 for test in tests:
38 yield self._try_escape_latex(test[0], test[1])
38 self._try_escape_latex(test[0], test[1])
39 39
40 40
41 41 def _try_escape_latex(self, test, result):
@@ -56,7 +56,7 b' class TestLatex(TestsBase):'
56 56 ('','')]
57 57
58 58 for test in tests:
59 yield self._try_strip_math_space(test[0], test[1])
59 self._try_strip_math_space(test[0], test[1])
60 60
61 61
62 62 def _try_strip_math_space(self, test, result):
@@ -61,14 +61,14 b' class TestMarkdown(TestsBase):'
61 61 def test_markdown2latex(self):
62 62 """markdown2latex test"""
63 63 for index, test in enumerate(self.tests):
64 yield self._try_markdown(markdown2latex, test, self.tokens[index])
64 self._try_markdown(markdown2latex, test, self.tokens[index])
65 65
66 66
67 67 @dec.onlyif_cmds_exist('pandoc')
68 68 def test_markdown2html(self):
69 69 """markdown2html test"""
70 70 for index, test in enumerate(self.tests):
71 yield self._try_markdown(markdown2html, test, self.tokens[index])
71 self._try_markdown(markdown2html, test, self.tokens[index])
72 72
73 73
74 74 @dec.onlyif_cmds_exist('pandoc')
@@ -81,7 +81,7 b' class TestMarkdown(TestsBase):'
81 81 tokens[1] = r'\*\*test'
82 82
83 83 for index, test in enumerate(self.tests):
84 yield self._try_markdown(markdown2rst, test, tokens[index])
84 self._try_markdown(markdown2rst, test, tokens[index])
85 85
86 86
87 87 def _try_markdown(self, method, test, tokens):
@@ -15,7 +15,6 b' Module with tests for Strings'
15 15 #-----------------------------------------------------------------------------
16 16 import os
17 17
18 from IPython.testing import decorators as dec
19 18 from ...tests.base import TestsBase
20 19 from ..strings import (wrap_text, html2text, add_anchor, strip_dollars,
21 20 strip_files_prefix, get_lines, comment_lines, ipython2python, posix_path,
@@ -36,7 +35,7 b' class TestStrings(TestsBase):'
36 35 As if the strings were thine, shouldst know of this.
37 36 """
38 37 for length in [30,5,1]:
39 yield self._confirm_wrap_text(test_text, length)
38 self._confirm_wrap_text(test_text, length)
40 39
41 40
42 41 def _confirm_wrap_text(self, text, length):
@@ -73,7 +72,7 b' class TestStrings(TestsBase):'
73 72 ('Hello', 'Hello'),
74 73 ('W$o$rld', 'W$o$rld')]
75 74 for test in tests:
76 yield self._try_strip_dollars(test[0], test[1])
75 self._try_strip_dollars(test[0], test[1])
77 76
78 77
79 78 def _try_strip_dollars(self, test, result):
@@ -89,7 +88,7 b' class TestStrings(TestsBase):'
89 88 ('My files are in `files/`', 'My files are in `files/`'),
90 89 ('<a href="files/test.html">files/test.html</a>', '<a href="test.html">files/test.html</a>')]
91 90 for test in tests:
92 yield self._try_files_prefix(test[0], test[1])
91 self._try_files_prefix(test[0], test[1])
93 92
94 93
95 94 def _try_files_prefix(self, test, result):
@@ -16,12 +16,12 b' Contains base test class for nbconvert'
16 16 import os
17 17 import glob
18 18 import shutil
19 import unittest
19 20
20 21 import IPython
21 22 from IPython.utils.tempdir import TemporaryWorkingDirectory
22 23 from IPython.utils.process import get_output_error_code
23 24 from IPython.testing.tools import get_ipython_cmd
24 from IPython.testing.ipunittest import ParametricTestCase
25 25
26 26 # a trailing space allows for simpler concatenation with the other arguments
27 27 ipy_cmd = get_ipython_cmd(as_string=True) + " "
@@ -31,7 +31,7 b' ipy_cmd = get_ipython_cmd(as_string=True) + " "'
31 31 #-----------------------------------------------------------------------------
32 32
33 33
34 class TestsBase(ParametricTestCase):
34 class TestsBase(unittest.TestCase):
35 35 """Base tests class. Contains useful fuzzy comparison and nbconvert
36 36 functions."""
37 37
@@ -86,7 +86,7 b' class TestsBase(ParametricTestCase):'
86 86
87 87 For example:
88 88 Replace "ii" with "i" in the string "Hiiii" yields "Hii"
89 Another replacement yields "Hi" (the desired output)
89 Another replacement cds "Hi" (the desired output)
90 90
91 91 Parameters:
92 92 -----------
@@ -17,20 +17,14 b' Authors:'
17 17 #-------------------------------------------------------------------------------
18 18
19 19 import re
20 import sys
21 20 import time
22 21
23 import zmq
24 from nose import SkipTest
25 22
26 23 from IPython.testing import decorators as dec
27 from IPython.testing.ipunittest import ParametricTestCase
28 24 from IPython.utils.io import capture_output
29 25
30 26 from IPython import parallel as pmod
31 from IPython.parallel import error
32 27 from IPython.parallel import AsyncResult
33 from IPython.parallel.util import interactive
34 28
35 29 from IPython.parallel.tests import add_engines
36 30
@@ -39,7 +33,7 b' from .clienttest import ClusterTestCase, generate_output'
39 33 def setup():
40 34 add_engines(3, total=True)
41 35
42 class TestParallelMagics(ClusterTestCase, ParametricTestCase):
36 class TestParallelMagics(ClusterTestCase):
43 37
44 38 def test_px_blocking(self):
45 39 ip = get_ipython()
@@ -22,20 +22,16 b' import platform'
22 22 import time
23 23 from collections import namedtuple
24 24 from tempfile import mktemp
25 from StringIO import StringIO
26 25
27 26 import zmq
28 from nose import SkipTest
29 27 from nose.plugins.attrib import attr
30 28
31 29 from IPython.testing import decorators as dec
32 from IPython.testing.ipunittest import ParametricTestCase
33 30 from IPython.utils.io import capture_output
34 31
35 32 from IPython import parallel as pmod
36 33 from IPython.parallel import error
37 34 from IPython.parallel import AsyncResult, AsyncHubResult, AsyncMapResult
38 from IPython.parallel import DirectView
39 35 from IPython.parallel.util import interactive
40 36
41 37 from IPython.parallel.tests import add_engines
@@ -47,7 +43,7 b' def setup():'
47 43
48 44 point = namedtuple("point", "x y")
49 45
50 class TestView(ClusterTestCase, ParametricTestCase):
46 class TestView(ClusterTestCase):
51 47
52 48 def setUp(self):
53 49 # On Win XP, wait for resource cleanup, else parallel test group fails
@@ -242,7 +238,7 b' class TestView(ClusterTestCase, ParametricTestCase):'
242 238 @skip_without('numpy')
243 239 def test_scatter_gather_numpy(self):
244 240 import numpy
245 from numpy.testing.utils import assert_array_equal, assert_array_almost_equal
241 from numpy.testing.utils import assert_array_equal
246 242 view = self.client[:]
247 243 a = numpy.arange(64)
248 244 view.scatter('a', a, block=True)
@@ -280,7 +276,7 b' class TestView(ClusterTestCase, ParametricTestCase):'
280 276 def test_apply_numpy(self):
281 277 """view.apply(f, ndarray)"""
282 278 import numpy
283 from numpy.testing.utils import assert_array_equal, assert_array_almost_equal
279 from numpy.testing.utils import assert_array_equal
284 280
285 281 A = numpy.random.random((100,100))
286 282 view = self.client[-1]
@@ -368,7 +364,7 b' class TestView(ClusterTestCase, ParametricTestCase):'
368 364 @skip_without('numpy')
369 365 def test_scatter_gather_numpy_nonblocking(self):
370 366 import numpy
371 from numpy.testing.utils import assert_array_equal, assert_array_almost_equal
367 from numpy.testing.utils import assert_array_equal
372 368 a = numpy.arange(64)
373 369 view = self.client[:]
374 370 ar = view.scatter('a', a, block=False)
@@ -512,19 +508,17 b' class TestView(ClusterTestCase, ParametricTestCase):'
512 508 def test_len(self):
513 509 """len(view) makes sense"""
514 510 e0 = self.client[self.client.ids[0]]
515 yield self.assertEqual(len(e0), 1)
511 self.assertEqual(len(e0), 1)
516 512 v = self.client[:]
517 yield self.assertEqual(len(v), len(self.client.ids))
513 self.assertEqual(len(v), len(self.client.ids))
518 514 v = self.client.direct_view('all')
519 yield self.assertEqual(len(v), len(self.client.ids))
515 self.assertEqual(len(v), len(self.client.ids))
520 516 v = self.client[:2]
521 yield self.assertEqual(len(v), 2)
517 self.assertEqual(len(v), 2)
522 518 v = self.client[:1]
523 yield self.assertEqual(len(v), 1)
519 self.assertEqual(len(v), 1)
524 520 v = self.client.load_balanced_view()
525 yield self.assertEqual(len(v), len(self.client.ids))
526 # parametric tests seem to require manual closing?
527 self.client.close()
521 self.assertEqual(len(v), len(self.client.ids))
528 522
529 523
530 524 # begin execute tests
@@ -16,10 +16,6 b' Included decorators:'
16 16
17 17 Lightweight testing that remains unittest-compatible.
18 18
19 - @parametric, for parametric test support that is vastly easier to use than
20 nose's for debugging. With ours, if a test fails, the stack under inspection
21 is that of the test and not that of the test framework.
22
23 19 - An @as_unittest decorator can be used to tag any normal parameter-less
24 20 function as a unittest TestCase. Then, both nose and normal unittest will
25 21 recognize it as such. This will make it easier to migrate away from Nose if
@@ -58,12 +54,6 b' import unittest'
58 54 # This is Michele Simionato's decorator module, kept verbatim.
59 55 from IPython.external.decorator import decorator
60 56
61 # We already have python3-compliant code for parametric tests
62 if sys.version[0]=='2':
63 from _paramtestpy2 import parametric
64 else:
65 from _paramtestpy3 import parametric
66
67 57 # Expose the unittest-driven decorators
68 58 from ipunittest import ipdoctest, ipdocstring
69 59
@@ -37,16 +37,9 b' from __future__ import absolute_import'
37 37
38 38 # Stdlib
39 39 import re
40 import sys
41 40 import unittest
42 41 from doctest import DocTestFinder, DocTestRunner, TestResults
43 42
44 # We already have python3-compliant code for parametric tests
45 if sys.version[0]=='2':
46 from ._paramtestpy2 import ParametricTestCase
47 else:
48 from ._paramtestpy3 import ParametricTestCase
49
50 43 #-----------------------------------------------------------------------------
51 44 # Classes and functions
52 45 #-----------------------------------------------------------------------------
@@ -12,7 +12,6 b' import nose.tools as nt'
12 12 # Our own
13 13 from IPython.testing import decorators as dec
14 14 from IPython.testing.skipdoctest import skip_doctest
15 from IPython.testing.ipunittest import ParametricTestCase
16 15
17 16 #-----------------------------------------------------------------------------
18 17 # Utilities
@@ -47,24 +46,6 b' def trivial():'
47 46 """A trivial test"""
48 47 pass
49 48
50 # Some examples of parametric tests.
51
52 def is_smaller(i,j):
53 assert i<j,"%s !< %s" % (i,j)
54
55 class Tester(ParametricTestCase):
56
57 def test_parametric(self):
58 yield is_smaller(3, 4)
59 x, y = 1, 2
60 yield is_smaller(x, y)
61
62 @dec.parametric
63 def test_par_standalone():
64 yield is_smaller(3, 4)
65 x, y = 1, 2
66 yield is_smaller(x, y)
67
68 49
69 50 @dec.skip
70 51 def test_deliberately_broken():
@@ -51,26 +51,24 b' def test_full_path_win32():'
51 51 nt.assert_equal(result, ['c:\\a.txt'])
52 52
53 53
54 @dec.parametric
55 54 def test_parser():
56 55 err = ("FAILED (errors=1)", 1, 0)
57 56 fail = ("FAILED (failures=1)", 0, 1)
58 57 both = ("FAILED (errors=1, failures=1)", 1, 1)
59 58 for txt, nerr, nfail in [err, fail, both]:
60 59 nerr1, nfail1 = tt.parse_test_output(txt)
61 yield nt.assert_equal(nerr, nerr1)
62 yield nt.assert_equal(nfail, nfail1)
60 nt.assert_equal(nerr, nerr1)
61 nt.assert_equal(nfail, nfail1)
63 62
64 63
65 @dec.parametric
66 64 def test_temp_pyfile():
67 65 src = 'pass\n'
68 66 fname, fh = tt.temp_pyfile(src)
69 yield nt.assert_true(os.path.isfile(fname))
67 assert os.path.isfile(fname)
70 68 fh.close()
71 69 with open(fname) as fh2:
72 70 src2 = fh2.read()
73 yield nt.assert_equal(src2, src)
71 nt.assert_equal(src2, src)
74 72
75 73 class TestAssertPrints(unittest.TestCase):
76 74 def test_passing(self):
@@ -17,10 +17,10 b' import sys'
17 17
18 18 from StringIO import StringIO
19 19 from subprocess import Popen, PIPE
20 import unittest
20 21
21 22 import nose.tools as nt
22 23
23 from IPython.testing.ipunittest import ParametricTestCase
24 24 from IPython.utils.io import Tee, capture_output
25 25 from IPython.utils.py3compat import doctest_refactor_print
26 26
@@ -38,7 +38,7 b' def test_tee_simple():'
38 38 nt.assert_equal(chan.getvalue(), text+"\n")
39 39
40 40
41 class TeeTestCase(ParametricTestCase):
41 class TeeTestCase(unittest.TestCase):
42 42
43 43 def tchan(self, channel, check='close'):
44 44 trap = StringIO()
@@ -61,7 +61,7 b' class TeeTestCase(ParametricTestCase):'
61 61 def test(self):
62 62 for chan in ['stdout', 'stderr']:
63 63 for check in ['close', 'del']:
64 yield self.tchan(chan, check)
64 self.tchan(chan, check)
65 65
66 66 def test_io_init():
67 67 """Test that io.stdin/out/err exist at startup"""
@@ -19,7 +19,6 b' from base64 import decodestring'
19 19 import nose.tools as nt
20 20
21 21 # our own
22 from IPython.testing import decorators as dec
23 22 from IPython.utils import jsonutil, tz
24 23 from ..jsonutil import json_clean, encode_images
25 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 64 def test_encode_images():
67 65 # invalid data, but the header and footer are from real files
68 66 pngdata = b'\x89PNG\r\n\x1a\nblahblahnotactuallyvalidIEND\xaeB`\x82'
@@ -76,19 +74,19 b' def test_encode_images():'
76 74 for key, value in fmt.iteritems():
77 75 # encoded has unicode, want bytes
78 76 decoded = decodestring(encoded[key].encode('ascii'))
79 yield nt.assert_equal(decoded, value)
77 nt.assert_equal(decoded, value)
80 78 encoded2 = encode_images(encoded)
81 yield nt.assert_equal(encoded, encoded2)
79 nt.assert_equal(encoded, encoded2)
82 80
83 81 b64_str = {}
84 82 for key, encoded in encoded.iteritems():
85 83 b64_str[key] = unicode_to_str(encoded)
86 84 encoded3 = encode_images(b64_str)
87 yield nt.assert_equal(encoded3, b64_str)
85 nt.assert_equal(encoded3, b64_str)
88 86 for key, value in fmt.iteritems():
89 87 # encoded3 has str, want bytes
90 88 decoded = decodestring(str_to_bytes(encoded3[key]))
91 yield nt.assert_equal(decoded, value)
89 nt.assert_equal(decoded, value)
92 90
93 91 def test_lambda():
94 92 jc = json_clean(lambda : 1)
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
General Comments 0
You need to be logged in to leave comments. Login now