mirror of
https://github.com/python/cpython.git
synced 2025-12-15 21:44:50 +00:00
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678-60695 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r60679 | raymond.hettinger | 2008-02-09 02:18:42 +0100 (Sat, 09 Feb 2008) | 1 line Make ABC containers inherit as documented. ........ r60684 | raymond.hettinger | 2008-02-09 04:34:52 +0100 (Sat, 09 Feb 2008) | 1 line Merge with r60683. ........ r60687 | raymond.hettinger | 2008-02-09 05:37:49 +0100 (Sat, 09 Feb 2008) | 1 line Add -3 warnings that set.copy(), dict.copy(), and defaultdict.copy() will go away in Py3.x ........ r60689 | raymond.hettinger | 2008-02-09 11:04:19 +0100 (Sat, 09 Feb 2008) | 1 line Metaclass declaration is inherited ........ r60691 | raymond.hettinger | 2008-02-09 11:06:20 +0100 (Sat, 09 Feb 2008) | 1 line Temporarily disable this test. It's been broken for a week. ........ r60695 | nick.coghlan | 2008-02-09 16:28:09 +0100 (Sat, 09 Feb 2008) | 1 line Issue 2021: Allow NamedTemporaryFile and SpooledTemporaryFile to be used as context managers. (The NamedTemporaryFile fix should be considered for backporting to 2.5) ........
This commit is contained in:
parent
bfd061218b
commit
3ecfea71ff
6 changed files with 116 additions and 22 deletions
|
|
@ -1,5 +1,4 @@
|
|||
# tempfile.py unit tests.
|
||||
|
||||
import tempfile
|
||||
import os
|
||||
import sys
|
||||
|
|
@ -619,7 +618,6 @@ class test_NamedTemporaryFile(TC):
|
|||
|
||||
def test_multiple_close(self):
|
||||
# A NamedTemporaryFile can be closed many times without error
|
||||
|
||||
f = tempfile.NamedTemporaryFile()
|
||||
f.write(b'abc\n')
|
||||
f.close()
|
||||
|
|
@ -629,6 +627,16 @@ class test_NamedTemporaryFile(TC):
|
|||
except:
|
||||
self.failOnException("close")
|
||||
|
||||
def test_context_manager(self):
|
||||
# A NamedTemporaryFile can be used as a context manager
|
||||
with tempfile.NamedTemporaryFile() as f:
|
||||
self.failUnless(os.path.exists(f.name))
|
||||
self.failIf(os.path.exists(f.name))
|
||||
def use_closed():
|
||||
with f:
|
||||
pass
|
||||
self.failUnlessRaises(ValueError, use_closed)
|
||||
|
||||
# How to test the mode and bufsize parameters?
|
||||
|
||||
test_classes.append(test_NamedTemporaryFile)
|
||||
|
|
@ -707,10 +715,23 @@ class test_SpooledTemporaryFile(TC):
|
|||
self.failUnless(f.fileno() > 0)
|
||||
self.failUnless(f._rolled)
|
||||
|
||||
def test_multiple_close(self):
|
||||
def test_multiple_close_before_rollover(self):
|
||||
# A SpooledTemporaryFile can be closed many times without error
|
||||
f = tempfile.SpooledTemporaryFile()
|
||||
f.write(b'abc\n')
|
||||
self.failIf(f._rolled)
|
||||
f.close()
|
||||
try:
|
||||
f.close()
|
||||
f.close()
|
||||
except:
|
||||
self.failOnException("close")
|
||||
|
||||
def test_multiple_close_after_rollover(self):
|
||||
# A SpooledTemporaryFile can be closed many times without error
|
||||
f = tempfile.SpooledTemporaryFile(max_size=1)
|
||||
f.write(b'abc\n')
|
||||
self.failUnless(f._rolled)
|
||||
f.close()
|
||||
try:
|
||||
f.close()
|
||||
|
|
@ -759,6 +780,46 @@ class test_SpooledTemporaryFile(TC):
|
|||
self.assertEqual(f.read(), "\u039B\r\n" + ("\u039B" * 20) + "\r\n")
|
||||
self.failUnless(f._rolled)
|
||||
|
||||
def test_context_manager_before_rollover(self):
|
||||
# A SpooledTemporaryFile can be used as a context manager
|
||||
with tempfile.SpooledTemporaryFile(max_size=1) as f:
|
||||
self.failIf(f._rolled)
|
||||
self.failIf(f.closed)
|
||||
self.failUnless(f.closed)
|
||||
def use_closed():
|
||||
with f:
|
||||
pass
|
||||
self.failUnlessRaises(ValueError, use_closed)
|
||||
|
||||
def test_context_manager_during_rollover(self):
|
||||
# A SpooledTemporaryFile can be used as a context manager
|
||||
with tempfile.SpooledTemporaryFile(max_size=1) as f:
|
||||
self.failIf(f._rolled)
|
||||
f.write(b'abc\n')
|
||||
f.flush()
|
||||
self.failUnless(f._rolled)
|
||||
self.failIf(f.closed)
|
||||
self.failUnless(f.closed)
|
||||
def use_closed():
|
||||
with f:
|
||||
pass
|
||||
self.failUnlessRaises(ValueError, use_closed)
|
||||
|
||||
def test_context_manager_after_rollover(self):
|
||||
# A SpooledTemporaryFile can be used as a context manager
|
||||
f = tempfile.SpooledTemporaryFile(max_size=1)
|
||||
f.write(b'abc\n')
|
||||
f.flush()
|
||||
self.failUnless(f._rolled)
|
||||
with f:
|
||||
self.failIf(f.closed)
|
||||
self.failUnless(f.closed)
|
||||
def use_closed():
|
||||
with f:
|
||||
pass
|
||||
self.failUnlessRaises(ValueError, use_closed)
|
||||
|
||||
|
||||
test_classes.append(test_SpooledTemporaryFile)
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue