mirror of
https://github.com/python/cpython.git
synced 2025-08-04 17:08:35 +00:00
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.
This commit is contained in:
parent
bc41957d2b
commit
3090694068
10 changed files with 11 additions and 16 deletions
|
@ -1,8 +1,8 @@
|
|||
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,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue