##// END OF EJS Templates
Fix blank input crashing IPython, +unittest
Thomas Kluyver -
Show More
@@ -2092,20 +2092,21 b' class InteractiveShell(Configurable, Magic):'
2092 # Store the untransformed code
2092 # Store the untransformed code
2093 raw_cell = cell
2093 raw_cell = cell
2094
2094
2095 # We only do dynamic transforms on a single line. We need to do this
2096 # first, because a macro can be expanded to several lines, which then
2097 # need to be split into blocks again.
2098 if len(cell.splitlines()) <= 1:
2099 temp = self.input_splitter.split_blocks(cell)
2100 cell = self.prefilter_manager.prefilter_line(temp[0])
2101
2102 # We need to break up the input into executable blocks that can be run
2095 # We need to break up the input into executable blocks that can be run
2103 # in 'single' mode, to provide comfortable user behavior.
2096 # in 'single' mode, to provide comfortable user behavior.
2104 blocks = self.input_splitter.split_blocks(cell)
2097 blocks = self.input_splitter.split_blocks(cell)
2105
2098
2106 if not blocks:
2099 if not blocks: # Blank cell
2107 return
2100 return
2108
2101
2102 # We only do dynamic transforms on a single line. But a macro can
2103 # be expanded to several lines, so we need to split it into input
2104 # blocks again.
2105 if len(cell.splitlines()) <= 1:
2106 cell = self.prefilter_manager.prefilter_line(blocks[0])
2107 blocks = self.input_splitter.split_blocks(cell)
2108
2109
2109 # Store the 'ipython' version of the cell as well, since that's what
2110 # Store the 'ipython' version of the cell as well, since that's what
2110 # needs to go into the translated history and get executed (the
2111 # needs to go into the translated history and get executed (the
2111 # original cell may contain non-python syntax).
2112 # original cell may contain non-python syntax).
@@ -35,3 +35,9 b' class InteractiveShellTestCase(unittest.TestCase):'
35 # And also multi-line cells
35 # And also multi-line cells
36 ip.run_cell('"""a\nb"""\n')
36 ip.run_cell('"""a\nb"""\n')
37 self.assertEquals(ip.user_ns['_'], 'a\nb')
37 self.assertEquals(ip.user_ns['_'], 'a\nb')
38
39 def test_run_empty_cell(self):
40 """Just make sure we don't get a horrible error with a blank
41 cell of input. Yes, I did overlook that."""
42 ip = get_ipython()
43 ip.run_cell('')
General Comments 0
You need to be logged in to leave comments. Login now