Commit 17f05bbc authored by Timo Furrer's avatar Timo Furrer Committed by Berker Peksag

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

parent f1d8e7cf
......@@ -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()
......@@ -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)
#
......
Fix the call to ``os.chmod()`` for ``uu.decode()`` if a mode is given or
decoded. Patch by Timo Furrer.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment