When the classes in wave.py opened files themselves, their .close() methods
didn't bother to close the files.  This caused the new test_wave test to fail
under Windows, as Windows won't let you delete a file that's open.  Fixed
that by ensuring the wave read & write classes' .close() and __del__ methods
close files that were opened by their constructors.
diff --git a/Lib/wave.py b/Lib/wave.py
index 49e070f..e9a1629 100644
--- a/Lib/wave.py
+++ b/Lib/wave.py
@@ -152,11 +152,15 @@
             raise Error, 'fmt chunk and/or data chunk missing'
 
     def __init__(self, f):
+        self._i_opened_the_file = None
         if type(f) == type(''):
             f = __builtin__.open(f, 'rb')
+            self._i_opened_the_file = f
         # else, assume it is an open file object already
         self.initfp(f)
 
+    def __del__(self):
+        self.close()
     #
     # User visible methods.
     #
@@ -168,6 +172,9 @@
         self._soundpos = 0
 
     def close(self):
+        if self._i_opened_the_file:
+            self._i_opened_the_file.close()
+            self._i_opened_the_file = None
         self._file = None
 
     def tell(self):
@@ -284,8 +291,10 @@
     """
 
     def __init__(self, f):
+        self._i_opened_the_file = None
         if type(f) == type(''):
             f = __builtin__.open(f, 'wb')
+            self._i_opened_the_file = f
         self.initfp(f)
 
     def initfp(self, file):
@@ -300,8 +309,7 @@
         self._datalength = 0
 
     def __del__(self):
-        if self._file:
-            self.close()
+        self.close()
 
     #
     # User visible methods.
@@ -413,11 +421,15 @@
             self._patchheader()
 
     def close(self):
-        self._ensure_header_written(0)
-        if self._datalength != self._datawritten:
-            self._patchheader()
-        self._file.flush()
-        self._file = None
+        if self._file:
+            self._ensure_header_written(0)
+            if self._datalength != self._datawritten:
+                self._patchheader()
+            self._file.flush()
+            self._file = None
+        if self._i_opened_the_file:
+            self._i_opened_the_file.close()
+            self._i_opened_the_file = None
 
     #
     # Internal methods.