#2067: file.__exit__() now calls subclasses' close() method.
diff --git a/Lib/test/test_file.py b/Lib/test/test_file.py
index 73cb5b2..3ae460c 100644
--- a/Lib/test/test_file.py
+++ b/Lib/test/test_file.py
@@ -322,12 +322,28 @@
finally:
os.unlink(TESTFN)
+class FileSubclassTests(unittest.TestCase):
+
+ def testExit(self):
+ # test that exiting with context calls subclass' close
+ class C(file):
+ def __init__(self, *args):
+ self.subclass_closed = False
+ file.__init__(self, *args)
+ def close(self):
+ self.subclass_closed = True
+ file.close(self)
+
+ with C(TESTFN, 'w') as f:
+ pass
+ self.failUnless(f.subclass_closed)
+
def test_main():
# Historically, these tests have been sloppy about removing TESTFN.
# So get rid of it no matter what.
try:
- run_unittest(AutoFileTests, OtherFileTests)
+ run_unittest(AutoFileTests, OtherFileTests, FileSubclassTests)
finally:
if os.path.exists(TESTFN):
os.unlink(TESTFN)