mirror of https://github.com/python/cpython
#2067: file.__exit__() now calls subclasses' close() method.
This commit is contained in:
parent
7e251e83d5
commit
ad61bc8d9b
|
@ -322,12 +322,28 @@ class OtherFileTests(unittest.TestCase):
|
|||
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)
|
||||
|
|
|
@ -12,7 +12,9 @@ What's New in Python 2.6 alpha 1?
|
|||
Core and builtins
|
||||
-----------------
|
||||
|
||||
- Patch #1759: Backport of PEP 3129 class decorators
|
||||
- Issue #2067: file.__exit__() now calls subclasses' close() method.
|
||||
|
||||
- Patch #1759: Backport of PEP 3129 class decorators.
|
||||
|
||||
- Issue #1881: An internal parser limit has been increased. Also see
|
||||
issue 215555 for a discussion.
|
||||
|
|
|
@ -1660,9 +1660,9 @@ file_self(PyFileObject *f)
|
|||
}
|
||||
|
||||
static PyObject *
|
||||
file_exit(PyFileObject *f, PyObject *args)
|
||||
file_exit(PyObject *f, PyObject *args)
|
||||
{
|
||||
PyObject *ret = file_close(f);
|
||||
PyObject *ret = PyObject_CallMethod(f, "close", NULL);
|
||||
if (!ret)
|
||||
/* If error occurred, pass through */
|
||||
return NULL;
|
||||
|
|
Loading…
Reference in New Issue