Show More
@@ -431,6 +431,8 b' class InteractiveShell(SingletonConfigurable):' | |||||
431 |
|
431 | |||
432 | last_execution_succeeded = Bool(True, help='Did last executed command succeeded') |
|
432 | last_execution_succeeded = Bool(True, help='Did last executed command succeeded') | |
433 |
|
433 | |||
|
434 | last_execution_result = Instance('IPython.core.interactiveshell.ExecutionResult', help='Result of executing the last command', allow_none=True) | |||
|
435 | ||||
434 | def __init__(self, ipython_dir=None, profile_dir=None, |
|
436 | def __init__(self, ipython_dir=None, profile_dir=None, | |
435 | user_module=None, user_ns=None, |
|
437 | user_module=None, user_ns=None, | |
436 | custom_exceptions=((), None), **kwargs): |
|
438 | custom_exceptions=((), None), **kwargs): | |
@@ -2613,7 +2615,7 b' class InteractiveShell(SingletonConfigurable):' | |||||
2613 | result = ExecutionResult() |
|
2615 | result = ExecutionResult() | |
2614 |
|
2616 | |||
2615 | if (not raw_cell) or raw_cell.isspace(): |
|
2617 | if (not raw_cell) or raw_cell.isspace(): | |
2616 | self.last_execution_succeeded = True |
|
2618 | self.last_execution_succeeded, self.last_execution_result = True, result | |
2617 | return result |
|
2619 | return result | |
2618 |
|
2620 | |||
2619 | if silent: |
|
2621 | if silent: | |
@@ -2624,7 +2626,7 b' class InteractiveShell(SingletonConfigurable):' | |||||
2624 |
|
2626 | |||
2625 | def error_before_exec(value): |
|
2627 | def error_before_exec(value): | |
2626 | result.error_before_exec = value |
|
2628 | result.error_before_exec = value | |
2627 | self.last_execution_succeeded = False |
|
2629 | self.last_execution_succeeded, self.last_execution_result = False, result | |
2628 | return result |
|
2630 | return result | |
2629 |
|
2631 | |||
2630 | self.events.trigger('pre_execute') |
|
2632 | self.events.trigger('pre_execute') | |
@@ -2714,7 +2716,7 b' class InteractiveShell(SingletonConfigurable):' | |||||
2714 | has_raised = self.run_ast_nodes(code_ast.body, cell_name, |
|
2716 | has_raised = self.run_ast_nodes(code_ast.body, cell_name, | |
2715 | interactivity=interactivity, compiler=compiler, result=result) |
|
2717 | interactivity=interactivity, compiler=compiler, result=result) | |
2716 |
|
2718 | |||
2717 | self.last_execution_succeeded = not has_raised |
|
2719 | self.last_execution_succeeded, self.last_execution_result = not has_raised, result | |
2718 |
|
2720 | |||
2719 | # Reset this so later displayed values do not modify the |
|
2721 | # Reset this so later displayed values do not modify the | |
2720 | # ExecutionResult |
|
2722 | # ExecutionResult |
@@ -470,6 +470,17 b' class InteractiveShellTestCase(unittest.TestCase):' | |||||
470 | text = ip.object_inspect_text('a') |
|
470 | text = ip.object_inspect_text('a') | |
471 | self.assertIsInstance(text, str) |
|
471 | self.assertIsInstance(text, str) | |
472 |
|
472 | |||
|
473 | def test_last_execution_result(self): | |||
|
474 | """ Check that last execution result gets set correctly (GH-10702) """ | |||
|
475 | result = ip.run_cell('a = 5; a') | |||
|
476 | self.assertTrue(ip.last_execution_succeeded) | |||
|
477 | self.assertEqual(ip.last_execution_result.result, 5) | |||
|
478 | ||||
|
479 | result = ip.run_cell('a = x_invalid_id_x') | |||
|
480 | self.assertFalse(ip.last_execution_succeeded) | |||
|
481 | self.assertFalse(ip.last_execution_result.success) | |||
|
482 | self.assertIsInstance(ip.last_execution_result.error_in_exec, NameError) | |||
|
483 | ||||
473 |
|
484 | |||
474 | class TestSafeExecfileNonAsciiPath(unittest.TestCase): |
|
485 | class TestSafeExecfileNonAsciiPath(unittest.TestCase): | |
475 |
|
486 |
General Comments 0
You need to be logged in to leave comments.
Login now