mirror of https://github.com/python/cpython
Tidy up merge with remote
This commit is contained in:
commit
bab07a652d
|
@ -52,14 +52,13 @@ class FInfo:
|
||||||
|
|
||||||
def getfileinfo(name):
|
def getfileinfo(name):
|
||||||
finfo = FInfo()
|
finfo = FInfo()
|
||||||
fp = io.open(name, 'rb')
|
with io.open(name, 'rb') as fp:
|
||||||
# Quick check for textfile
|
# Quick check for textfile
|
||||||
data = fp.read(512)
|
data = fp.read(512)
|
||||||
if 0 not in data:
|
if 0 not in data:
|
||||||
finfo.Type = 'TEXT'
|
finfo.Type = 'TEXT'
|
||||||
fp.seek(0, 2)
|
fp.seek(0, 2)
|
||||||
dsize = fp.tell()
|
dsize = fp.tell()
|
||||||
fp.close()
|
|
||||||
dir, file = os.path.split(name)
|
dir, file = os.path.split(name)
|
||||||
file = file.replace(':', '-', 1)
|
file = file.replace(':', '-', 1)
|
||||||
return file, finfo, dsize, 0
|
return file, finfo, dsize, 0
|
||||||
|
@ -140,9 +139,12 @@ class _Rlecoderengine:
|
||||||
class BinHex:
|
class BinHex:
|
||||||
def __init__(self, name_finfo_dlen_rlen, ofp):
|
def __init__(self, name_finfo_dlen_rlen, ofp):
|
||||||
name, finfo, dlen, rlen = name_finfo_dlen_rlen
|
name, finfo, dlen, rlen = name_finfo_dlen_rlen
|
||||||
|
close_on_error = False
|
||||||
if isinstance(ofp, str):
|
if isinstance(ofp, str):
|
||||||
ofname = ofp
|
ofname = ofp
|
||||||
ofp = io.open(ofname, 'wb')
|
ofp = io.open(ofname, 'wb')
|
||||||
|
close_on_error = True
|
||||||
|
try:
|
||||||
ofp.write(b'(This file must be converted with BinHex 4.0)\r\r:')
|
ofp.write(b'(This file must be converted with BinHex 4.0)\r\r:')
|
||||||
hqxer = _Hqxcoderengine(ofp)
|
hqxer = _Hqxcoderengine(ofp)
|
||||||
self.ofp = _Rlecoderengine(hqxer)
|
self.ofp = _Rlecoderengine(hqxer)
|
||||||
|
@ -153,6 +155,10 @@ class BinHex:
|
||||||
self.rlen = rlen
|
self.rlen = rlen
|
||||||
self._writeinfo(name, finfo)
|
self._writeinfo(name, finfo)
|
||||||
self.state = _DID_HEADER
|
self.state = _DID_HEADER
|
||||||
|
except:
|
||||||
|
if close_on_error:
|
||||||
|
ofp.close()
|
||||||
|
raise
|
||||||
|
|
||||||
def _writeinfo(self, name, finfo):
|
def _writeinfo(self, name, finfo):
|
||||||
nl = len(name)
|
nl = len(name)
|
||||||
|
|
|
@ -15,10 +15,12 @@ class BinHexTestCase(unittest.TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.fname1 = support.TESTFN + "1"
|
self.fname1 = support.TESTFN + "1"
|
||||||
self.fname2 = support.TESTFN + "2"
|
self.fname2 = support.TESTFN + "2"
|
||||||
|
self.fname3 = support.TESTFN + "very_long_filename__very_long_filename__very_long_filename__very_long_filename__"
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
support.unlink(self.fname1)
|
support.unlink(self.fname1)
|
||||||
support.unlink(self.fname2)
|
support.unlink(self.fname2)
|
||||||
|
support.unlink(self.fname3)
|
||||||
|
|
||||||
DATA = b'Jack is my hero'
|
DATA = b'Jack is my hero'
|
||||||
|
|
||||||
|
@ -37,6 +39,15 @@ class BinHexTestCase(unittest.TestCase):
|
||||||
|
|
||||||
self.assertEqual(self.DATA, finish)
|
self.assertEqual(self.DATA, finish)
|
||||||
|
|
||||||
|
def test_binhex_error_on_long_filename(self):
|
||||||
|
"""
|
||||||
|
The testcase fails if no exception is raised when a filename parameter provided to binhex.binhex()
|
||||||
|
is too long, or if the exception raised in binhex.binhex() is not an instance of binhex.Error.
|
||||||
|
"""
|
||||||
|
f3 = open(self.fname3, 'wb')
|
||||||
|
f3.close()
|
||||||
|
|
||||||
|
self.assertRaises(binhex.Error, binhex.binhex, self.fname3, self.fname2)
|
||||||
|
|
||||||
def test_main():
|
def test_main():
|
||||||
support.run_unittest(BinHexTestCase)
|
support.run_unittest(BinHexTestCase)
|
||||||
|
|
|
@ -451,6 +451,7 @@ Tamito Kajiyama
|
||||||
Peter van Kampen
|
Peter van Kampen
|
||||||
Rafe Kaplan
|
Rafe Kaplan
|
||||||
Jacob Kaplan-Moss
|
Jacob Kaplan-Moss
|
||||||
|
Arkady Koplyarov
|
||||||
Lou Kates
|
Lou Kates
|
||||||
Hiroaki Kawai
|
Hiroaki Kawai
|
||||||
Sebastien Keim
|
Sebastien Keim
|
||||||
|
|
|
@ -72,6 +72,8 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #11577: fix ResourceWarning triggered by improved binhex test coverage
|
||||||
|
|
||||||
- Issue #11243: fix the parameter querying methods of Message to work if
|
- Issue #11243: fix the parameter querying methods of Message to work if
|
||||||
the headers contain un-encoded non-ASCII data.
|
the headers contain un-encoded non-ASCII data.
|
||||||
|
|
||||||
|
@ -242,6 +244,8 @@ Tools/Demos
|
||||||
Tests
|
Tests
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
- Issue #11577: improve test coverage of binhex.py. Patch by Arkady Koplyarov.
|
||||||
|
|
||||||
- New test_crashers added to exercise the scripts in the Lib/test/crashers
|
- New test_crashers added to exercise the scripts in the Lib/test/crashers
|
||||||
directory and confirm they fail as expected
|
directory and confirm they fail as expected
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue