]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.9] 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:26 +0000 (01:39 -0800)
committerGitHub <noreply@github.com>
Sun, 1 Nov 2020 09:39:26 +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 9559f46d5a288215f9ebfd5a114174f8326ed2bf..ace5217d2713921d2b03c1a956a0f23ed0bdbccb 100644 (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:
index 591f32a4f0f7f02266373b485cb138f484c28b14..9c9486e142a902e636d97eccd3fec3f1e4486e29 100644 (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)
 
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.