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

[[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.
(cherry picked from commit 2165cea548)


Co-authored-by: Ronald Oussoren <ronaldoussoren@mac.com>

Automerge-Triggered-By: GH:ronaldoussoren
This commit is contained in:
Miss Skeleton (bot) 2020-11-01 01:39:26 -08:00 committed by GitHub
parent cfcb952e30
commit 3defcbac2c
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
while first <= len(self.hqxdata) - 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
first = last
self.hqxdata = self.hqxdata[first:]
if force:
self.ofp.write(self.hqxdata + b':\n')
self.ofp.write(self.hqxdata + b':\r')
def close(self):
if self.data:

View File

@ -48,6 +48,18 @@ class BinHexTestCase(unittest.TestCase):
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():
support.run_unittest(BinHexTestCase)

View File

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