]> granicus.if.org Git - python/commitdiff
Merged revisions 72425-72426 via svnmerge from
authorR. David Murray <rdmurray@bitdance.com>
Thu, 7 May 2009 18:24:38 +0000 (18:24 +0000)
committerR. David Murray <rdmurray@bitdance.com>
Thu, 7 May 2009 18:24:38 +0000 (18:24 +0000)
svn+ssh://pythondev@svn.python.org/python/trunk

........
  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.
........

Lib/aifc.py
Lib/test/test_aifc.py
Misc/NEWS

index c03446fee088227f5522bc990be9ac97c5a54858..015d3985d6bfbca2afb45cf590ad06a4c23df430 100644 (file)
@@ -281,10 +281,11 @@ class Aifc_read:
         self._convert = None
         self._markers = []
         self._soundpos = 0
-        self._file = Chunk(file)
-        if self._file.getname() != b'FORM':
+        self._file = file
+        chunk = Chunk(file)
+        if chunk.getname() != b'FORM':
             raise Error('file does not start with FORM id')
-        formdata = self._file.read(4)
+        formdata = chunk.read(4)
         if formdata == b'AIFF':
             self._aifc = 0
         elif formdata == b'AIFC':
index 1e84bd616b5bf6360addc39833f4e0bbeaa66b4c..0248615c6ecbd242def2e0ab669a46fba1fe4327 100644 (file)
@@ -94,6 +94,21 @@ class AIFCTest(unittest.TestCase):
         # XXX: this test fails, not sure if it should succeed or not
         # self.assertEqual(f.readframes(5), fout.readframes(5))
 
+    def test_close(self):
+        class Wrapfile(object):
+            def __init__(self, file):
+                self.file = open(file, 'rb')
+                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)
index 2464c042d1f7dd6be3acf9d983e258d1f10f3252..1c5734c3cdca7e8970bc3c3ed0cd602e4f4a6485 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -15,6 +15,9 @@ Core and Builtins
 Library
 -------
 
+- Issue 5955: aifc's close method did not close the file it wrapped,
+  now it does.  This also means getfp method now returns the real fp.
+
 
 What's New in Python 3.1 beta 1?
 ================================