summaryrefslogtreecommitdiffstats
path: root/Lib/test
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test')
-rw-r--r--Lib/test/test_bytes.py2
-rw-r--r--Lib/test/test_io.py55
-rw-r--r--Lib/test/test_xmlrpc.py87
3 files changed, 142 insertions, 2 deletions
diff --git a/Lib/test/test_bytes.py b/Lib/test/test_bytes.py
index 6e5ffa9..45df1f3 100644
--- a/Lib/test/test_bytes.py
+++ b/Lib/test/test_bytes.py
@@ -725,7 +725,7 @@ class ByteArrayTest(BaseBytesTest):
# Issue 4348. Make sure that operations that don't mutate the array
# copy the bytes.
b = bytearray(b'abc')
- #self.assertFalse(b is b.replace(b'abc', b'cde', 0))
+ self.assertFalse(b is b.replace(b'abc', b'cde', 0))
t = bytearray([i for i in range(256)])
x = bytearray(b'')
diff --git a/Lib/test/test_io.py b/Lib/test/test_io.py
index 9ef2a81..c9bd38d 100644
--- a/Lib/test/test_io.py
+++ b/Lib/test/test_io.py
@@ -272,6 +272,30 @@ class IOTest(unittest.TestCase):
self.assertRaises(ValueError, io.open, test_support.TESTFN, 'w',
closefd=False)
+ def testReadClosed(self):
+ with io.open(test_support.TESTFN, "w") as f:
+ f.write("egg\n")
+ with io.open(test_support.TESTFN, "r") as f:
+ file = io.open(f.fileno(), "r", closefd=False)
+ self.assertEqual(file.read(), "egg\n")
+ file.seek(0)
+ file.close()
+ self.assertRaises(ValueError, file.read)
+
+ def test_no_closefd_with_filename(self):
+ # can't use closefd in combination with a file name
+ self.assertRaises(ValueError,
+ io.open, test_support.TESTFN, "r", closefd=False)
+
+ def test_closefd_attr(self):
+ with io.open(test_support.TESTFN, "wb") as f:
+ f.write(b"egg\n")
+ with io.open(test_support.TESTFN, "r") as f:
+ self.assertEqual(f.buffer.raw.closefd, True)
+ file = io.open(f.fileno(), "r", closefd=False)
+ self.assertEqual(file.buffer.raw.closefd, False)
+
+
class MemorySeekTestMixin:
def testInit(self):
@@ -1225,6 +1249,9 @@ class TextIOWrapperTest(unittest.TestCase):
class MiscIOTest(unittest.TestCase):
+ def tearDown(self):
+ test_support.unlink(test_support.TESTFN)
+
def testImport__all__(self):
for name in io.__all__:
obj = getattr(io, name, None)
@@ -1237,6 +1264,34 @@ class MiscIOTest(unittest.TestCase):
self.assert_(issubclass(obj, io.IOBase))
+ def test_attributes(self):
+ f = io.open(test_support.TESTFN, "wb", buffering=0)
+ self.assertEquals(f.mode, "w")
+ f.close()
+
+ f = io.open(test_support.TESTFN, "U")
+ self.assertEquals(f.name, test_support.TESTFN)
+ self.assertEquals(f.buffer.name, test_support.TESTFN)
+ self.assertEquals(f.buffer.raw.name, test_support.TESTFN)
+ self.assertEquals(f.mode, "U")
+ self.assertEquals(f.buffer.mode, "r")
+ self.assertEquals(f.buffer.raw.mode, "r")
+ f.close()
+
+ f = io.open(test_support.TESTFN, "w+")
+ self.assertEquals(f.mode, "w+")
+ self.assertEquals(f.buffer.mode, "r+") # Does it really matter?
+ self.assertEquals(f.buffer.raw.mode, "r+")
+
+ g = io.open(f.fileno(), "wb", closefd=False)
+ self.assertEquals(g.mode, "w")
+ self.assertEquals(g.raw.mode, "w")
+ self.assertEquals(g.name, f.fileno())
+ self.assertEquals(g.raw.name, f.fileno())
+ f.close()
+ g.close()
+
+
def test_main():
test_support.run_unittest(IOTest, BytesIOTest, StringIOTest,
BufferedReaderTest, BufferedWriterTest,
diff --git a/Lib/test/test_xmlrpc.py b/Lib/test/test_xmlrpc.py
index bbdb93e..c9294b1 100644
--- a/Lib/test/test_xmlrpc.py
+++ b/Lib/test/test_xmlrpc.py
@@ -9,6 +9,7 @@ import threading
import mimetools
import httplib
import socket
+import StringIO
import os
from test import test_support
@@ -639,9 +640,93 @@ class CGIHandlerTestCase(unittest.TestCase):
os.remove("xmldata.txt")
os.remove(test_support.TESTFN)
+class FakeSocket:
+
+ def __init__(self):
+ self.data = StringIO.StringIO()
+
+ def send(self, buf):
+ self.data.write(buf)
+ return len(buf)
+
+ def sendall(self, buf):
+ self.data.write(buf)
+
+ def getvalue(self):
+ return self.data.getvalue()
+
+ def makefile(self, x, y):
+ raise RuntimeError
+
+class FakeTransport(xmlrpclib.Transport):
+ """A Transport instance that records instead of sending a request.
+
+ This class replaces the actual socket used by httplib with a
+ FakeSocket object that records the request. It doesn't provide a
+ response.
+ """
+
+ def make_connection(self, host):
+ conn = xmlrpclib.Transport.make_connection(self, host)
+ conn._conn.sock = self.fake_socket = FakeSocket()
+ return conn
+
+class TransportSubclassTestCase(unittest.TestCase):
+
+ def issue_request(self, transport_class):
+ """Return an HTTP request made via transport_class."""
+ transport = transport_class()
+ proxy = xmlrpclib.ServerProxy("http://example.com/",
+ transport=transport)
+ try:
+ proxy.pow(6, 8)
+ except RuntimeError:
+ return transport.fake_socket.getvalue()
+ return None
+
+ def test_custom_user_agent(self):
+ class TestTransport(FakeTransport):
+
+ def send_user_agent(self, conn):
+ xmlrpclib.Transport.send_user_agent(self, conn)
+ conn.putheader("X-Test", "test_custom_user_agent")
+
+ req = self.issue_request(TestTransport)
+ self.assert_("X-Test: test_custom_user_agent\r\n" in req)
+
+ def test_send_host(self):
+ class TestTransport(FakeTransport):
+
+ def send_host(self, conn, host):
+ xmlrpclib.Transport.send_host(self, conn, host)
+ conn.putheader("X-Test", "test_send_host")
+
+ req = self.issue_request(TestTransport)
+ self.assert_("X-Test: test_send_host\r\n" in req)
+
+ def test_send_request(self):
+ class TestTransport(FakeTransport):
+
+ def send_request(self, conn, url, body):
+ xmlrpclib.Transport.send_request(self, conn, url, body)
+ conn.putheader("X-Test", "test_send_request")
+
+ req = self.issue_request(TestTransport)
+ self.assert_("X-Test: test_send_request\r\n" in req)
+
+ def test_send_content(self):
+ class TestTransport(FakeTransport):
+
+ def send_content(self, conn, body):
+ conn.putheader("X-Test", "test_send_content")
+ xmlrpclib.Transport.send_content(self, conn, body)
+
+ req = self.issue_request(TestTransport)
+ self.assert_("X-Test: test_send_content\r\n" in req)
+
def test_main():
xmlrpc_tests = [XMLRPCTestCase, HelperTestCase, DateTimeTestCase,
- BinaryTestCase, FaultTestCase]
+ BinaryTestCase, FaultTestCase, TransportSubclassTestCase]
# The test cases against a SimpleXMLRPCServer raise a socket error
# 10035 (WSAEWOULDBLOCK) in the server thread handle_request call when