Issue #12004: Fix an internal error in PyZipFile when writing an invalid
Python file. Patch by Ben Morgan.
This commit is contained in:
commit
c5b75db5de
|
@ -13,7 +13,9 @@ from tempfile import TemporaryFile
|
|||
from random import randint, random
|
||||
from unittest import skipUnless
|
||||
|
||||
from test.support import TESTFN, run_unittest, findfile, unlink, requires_zlib, requires_bz2, requires_lzma
|
||||
from test.support import (TESTFN, run_unittest, findfile, unlink,
|
||||
requires_zlib, requires_bz2, requires_lzma,
|
||||
captured_stdout)
|
||||
|
||||
TESTFN2 = TESTFN + "2"
|
||||
TESTFNDIR = TESTFN + "d"
|
||||
|
@ -854,6 +856,28 @@ class PyZipFileTests(unittest.TestCase):
|
|||
self.assertRaises(RuntimeError, zipfp.writepy, TESTFN)
|
||||
os.remove(TESTFN)
|
||||
|
||||
def test_write_pyfile_bad_syntax(self):
|
||||
os.mkdir(TESTFN2)
|
||||
try:
|
||||
with open(os.path.join(TESTFN2, "mod1.py"), "w") as fp:
|
||||
fp.write("Bad syntax in python file\n")
|
||||
|
||||
with TemporaryFile() as t, zipfile.PyZipFile(t, "w") as zipfp:
|
||||
# syntax errors are printed to stdout
|
||||
with captured_stdout() as s:
|
||||
zipfp.writepy(os.path.join(TESTFN2, "mod1.py"))
|
||||
|
||||
self.assertIn("SyntaxError", s.getvalue())
|
||||
|
||||
# as it will not have compiled the python file, it will
|
||||
# include the .py file not .pyc or .pyo
|
||||
names = zipfp.namelist()
|
||||
self.assertIn('mod1.py', names)
|
||||
self.assertNotIn('mod1.pyc', names)
|
||||
self.assertNotIn('mod1.pyo', names)
|
||||
|
||||
finally:
|
||||
shutil.rmtree(TESTFN2)
|
||||
|
||||
class OtherTests(unittest.TestCase):
|
||||
zips_with_bad_crc = {
|
||||
|
|
|
@ -1604,7 +1604,7 @@ class PyZipFile(ZipFile):
|
|||
print("Compiling", file)
|
||||
try:
|
||||
py_compile.compile(file, doraise=True, optimize=optimize)
|
||||
except py_compile.PyCompileError as error:
|
||||
except py_compile.PyCompileError as err:
|
||||
print(err.msg)
|
||||
return False
|
||||
return True
|
||||
|
|
|
@ -818,6 +818,7 @@ Skip Montanaro
|
|||
Peter Moody
|
||||
Paul Moore
|
||||
Ross Moore
|
||||
Ben Morgan
|
||||
Derek Morr
|
||||
James A Morrison
|
||||
Derek McTavish Mounce
|
||||
|
|
|
@ -164,6 +164,9 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #12004: Fix an internal error in PyZipFile when writing an invalid
|
||||
Python file. Patch by Ben Morgan.
|
||||
|
||||
- Issue #1602133: on Mac OS X a shared library build (``--enable-shared``)
|
||||
now fills the ``os.environ`` variable correctly.
|
||||
|
||||
|
|
Loading…
Reference in New Issue