mirror of https://github.com/python/cpython
bpo-33687: Fix call to os.chmod() in uu.decode() (GH-7282)
This commit is contained in:
parent
f1d8e7cf17
commit
17f05bbc78
|
@ -6,6 +6,8 @@ Nick Mathewson
|
||||||
import unittest
|
import unittest
|
||||||
from test import support
|
from test import support
|
||||||
|
|
||||||
|
import os
|
||||||
|
import stat
|
||||||
import sys
|
import sys
|
||||||
import uu
|
import uu
|
||||||
import io
|
import io
|
||||||
|
@ -218,6 +220,23 @@ class UUFileTest(unittest.TestCase):
|
||||||
with open(self.tmpin, 'rb') as f:
|
with open(self.tmpin, 'rb') as f:
|
||||||
self.assertRaises(uu.Error, uu.decode, 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__":
|
if __name__=="__main__":
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
|
@ -133,10 +133,7 @@ def decode(in_file, out_file=None, mode=None, quiet=False):
|
||||||
out_file = sys.stdout.buffer
|
out_file = sys.stdout.buffer
|
||||||
elif isinstance(out_file, str):
|
elif isinstance(out_file, str):
|
||||||
fp = open(out_file, 'wb')
|
fp = open(out_file, 'wb')
|
||||||
try:
|
os.chmod(out_file, mode)
|
||||||
os.path.chmod(out_file, mode)
|
|
||||||
except AttributeError:
|
|
||||||
pass
|
|
||||||
out_file = fp
|
out_file = fp
|
||||||
opened_files.append(out_file)
|
opened_files.append(out_file)
|
||||||
#
|
#
|
||||||
|
|
|
@ -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…
Reference in New Issue