Browse Source

bpo-33687: Fix call to os.chmod() in uu.decode() (GH-7282)

pull/11595/head
Timo Furrer 7 years ago
committed by Berker Peksag
parent
commit
17f05bbc78
  1. 19
      Lib/test/test_uu.py
  2. 5
      Lib/uu.py
  3. 2
      Misc/NEWS.d/next/Library/2018-06-10-14-08-52.bpo-33687.1zZdnA.rst

19
Lib/test/test_uu.py

@ -6,6 +6,8 @@ Nick Mathewson
import unittest
from test import support
import os
import stat
import sys
import uu
import io
@ -218,6 +220,23 @@ class UUFileTest(unittest.TestCase):
with open(self.tmpin, 'rb') as f:
self.assertRaises(uu.Error, uu.decode, f)
def test_decode_mode(self):
# Verify that decode() will set the given mode for the out_file
expected_mode = 0o444
with open(self.tmpin, 'wb') as f:
f.write(encodedtextwrapped(expected_mode, self.tmpout))
# make file writable again, so it can be removed (Windows only)
self.addCleanup(os.chmod, self.tmpout, expected_mode | stat.S_IWRITE)
with open(self.tmpin, 'rb') as f:
uu.decode(f)
self.assertEqual(
stat.S_IMODE(os.stat(self.tmpout).st_mode),
expected_mode
)
if __name__=="__main__":
unittest.main()

5
Lib/uu.py

@ -133,10 +133,7 @@ def decode(in_file, out_file=None, mode=None, quiet=False):
out_file = sys.stdout.buffer
elif isinstance(out_file, str):
fp = open(out_file, 'wb')
try:
os.path.chmod(out_file, mode)
except AttributeError:
pass
os.chmod(out_file, mode)
out_file = fp
opened_files.append(out_file)
#

2
Misc/NEWS.d/next/Library/2018-06-10-14-08-52.bpo-33687.1zZdnA.rst

@ -0,0 +1,2 @@
Fix the call to ``os.chmod()`` for ``uu.decode()`` if a mode is given or
decoded. Patch by Timo Furrer.
Loading…
Cancel
Save