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

miss-islington webhook-mailer at python.org
Sun Nov 1 04:08:52 EST 2020


https://github.com/python/cpython/commit/2165cea548f961b308050f30d1f042a377651d44
commit: 2165cea548f961b308050f30d1f042a377651d44
branch: master
author: Ronald Oussoren <ronaldoussoren at mac.com>
committer: miss-islington <31488909+miss-islington at users.noreply.github.com>
date: 2020-11-01T01:08:48-08:00
summary:

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.

files:
A Misc/NEWS.d/next/Library/2020-10-31-13-28-36.bpo-29566.6aDbty.rst
M Lib/binhex.py
M Lib/test/test_binhex.py

diff --git a/Lib/binhex.py b/Lib/binhex.py
index 9559f46d5a288..ace5217d27139 100644
--- a/Lib/binhex.py
+++ b/Lib/binhex.py
@@ -117,12 +117,12 @@ def _flush(self, force):
         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:
diff --git a/Lib/test/test_binhex.py b/Lib/test/test_binhex.py
index 5e59f5761514c..efc1654a6b710 100644
--- a/Lib/test/test_binhex.py
+++ b/Lib/test/test_binhex.py
@@ -52,6 +52,18 @@ def test_binhex_error_on_long_filename(self):
 
         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
index 0000000000000..d54c714688531
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2020-10-31-13-28-36.bpo-29566.6aDbty.rst
@@ -0,0 +1 @@
+``binhex.binhex()`` consisently writes macOS 9 line endings.



More information about the Python-checkins mailing list