diff options
author | R. David Murray <rdmurray@bitdance.com> | 2009-05-07 16:45:44 (GMT) |
---|---|---|
committer | R. David Murray <rdmurray@bitdance.com> | 2009-05-07 16:45:44 (GMT) |
commit | d0a45396326fa8fece0f7d5414b88afb5a4704f9 (patch) | |
tree | cfb2ff7cbd73b822dd05f1c848d9bd694cd39586 /Lib | |
parent | 0dfd954292585cef3cc3323b3d9aac14387875e8 (diff) | |
download | cpython-d0a45396326fa8fece0f7d5414b88afb5a4704f9.zip cpython-d0a45396326fa8fece0f7d5414b88afb5a4704f9.tar.gz cpython-d0a45396326fa8fece0f7d5414b88afb5a4704f9.tar.bz2 |
Merged revisions 72422,72425-72426 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r72422 | benjamin.peterson | 2009-05-07 07:45:38 -0400 (Thu, 07 May 2009) | 1 line
actually close files instead of leaving it to the gc #5955
........
r72425 | r.david.murray | 2009-05-07 12:27:02 -0400 (Thu, 07 May 2009) | 3 lines
Issue5955: aifc's close method did not close the file it wrapped,
now it does. This also means getfp method now returns the real fp.
........
r72426 | r.david.murray | 2009-05-07 12:29:19 -0400 (Thu, 07 May 2009) | 3 lines
News item for Issue5955.
........
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/aifc.py | 12 | ||||
-rw-r--r-- | Lib/test/test_aifc.py | 15 |
2 files changed, 21 insertions, 6 deletions
diff --git a/Lib/aifc.py b/Lib/aifc.py index 8e4f864..e0b76d6 100644 --- a/Lib/aifc.py +++ b/Lib/aifc.py @@ -282,10 +282,11 @@ class Aifc_read: self._convert = None self._markers = [] self._soundpos = 0 - self._file = Chunk(file) - if self._file.getname() != 'FORM': + self._file = file + chunk = Chunk(file) + if chunk.getname() != 'FORM': raise Error, 'file does not start with FORM id' - formdata = self._file.read(4) + formdata = chunk.read(4) if formdata == 'AIFF': self._aifc = 0 elif formdata == 'AIFC': @@ -347,7 +348,7 @@ class Aifc_read: if self._decomp: self._decomp.CloseDecompressor() self._decomp = None - self._file = None + self._file.close() def tell(self): return self._soundpos @@ -732,8 +733,7 @@ class Aifc_write: if self._comp: self._comp.CloseCompressor() self._comp = None - self._file.flush() - self._file = None + self._file.close() # # Internal methods. diff --git a/Lib/test/test_aifc.py b/Lib/test/test_aifc.py index 7e5b2e9..2f4350d 100644 --- a/Lib/test/test_aifc.py +++ b/Lib/test/test_aifc.py @@ -45,6 +45,21 @@ class AIFCTest(unittest.TestCase): #XXX Need more tests! + def test_close(self): + class Wrapfile(object): + def __init__(self, file): + self.file = open(file) + self.closed = False + def close(self): + self.file.close() + self.closed = True + def __getattr__(self, attr): return getattr(self.file, attr) + testfile = Wrapfile(self.sndfilepath) + f = self.f = aifc.open(testfile) + self.assertEqual(testfile.closed, False) + f.close() + self.assertEqual(testfile.closed, True) + def test_main(): run_unittest(AIFCTest) |