mirror of
https://github.com/python/cpython.git
synced 2025-10-09 16:34:44 +00:00
Add __enter__ and __exit__ methods to addbase() so that it supports with.
This change also adds a minimal unittest of urllib.response.addbase. More are needed, but not to cover the small change being made here. Addresses http://bugs.python.org/issue5418
This commit is contained in:
parent
81fac43918
commit
b476d59792
2 changed files with 50 additions and 0 deletions
42
Lib/test/test_urllib_response.py
Normal file
42
Lib/test/test_urllib_response.py
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
"""Unit tests for code in urllib.response."""
|
||||||
|
|
||||||
|
import test.support
|
||||||
|
import urllib.response
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
class TestFile(object):
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.closed = False
|
||||||
|
|
||||||
|
def read(self, bytes):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def readline(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def close(self):
|
||||||
|
self.closed = True
|
||||||
|
|
||||||
|
class Testaddbase(unittest.TestCase):
|
||||||
|
|
||||||
|
# TODO(jhylton): Write tests for other functionality of addbase()
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.fp = TestFile()
|
||||||
|
self.addbase = urllib.response.addbase(self.fp)
|
||||||
|
|
||||||
|
def test_with(self):
|
||||||
|
def f():
|
||||||
|
with self.addbase as spam:
|
||||||
|
pass
|
||||||
|
self.assertFalse(self.fp.closed)
|
||||||
|
f()
|
||||||
|
self.assertTrue(self.fp.closed)
|
||||||
|
self.assertRaises(ValueError, f)
|
||||||
|
|
||||||
|
def test_main():
|
||||||
|
test.support.run_unittest(Testaddbase)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
test_main()
|
|
@ -40,6 +40,14 @@ class addbase(object):
|
||||||
if self.fp: self.fp.close()
|
if self.fp: self.fp.close()
|
||||||
self.fp = None
|
self.fp = None
|
||||||
|
|
||||||
|
def __enter__(self):
|
||||||
|
if self.fp is None:
|
||||||
|
raise ValueError("I/O operation on closed file")
|
||||||
|
return self
|
||||||
|
|
||||||
|
def __exit__(self, type, value, traceback):
|
||||||
|
self.close()
|
||||||
|
|
||||||
class addclosehook(addbase):
|
class addclosehook(addbase):
|
||||||
"""Class to add a close hook to an open file."""
|
"""Class to add a close hook to an open file."""
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue