Show More
@@ -569,3 +569,89 b' class TestView(ClusterTestCase, ParametricTestCase):' | |||
|
569 | 569 | # parametric tests seem to require manual closing? |
|
570 | 570 | self.client.close() |
|
571 | 571 | |
|
572 | ||
|
573 | # begin execute tests | |
|
574 | ||
|
575 | def test_execute_reply(self): | |
|
576 | e0 = self.client[self.client.ids[0]] | |
|
577 | e0.block = True | |
|
578 | ar = e0.execute("5", silent=False) | |
|
579 | er = ar.get() | |
|
580 | time.sleep(0.2) | |
|
581 | self.assertEquals(str(er), "<ExecuteReply[%i]: 5>" % er.execution_count) | |
|
582 | self.assertEquals(er.pyout['text/plain'], '5') | |
|
583 | ||
|
584 | def test_execute_reply_stdout(self): | |
|
585 | e0 = self.client[self.client.ids[0]] | |
|
586 | e0.block = True | |
|
587 | ar = e0.execute("print (5)", silent=False) | |
|
588 | er = ar.get() | |
|
589 | time.sleep(0.2) | |
|
590 | self.assertEquals(er.stdout.strip(), '5') | |
|
591 | ||
|
592 | def test_execute_pyout(self): | |
|
593 | """execute triggers pyout with silent=False""" | |
|
594 | view = self.client[:] | |
|
595 | ar = view.execute("5", silent=False, block=True) | |
|
596 | time.sleep(0.2) | |
|
597 | expected = [{'text/plain' : '5'}] * len(view) | |
|
598 | self.assertEquals(ar.pyout, expected) | |
|
599 | ||
|
600 | def test_execute_silent(self): | |
|
601 | """execute does not trigger pyout with silent=True""" | |
|
602 | view = self.client[:] | |
|
603 | ar = view.execute("5", block=True) | |
|
604 | expected = [None] * len(view) | |
|
605 | self.assertEquals(ar.pyout, expected) | |
|
606 | ||
|
607 | def test_execute_magic(self): | |
|
608 | """execute accepts IPython commands""" | |
|
609 | view = self.client[:] | |
|
610 | view.execute("a = 5") | |
|
611 | ar = view.execute("%whos", block=True) | |
|
612 | # this will raise, if that failed | |
|
613 | ar.get(5) | |
|
614 | time.sleep(0.2) | |
|
615 | for stdout in ar.stdout: | |
|
616 | lines = stdout.splitlines() | |
|
617 | self.assertEquals(lines[0].split(), ['Variable', 'Type', 'Data/Info']) | |
|
618 | found = False | |
|
619 | for line in lines[2:]: | |
|
620 | split = line.split() | |
|
621 | if split == ['a', 'int', '5']: | |
|
622 | found = True | |
|
623 | break | |
|
624 | self.assertTrue(found, "whos output wrong: %s" % stdout) | |
|
625 | ||
|
626 | def test_execute_displaypub(self): | |
|
627 | """execute tracks display_pub output""" | |
|
628 | view = self.client[:] | |
|
629 | view.execute("from IPython.core.display import *") | |
|
630 | ar = view.execute("[ display(i) for i in range(5) ]", block=True) | |
|
631 | time.sleep(0.2) | |
|
632 | outs = [ {u'text/plain' : unicode(i)} for i in range(5) ] | |
|
633 | expected = [outs] * len(view) | |
|
634 | self.assertEquals(ar.outputs, expected) | |
|
635 | ||
|
636 | def test_apply_displaypub(self): | |
|
637 | """apply tracks display_pub output""" | |
|
638 | view = self.client[:] | |
|
639 | view.execute("from IPython.core.display import *") | |
|
640 | ||
|
641 | @interactive | |
|
642 | def publish(): | |
|
643 | [ display(i) for i in range(5) ] | |
|
644 | ||
|
645 | ar = view.apply_async(publish) | |
|
646 | ar.get(5) | |
|
647 | time.sleep(0.2) | |
|
648 | outs = [ {u'text/plain' : unicode(j)} for j in range(5) ] | |
|
649 | expected = [outs] * len(view) | |
|
650 | self.assertEquals(ar.outputs, expected) | |
|
651 | ||
|
652 | def test_execute_raises(self): | |
|
653 | """exceptions in execute requests raise appropriately""" | |
|
654 | view = self.client[-1] | |
|
655 | ar = view.execute("1/0") | |
|
656 | self.assertRaisesRemote(ZeroDivisionError, ar.get, 2) | |
|
657 |
General Comments 0
You need to be logged in to leave comments.
Login now