]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.8] bpo-29566: binhex.binhex now consitently writes MacOS 9 line endings. (GH-23059...
authorMiss Skeleton (bot) <31488909+miss-islington@users.noreply.github.com>
Sun, 1 Nov 2020 09:39:16 +0000 (01:39 -0800)
committerGitHub <noreply@github.com>
Sun, 1 Nov 2020 09:39:16 +0000 (01:39 -0800)
[[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 2165cea548f961b308050f30d1f042a377651d44)

Co-authored-by: Ronald Oussoren <ronaldoussoren@mac.com>
Automerge-Triggered-By: GH:ronaldoussoren
Lib/binhex.py
Lib/test/test_binhex.py
Misc/NEWS.d/next/Library/2020-10-31-13-28-36.bpo-29566.6aDbty.rst [new file with mode: 0644]

index 56b5f852c0038ac3320c34bd976925e2ee140c06..a4d8789fd6d09b767ec671ff2091f65a66bd0e0a 100644 (file)
@@ -100,12 +100,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:
index 2f3d53afbd1321345e6c26dfe4acd0fd3c890c89..c92cfac8398f6c2c28875b6edf62e4dbc5acd724 100644 (file)
@@ -45,6 +45,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)
 
diff --git a/Misc/NEWS.d/next/Library/2020-10-31-13-28-36.bpo-29566.6aDbty.rst b/Misc/NEWS.d/next/Library/2020-10-31-13-28-36.bpo-29566.6aDbty.rst
new file mode 100644 (file)
index 0000000..d54c714
--- /dev/null
@@ -0,0 +1 @@
+``binhex.binhex()`` consisently writes macOS 9 line endings.