mirror of
https://github.com/python/cpython.git
synced 2025-08-19 00:00:48 +00:00
Merged revisions 86037 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k ........ r86037 | antoine.pitrou | 2010-10-31 17:04:14 +0100 (dim., 31 oct. 2010) | 4 lines Issue #10266: uu.decode didn't close in_file explicitly when it was given as a filename. Patch by Brian Brazil. ........
This commit is contained in:
parent
9f3f9c5125
commit
61d14b7659
3 changed files with 75 additions and 52 deletions
|
@ -161,6 +161,23 @@ class UUFileTest(unittest.TestCase):
|
|||
finally:
|
||||
self._kill(f)
|
||||
|
||||
def test_decode_filename(self):
|
||||
f = None
|
||||
try:
|
||||
test_support.unlink(self.tmpin)
|
||||
f = open(self.tmpin, 'w')
|
||||
f.write(encodedtextwrapped % (0644, self.tmpout))
|
||||
f.close()
|
||||
|
||||
uu.decode(self.tmpin)
|
||||
|
||||
f = open(self.tmpout, 'r')
|
||||
s = f.read()
|
||||
f.close()
|
||||
self.assertEqual(s, plaintext)
|
||||
finally:
|
||||
self._kill(f)
|
||||
|
||||
def test_decodetwice(self):
|
||||
# Verify that decode() will refuse to overwrite an existing file
|
||||
f = None
|
||||
|
|
11
Lib/uu.py
11
Lib/uu.py
|
@ -92,10 +92,13 @@ def decode(in_file, out_file=None, mode=None, quiet=0):
|
|||
#
|
||||
# Open the input file, if needed.
|
||||
#
|
||||
opened_files = []
|
||||
if in_file == '-':
|
||||
in_file = sys.stdin
|
||||
elif isinstance(in_file, basestring):
|
||||
in_file = open(in_file)
|
||||
opened_files.append(in_file)
|
||||
try:
|
||||
#
|
||||
# Read until a begin is encountered or we've exhausted the file
|
||||
#
|
||||
|
@ -121,7 +124,6 @@ def decode(in_file, out_file=None, mode=None, quiet=0):
|
|||
#
|
||||
# Open the output file
|
||||
#
|
||||
opened = False
|
||||
if out_file == '-':
|
||||
out_file = sys.stdout
|
||||
elif isinstance(out_file, basestring):
|
||||
|
@ -131,7 +133,7 @@ def decode(in_file, out_file=None, mode=None, quiet=0):
|
|||
except AttributeError:
|
||||
pass
|
||||
out_file = fp
|
||||
opened = True
|
||||
opened_files.append(out_file)
|
||||
#
|
||||
# Main decoding loop
|
||||
#
|
||||
|
@ -149,8 +151,9 @@ def decode(in_file, out_file=None, mode=None, quiet=0):
|
|||
s = in_file.readline()
|
||||
if not s:
|
||||
raise Error('Truncated input file')
|
||||
if opened:
|
||||
out_file.close()
|
||||
finally:
|
||||
for f in opened_files:
|
||||
f.close()
|
||||
|
||||
def test():
|
||||
"""uuencode/uudecode main program"""
|
||||
|
|
|
@ -66,6 +66,9 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #10266: uu.decode didn't close in_file explicitly when it was given
|
||||
as a filename. Patch by Brian Brazil.
|
||||
|
||||
- Issue #10246: uu.encode didn't close file objects explicitly when filenames
|
||||
were given to it. Patch by Brian Brazil.
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue