Tidy up merge with remote

This commit is contained in:
Nick Coghlan 2011-03-16 22:11:09 -04:00
commit bab07a652d
4 changed files with 40 additions and 18 deletions

View File

@ -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)

View File

@ -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)

View File

@ -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

View File

@ -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