bpo-29566: binhex.binhex now consitently writes MacOS 9 line endings. (GH-23059)

[bpo-29566]() notes that binhex.binhex uses inconsistent line endings (both Unix and MacOS9 line endings are used). This PR changes this to use the MacOS9 line endings everywhere.
This commit is contained in:
Ronald Oussoren 2020-11-01 10:08:48 +01:00 committed by GitHub
parent d3b4e06807
commit 2165cea548
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 15 additions and 2 deletions

View File

@ -117,12 +117,12 @@ class _Hqxcoderengine:
first = 0 first = 0
while first <= len(self.hqxdata) - self.linelen: while first <= len(self.hqxdata) - self.linelen:
last = first + self.linelen last = first + self.linelen
self.ofp.write(self.hqxdata[first:last] + b'\n') self.ofp.write(self.hqxdata[first:last] + b'\r')
self.linelen = LINELEN self.linelen = LINELEN
first = last first = last
self.hqxdata = self.hqxdata[first:] self.hqxdata = self.hqxdata[first:]
if force: if force:
self.ofp.write(self.hqxdata + b':\n') self.ofp.write(self.hqxdata + b':\r')
def close(self): def close(self):
if self.data: if self.data:

View File

@ -52,6 +52,18 @@ class BinHexTestCase(unittest.TestCase):
self.assertRaises(binhex.Error, binhex.binhex, self.fname3, self.fname2) self.assertRaises(binhex.Error, binhex.binhex, self.fname3, self.fname2)
def test_binhex_line_endings(self):
# bpo-29566: Ensure the line endings are those for macOS 9
with open(self.fname1, 'wb') as f:
f.write(self.DATA)
binhex.binhex(self.fname1, self.fname2)
with open(self.fname2, 'rb') as fp:
contents = fp.read()
self.assertNotIn(b'\n', contents)
def test_main(): def test_main():
support.run_unittest(BinHexTestCase) support.run_unittest(BinHexTestCase)

View File

@ -0,0 +1 @@
``binhex.binhex()`` consisently writes macOS 9 line endings.