Commit 30906940 authored by Jeremy Hylton's avatar Jeremy Hylton

Fix compileall.py so that it fails on SyntaxErrors

The changes cause compilation failures in any file in the Python
installation lib directory to cause the install to fail.  It looks
like compileall.py intended to behave this way, but a change to
py_compile.py and a separate bug defeated it.

Fixes SF bug #412436

This change affects the test suite, which contains several files that
contain intentional errors.  The solution is to extend compileall.py
with the ability to skip compilation of selected files.

In the test suite, rename nocaret.py and test_future[3..7].py to start
with badsyntax_nocaret.py and badsyntax_future[3..7].py.  Update the
makefile to skip compilation of these files.  Update the tests to use
the name names for imports.

NB compileall.py is changed so that compile_dir() returns success only
if all recursive calls to compile_dir() also check success.
parent bc41957d
test_future
6
6
SyntaxError test_future3 3
SyntaxError test_future4 3
SyntaxError test_future5 4
SyntaxError test_future6 3
SyntaxError test_future7 3
SyntaxError badsyntax_future3 3
SyntaxError badsyntax_future4 3
SyntaxError badsyntax_future5 4
SyntaxError badsyntax_future6 3
SyntaxError badsyntax_future7 3
......@@ -199,11 +199,6 @@ NOTTESTS = [
'test_b2',
'test_future1',
'test_future2',
'test_future3',
'test_future4',
'test_future5',
'test_future6',
'test_future7',
]
def findtests(testdir=None, stdtests=STDTESTS, nottests=NOTTESTS):
......
......@@ -19,26 +19,26 @@ import test_future2
# The remaining tests should fail
try:
import test_future3
import badsyntax_future3
except SyntaxError, msg:
check_error_location(str(msg))
try:
import test_future4
import badsyntax_future4
except SyntaxError, msg:
check_error_location(str(msg))
try:
import test_future5
import badsyntax_future5
except SyntaxError, msg:
check_error_location(str(msg))
try:
import test_future6
import badsyntax_future6
except SyntaxError, msg:
check_error_location(str(msg))
try:
import test_future7
import badsyntax_future7
except SyntaxError, msg:
check_error_location(str(msg))
......@@ -22,7 +22,7 @@ class TracebackCases(unittest.TestCase):
def syntax_error_without_caret(self):
# XXX why doesn't compile raise the same traceback?
import nocaret
import badsyntax_nocaret
def test_caret(self):
err = self.get_exception_format(self.syntax_error_with_caret,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment