##// END OF EJS Templates
Merge branch 'dedent_prefix_bug' of https://github.com/dwf/ipython into dwf-dedent_prefix_bug
Fernando Perez -
r3705:5bb60efb merge
parent child Browse files
Show More
@@ -103,7 +103,13 b" ESC_PAREN = '/' # Call first argument with rest of line as arguments"
103 # while developing.
103 # while developing.
104
104
105 # compiled regexps for autoindent management
105 # compiled regexps for autoindent management
106 dedent_re = re.compile(r'^\s+raise|^\s+return|^\s+pass')
106 dedent_re = re.compile('|'.join([
107 r'^\s+raise(\s.*)?$', # raise statement (+ space + other stuff, maybe)
108 r'^\s+raise\([^\)]*\).*$', # wacky raise with immediate open paren
109 r'^\s+return(\s.*)?$', # normal return (+ space + other stuff, maybe)
110 r'^\s+return\([^\)]*\).*$', # wacky return with immediate open paren
111 r'^\s+pass\s*$' # pass (optionally followed by trailing spaces)
112 ]))
107 ini_spaces_re = re.compile(r'^([ \t\r\f\v]+)')
113 ini_spaces_re = re.compile(r'^([ \t\r\f\v]+)')
108
114
109 # regexp to match pure comment lines so we don't accidentally insert 'if 1:'
115 # regexp to match pure comment lines so we don't accidentally insert 'if 1:'
@@ -192,13 +192,42 b' class InputSplitterTestCase(unittest.TestCase):'
192 isp.push(" x = (1+\n 2)")
192 isp.push(" x = (1+\n 2)")
193 self.assertEqual(isp.indent_spaces, 4)
193 self.assertEqual(isp.indent_spaces, 4)
194
194
195 def test_dedent(self):
195 def test_dedent_pass(self):
196 isp = self.isp # shorthand
196 isp = self.isp # shorthand
197 isp.push('if 1:')
197 # should NOT cause dedent
198 isp.push('if 1:\n passes = 5')
198 self.assertEqual(isp.indent_spaces, 4)
199 self.assertEqual(isp.indent_spaces, 4)
199 isp.push(' pass')
200 isp.push('if 1:\n pass')
200 self.assertEqual(isp.indent_spaces, 0)
201 self.assertEqual(isp.indent_spaces, 0)
201
202 isp.push('if 1:\n pass ')
203 self.assertEqual(isp.indent_spaces, 0)
204
205 def test_dedent_raise(self):
206 isp = self.isp # shorthand
207 # should NOT cause dedent
208 isp.push('if 1:\n raised = 4')
209 self.assertEqual(isp.indent_spaces, 4)
210 isp.push('if 1:\n raise TypeError()')
211 self.assertEqual(isp.indent_spaces, 0)
212 isp.push('if 1:\n raise')
213 self.assertEqual(isp.indent_spaces, 0)
214 isp.push('if 1:\n raise ')
215 self.assertEqual(isp.indent_spaces, 0)
216
217 def test_dedent_return(self):
218 isp = self.isp # shorthand
219 # should NOT cause dedent
220 isp.push('if 1:\n returning = 4')
221 self.assertEqual(isp.indent_spaces, 4)
222 isp.push('if 1:\n return 5 + 493')
223 self.assertEqual(isp.indent_spaces, 0)
224 isp.push('if 1:\n return')
225 self.assertEqual(isp.indent_spaces, 0)
226 isp.push('if 1:\n return ')
227 self.assertEqual(isp.indent_spaces, 0)
228 isp.push('if 1:\n return(0)')
229 self.assertEqual(isp.indent_spaces, 0)
230
202 def test_push(self):
231 def test_push(self):
203 isp = self.isp
232 isp = self.isp
204 self.assertTrue(isp.push('x=1'))
233 self.assertTrue(isp.push('x=1'))
General Comments 0
You need to be logged in to leave comments. Login now