mirror of
https://github.com/python/cpython.git
synced 2025-09-27 10:50:04 +00:00
Issue #21069: Merge test_fileno() from 3.5
This commit is contained in:
commit
db3e2bd82d
2 changed files with 41 additions and 11 deletions
|
@ -915,6 +915,47 @@ class BasicTest(TestCase):
|
||||||
self.assertEqual(sock.file.read(), extradata) #we read to the end
|
self.assertEqual(sock.file.read(), extradata) #we read to the end
|
||||||
resp.close()
|
resp.close()
|
||||||
|
|
||||||
|
def test_response_fileno(self):
|
||||||
|
# Make sure fd returned by fileno is valid.
|
||||||
|
threading = support.import_module("threading")
|
||||||
|
|
||||||
|
serv = socket.socket(
|
||||||
|
socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_TCP)
|
||||||
|
self.addCleanup(serv.close)
|
||||||
|
serv.bind((HOST, 0))
|
||||||
|
serv.listen()
|
||||||
|
|
||||||
|
result = None
|
||||||
|
def run_server():
|
||||||
|
[conn, address] = serv.accept()
|
||||||
|
with conn, conn.makefile("rb") as reader:
|
||||||
|
# Read the request header until a blank line
|
||||||
|
while True:
|
||||||
|
line = reader.readline()
|
||||||
|
if not line.rstrip(b"\r\n"):
|
||||||
|
break
|
||||||
|
conn.sendall(b"HTTP/1.1 200 Connection established\r\n\r\n")
|
||||||
|
nonlocal result
|
||||||
|
result = reader.read()
|
||||||
|
|
||||||
|
thread = threading.Thread(target=run_server)
|
||||||
|
thread.start()
|
||||||
|
conn = client.HTTPConnection(*serv.getsockname())
|
||||||
|
conn.request("CONNECT", "dummy:1234")
|
||||||
|
response = conn.getresponse()
|
||||||
|
try:
|
||||||
|
self.assertEqual(response.status, client.OK)
|
||||||
|
s = socket.socket(fileno=response.fileno())
|
||||||
|
try:
|
||||||
|
s.sendall(b"proxied data\n")
|
||||||
|
finally:
|
||||||
|
s.detach()
|
||||||
|
finally:
|
||||||
|
response.close()
|
||||||
|
conn.close()
|
||||||
|
thread.join()
|
||||||
|
self.assertEqual(result, b"proxied data\n")
|
||||||
|
|
||||||
class ExtendedReadTest(TestCase):
|
class ExtendedReadTest(TestCase):
|
||||||
"""
|
"""
|
||||||
Test peek(), read1(), readline()
|
Test peek(), read1(), readline()
|
||||||
|
|
|
@ -99,17 +99,6 @@ class urlopenNetworkTests(unittest.TestCase):
|
||||||
open_url.close()
|
open_url.close()
|
||||||
self.assertEqual(code, 404)
|
self.assertEqual(code, 404)
|
||||||
|
|
||||||
# On Windows, socket handles are not file descriptors; this
|
|
||||||
# test can't pass on Windows.
|
|
||||||
@unittest.skipIf(sys.platform in ('win32',), 'not appropriate for Windows')
|
|
||||||
def test_fileno(self):
|
|
||||||
# Make sure fd returned by fileno is valid.
|
|
||||||
with self.urlopen("http://www.google.com/") as open_url:
|
|
||||||
fd = open_url.fileno()
|
|
||||||
with os.fdopen(fd, 'rb') as f:
|
|
||||||
self.assertTrue(f.read(), "reading from file created using fd "
|
|
||||||
"returned by fileno failed")
|
|
||||||
|
|
||||||
def test_bad_address(self):
|
def test_bad_address(self):
|
||||||
# Make sure proper exception is raised when connecting to a bogus
|
# Make sure proper exception is raised when connecting to a bogus
|
||||||
# address.
|
# address.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue