@@ -66,15 +66,6 @@ def test_datetime_before_1900(self):
6666 (newdt ,), m = xmlrpclib .loads (s , use_datetime = 0 )
6767 self .assertEqual (newdt , xmlrpclib .DateTime ('00010210T11:41:23' ))
6868
69- def test_cmp_datetime_DateTime (self ):
70- now = datetime .datetime .now ()
71- dt = xmlrpclib .DateTime (now .timetuple ())
72- self .assertTrue (dt == now )
73- self .assertTrue (now == dt )
74- then = now + datetime .timedelta (seconds = 4 )
75- self .assertTrue (then >= dt )
76- self .assertTrue (dt < then )
77-
7869 def test_bug_1164912 (self ):
7970 d = xmlrpclib .DateTime ()
8071 ((new_d ,), dummy ) = xmlrpclib .loads (xmlrpclib .dumps ((d ,),
@@ -233,6 +224,45 @@ def test_decode(self):
233224 t2 = xmlrpclib ._datetime (d )
234225 self .assertEqual (t1 , tref )
235226
227+ def test_comparison (self ):
228+ now = datetime .datetime .now ()
229+ dtime = xmlrpclib .DateTime (now .timetuple ())
230+
231+ # datetime vs. DateTime
232+ self .assertTrue (dtime == now )
233+ self .assertTrue (now == dtime )
234+ then = now + datetime .timedelta (seconds = 4 )
235+ self .assertTrue (then >= dtime )
236+ self .assertTrue (dtime < then )
237+
238+ # str vs. DateTime
239+ dstr = now .strftime ("%Y%m%dT%H:%M:%S" )
240+ self .assertTrue (dtime == dstr )
241+ self .assertTrue (dstr == dtime )
242+ dtime_then = xmlrpclib .DateTime (then .timetuple ())
243+ self .assertTrue (dtime_then >= dstr )
244+ self .assertTrue (dstr < dtime_then )
245+
246+ # some other types
247+ dbytes = dstr .encode ('ascii' )
248+ dtuple = now .timetuple ()
249+ with self .assertRaises (TypeError ):
250+ dtime == 1970
251+ with self .assertRaises (TypeError ):
252+ dtime != dbytes
253+ with self .assertRaises (TypeError ):
254+ dtime == bytearray (dbytes )
255+ with self .assertRaises (TypeError ):
256+ dtime != dtuple
257+ with self .assertRaises (TypeError ):
258+ dtime < float (1970 )
259+ with self .assertRaises (TypeError ):
260+ dtime > dbytes
261+ with self .assertRaises (TypeError ):
262+ dtime <= bytearray (dbytes )
263+ with self .assertRaises (TypeError ):
264+ dtime >= dtuple
265+
236266class BinaryTestCase (unittest .TestCase ):
237267
238268 # XXX What should str(Binary(b"\xff")) return? I'm chosing "\xff"
@@ -346,6 +376,10 @@ def get_request(self):
346376 class MyRequestHandler (requestHandler ):
347377 rpc_paths = []
348378
379+ class BrokenDispatcher :
380+ def _marshaled_dispatch (self , data , dispatch_method = None , path = None ):
381+ raise RuntimeError ("broken dispatcher" )
382+
349383 serv = MyXMLRPCServer (("localhost" , 0 ), MyRequestHandler ,
350384 logRequests = False , bind_and_activate = False )
351385 serv .socket .settimeout (3 )
@@ -366,6 +400,7 @@ class MyRequestHandler(requestHandler):
366400 d .register_multicall_functions ()
367401 serv .get_dispatcher (paths [0 ]).register_function (pow )
368402 serv .get_dispatcher (paths [1 ]).register_function (lambda x ,y : x + y , 'add' )
403+ serv .add_dispatcher ("/is/broken" , BrokenDispatcher ())
369404 evt .set ()
370405
371406 # handle up to 'numrequests' requests
@@ -595,11 +630,16 @@ def test_path1(self):
595630 p = xmlrpclib .ServerProxy (URL + "/foo" )
596631 self .assertEqual (p .pow (6 ,8 ), 6 ** 8 )
597632 self .assertRaises (xmlrpclib .Fault , p .add , 6 , 8 )
633+
598634 def test_path2 (self ):
599635 p = xmlrpclib .ServerProxy (URL + "/foo/bar" )
600636 self .assertEqual (p .add (6 ,8 ), 6 + 8 )
601637 self .assertRaises (xmlrpclib .Fault , p .pow , 6 , 8 )
602638
639+ def test_path3 (self ):
640+ p = xmlrpclib .ServerProxy (URL + "/is/broken" )
641+ self .assertRaises (xmlrpclib .Fault , p .add , 6 , 8 )
642+
603643#A test case that verifies that a server using the HTTP/1.1 keep-alive mechanism
604644#does indeed serve subsequent requests on the same connection
605645class BaseKeepaliveServerTestCase (BaseServerTestCase ):
0 commit comments