comparison mercurial/httpclient/tests/util.py @ 16643:24dbef11f477

httpclient: update to revision 892730fe7f46 of httpplus
author Augie Fackler <raf@durin42.com>
date Fri, 04 May 2012 16:00:33 -0500
parents 494b26ad8736
children 69af967b6d6f
comparison
equal deleted inserted replaced
16642:5cf18921bb7b 16643:24dbef11f477
27 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 import difflib 29 import difflib
30 import socket 30 import socket
31 31
32 import http 32 import httpplus
33 33
34 34
35 class MockSocket(object): 35 class MockSocket(object):
36 """Mock non-blocking socket object. 36 """Mock non-blocking socket object.
37 37
55 self.early_data = [] 55 self.early_data = []
56 self.data = [] 56 self.data = []
57 self.remote_closed = self.closed = False 57 self.remote_closed = self.closed = False
58 self.close_on_empty = False 58 self.close_on_empty = False
59 self.sent = '' 59 self.sent = ''
60 self.read_wait_sentinel = http._END_HEADERS 60 self.read_wait_sentinel = httpplus._END_HEADERS
61 61
62 def close(self): 62 def close(self):
63 self.closed = True 63 self.closed = True
64 64
65 def connect(self, sa): 65 def connect(self, sa):
84 self.remote_closed = True 84 self.remote_closed = True
85 return data[:amt] 85 return data[:amt]
86 86
87 @property 87 @property
88 def ready_for_read(self): 88 def ready_for_read(self):
89 return ((self.early_data and http._END_HEADERS in self.sent) 89 return ((self.early_data and httpplus._END_HEADERS in self.sent)
90 or (self.read_wait_sentinel in self.sent and self.data) 90 or (self.read_wait_sentinel in self.sent and self.data)
91 or self.closed or self.remote_closed) 91 or self.closed or self.remote_closed)
92 92
93 def send(self, data): 93 def send(self, data):
94 # this is a horrible mock, but nothing needs us to raise the 94 # this is a horrible mock, but nothing needs us to raise the
130 finally: 130 finally:
131 self._fail_recv = not self._fail_recv 131 self._fail_recv = not self._fail_recv
132 132
133 133
134 def mocksslwrap(sock, keyfile=None, certfile=None, 134 def mocksslwrap(sock, keyfile=None, certfile=None,
135 server_side=False, cert_reqs=http.socketutil.CERT_NONE, 135 server_side=False, cert_reqs=httpplus.socketutil.CERT_NONE,
136 ssl_version=None, ca_certs=None, 136 ssl_version=None, ca_certs=None,
137 do_handshake_on_connect=True, 137 do_handshake_on_connect=True,
138 suppress_ragged_eofs=True): 138 suppress_ragged_eofs=True):
139 return MockSSLSocket(sock) 139 return MockSSLSocket(sock)
140 140
154 socket.socket = MockSocket 154 socket.socket = MockSocket
155 155
156 self.orig_getaddrinfo = socket.getaddrinfo 156 self.orig_getaddrinfo = socket.getaddrinfo
157 socket.getaddrinfo = mockgetaddrinfo 157 socket.getaddrinfo = mockgetaddrinfo
158 158
159 self.orig_select = http.select.select 159 self.orig_select = httpplus.select.select
160 http.select.select = mockselect 160 httpplus.select.select = mockselect
161 161
162 self.orig_sslwrap = http.socketutil.wrap_socket 162 self.orig_sslwrap = httpplus.socketutil.wrap_socket
163 http.socketutil.wrap_socket = mocksslwrap 163 httpplus.socketutil.wrap_socket = mocksslwrap
164 164
165 def tearDown(self): 165 def tearDown(self):
166 socket.socket = self.orig_socket 166 socket.socket = self.orig_socket
167 http.select.select = self.orig_select 167 httpplus.select.select = self.orig_select
168 http.socketutil.wrap_socket = self.orig_sslwrap 168 httpplus.socketutil.wrap_socket = self.orig_sslwrap
169 socket.getaddrinfo = self.orig_getaddrinfo 169 socket.getaddrinfo = self.orig_getaddrinfo
170 170
171 def assertStringEqual(self, l, r): 171 def assertStringEqual(self, l, r):
172 try: 172 try:
173 self.assertEqual(l, r, ('failed string equality check, ' 173 self.assertEqual(l, r, ('failed string equality check, '