Ensure that a tempfile can be closed any number of times without error.
This wasn't true on Windows.
def __init__(self, file, path):
self.file = file
self.path = path
+ self.close_called = 0
def close(self):
- self.file.close()
- os.unlink(self.path)
+ if not self.close_called:
+ self.close_called = 1
+ self.file.close()
+ os.unlink(self.path)
def __del__(self):
- try: self.close()
- except: pass
+ self.close()
def __getattr__(self, name):
file = self.__dict__['file']
--- /dev/null
+# SF bug #476138: tempfile behavior across platforms
+# Ensure that a temp file can be closed any number of times without error.
+
+import tempfile
+
+f = tempfile.TemporaryFile("w+b")
+f.write('abc\n')
+f.close()
+f.close()
+f.close()