Author: Armin Rigo <ar...@tunes.org>
Branch: 
Changeset: r90365:740872e8e466
Date: 2017-02-26 18:05 +0100
http://bitbucket.org/pypy/pypy/changeset/740872e8e466/

Log:    (stevie, arigo)

        Test and fix: outdentation errors (only!) were missing a 'filename'

diff --git a/pypy/interpreter/astcompiler/test/test_compiler.py 
b/pypy/interpreter/astcompiler/test/test_compiler.py
--- a/pypy/interpreter/astcompiler/test/test_compiler.py
+++ b/pypy/interpreter/astcompiler/test/test_compiler.py
@@ -725,6 +725,19 @@
         else:
             raise Exception("DID NOT RAISE")
 
+    def test_indent_error_filename(self):
+        source = py.code.Source("""
+        def f():
+          x
+         y
+        """)
+        try:
+            self.simple_test(source, None, None)
+        except IndentationError as e:
+            assert e.filename == '<test>'
+        else:
+            raise Exception("DID NOT RAISE")
+
     def test_kwargs_last(self):
         py.test.raises(SyntaxError, self.simple_test, "int(base=10, '2')",
                        None, None)
diff --git a/pypy/interpreter/pyparser/pyparse.py 
b/pypy/interpreter/pyparser/pyparse.py
--- a/pypy/interpreter/pyparser/pyparse.py
+++ b/pypy/interpreter/pyparser/pyparse.py
@@ -167,6 +167,9 @@
             except error.TokenError as e:
                 e.filename = compile_info.filename
                 raise
+            except error.TokenIndentationError as e:
+                e.filename = compile_info.filename
+                raise
             except parser.ParseError as e:
                 # Catch parse errors, pretty them up and reraise them as a
                 # SyntaxError.
diff --git a/pypy/interpreter/test/test_compiler.py 
b/pypy/interpreter/test/test_compiler.py
--- a/pypy/interpreter/test/test_compiler.py
+++ b/pypy/interpreter/test/test_compiler.py
@@ -77,7 +77,7 @@
         """)
         assert self.space.unwrap(w_args) == (
             'unindent does not match any outer indentation level',
-            (None, 3, 0, ' y\n'))
+            ('<string>', 3, 0, ' y\n'))
 
     def test_getcodeflags(self):
         code = self.compiler.compile('from __future__ import division\n',
@@ -1032,6 +1032,18 @@
         else:
             raise Exception("DID NOT RAISE")
 
+    def test_outdentation_error_filename(self):
+        source = """if 1:
+         x
+        y
+        """
+        try:
+            exec(source)
+        except IndentationError as e:
+            assert e.filename == '<string>'
+        else:
+            raise Exception("DID NOT RAISE")
+
     def test_repr_vs_str(self):
         source1 = "x = (\n"
         source2 = "x = (\n\n"
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to