annotate Lib/test/test_docxmlrpc.py @ 80661:94de77bd0b4b 2.7

Issue #16194: document imp.load_dynamic problems when read several extension modules from the same binary object file.
author Andrew Svetlov <andrew.svetlov@gmail.com>
date Thu, 29 Nov 2012 19:51:28 +0200
parents b36cb4602e21
children 8c2635afbfe1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
44253
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
1 from DocXMLRPCServer import DocXMLRPCServer
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
2 import httplib
59045
a4c45f8e70aa Issue 6292: for the moment at least, the test suite passes if run
R. David Murray <rdmurray@bitdance.com>
parents: 58817
diff changeset
3 import sys
44253
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
4 from test import test_support
61046
3a0484200034 Issue #7449, last part (11): fix many tests if thread support is disabled
Victor Stinner <victor.stinner@haypocalc.com>
parents: 59045
diff changeset
5 threading = test_support.import_module('threading')
44253
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
6 import time
58795
ca67c37cd26d Merged revisions 78035,78040,78043,78049-78050,78052-78054 via svnmerge from
Georg Brandl <georg@python.org>
parents: 49431
diff changeset
7 import socket
44253
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
8 import unittest
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
9
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
10 PORT = None
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
11
59045
a4c45f8e70aa Issue 6292: for the moment at least, the test suite passes if run
R. David Murray <rdmurray@bitdance.com>
parents: 58817
diff changeset
12 def make_request_and_skipIf(condition, reason):
a4c45f8e70aa Issue 6292: for the moment at least, the test suite passes if run
R. David Murray <rdmurray@bitdance.com>
parents: 58817
diff changeset
13 # If we skip the test, we have to make a request because the
a4c45f8e70aa Issue 6292: for the moment at least, the test suite passes if run
R. David Murray <rdmurray@bitdance.com>
parents: 58817
diff changeset
14 # the server created in setUp blocks expecting one to come in.
a4c45f8e70aa Issue 6292: for the moment at least, the test suite passes if run
R. David Murray <rdmurray@bitdance.com>
parents: 58817
diff changeset
15 if not condition:
a4c45f8e70aa Issue 6292: for the moment at least, the test suite passes if run
R. David Murray <rdmurray@bitdance.com>
parents: 58817
diff changeset
16 return lambda func: func
a4c45f8e70aa Issue 6292: for the moment at least, the test suite passes if run
R. David Murray <rdmurray@bitdance.com>
parents: 58817
diff changeset
17 def decorator(func):
a4c45f8e70aa Issue 6292: for the moment at least, the test suite passes if run
R. David Murray <rdmurray@bitdance.com>
parents: 58817
diff changeset
18 def make_request_and_skip(self):
a4c45f8e70aa Issue 6292: for the moment at least, the test suite passes if run
R. David Murray <rdmurray@bitdance.com>
parents: 58817
diff changeset
19 self.client.request("GET", "/")
a4c45f8e70aa Issue 6292: for the moment at least, the test suite passes if run
R. David Murray <rdmurray@bitdance.com>
parents: 58817
diff changeset
20 self.client.getresponse()
a4c45f8e70aa Issue 6292: for the moment at least, the test suite passes if run
R. David Murray <rdmurray@bitdance.com>
parents: 58817
diff changeset
21 raise unittest.SkipTest(reason)
a4c45f8e70aa Issue 6292: for the moment at least, the test suite passes if run
R. David Murray <rdmurray@bitdance.com>
parents: 58817
diff changeset
22 return make_request_and_skip
a4c45f8e70aa Issue 6292: for the moment at least, the test suite passes if run
R. David Murray <rdmurray@bitdance.com>
parents: 58817
diff changeset
23 return decorator
a4c45f8e70aa Issue 6292: for the moment at least, the test suite passes if run
R. David Murray <rdmurray@bitdance.com>
parents: 58817
diff changeset
24
a4c45f8e70aa Issue 6292: for the moment at least, the test suite passes if run
R. David Murray <rdmurray@bitdance.com>
parents: 58817
diff changeset
25
44253
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
26 def server(evt, numrequests):
49431
2e794757bdc8 Merged revisions 66766-66767,66771-66772,66774,66776,66783-66787,66790,66793,66797 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 45215
diff changeset
27 serv = DocXMLRPCServer(("localhost", 0), logRequests=False)
2e794757bdc8 Merged revisions 66766-66767,66771-66772,66774,66776,66783-66787,66790,66793,66797 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 45215
diff changeset
28
44253
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
29 try:
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
30 global PORT
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
31 PORT = serv.socket.getsockname()[1]
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
32
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
33 # Add some documentation
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
34 serv.set_server_title("DocXMLRPCServer Test Documentation")
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
35 serv.set_server_name("DocXMLRPCServer Test Docs")
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
36 serv.set_server_documentation(
58460
17891566a478 use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents: 56982
diff changeset
37 "This is an XML-RPC server's documentation, but the server "
17891566a478 use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents: 56982
diff changeset
38 "can be used by POSTing to /RPC2. Try self.add, too.")
44253
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
39
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
40 # Create and register classes and functions
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
41 class TestClass(object):
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
42 def test_method(self, arg):
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
43 """Test method's docs. This method truly does very little."""
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
44 self.arg = arg
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
45
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
46 serv.register_introspection_functions()
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
47 serv.register_instance(TestClass())
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
48
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
49 def add(x, y):
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
50 """Add two instances together. This follows PEP008, but has nothing
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
51 to do with RFC1952. Case should matter: pEp008 and rFC1952. Things
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
52 that start with http and ftp should be auto-linked, too:
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
53 http://google.com.
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
54 """
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
55 return x + y
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
56
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
57 serv.register_function(add)
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
58 serv.register_function(lambda x, y: x-y)
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
59
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
60 while numrequests > 0:
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
61 serv.handle_request()
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
62 numrequests -= 1
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
63 except socket.timeout:
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
64 pass
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
65 finally:
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
66 serv.server_close()
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
67 PORT = None
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
68 evt.set()
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
69
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
70 class DocXMLRPCHTTPGETServer(unittest.TestCase):
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
71 def setUp(self):
56982
e11d2467d126 Fix transient refleaks in test_docxmlrpc.
Antoine Pitrou <solipsis@pitrou.net>
parents: 55002
diff changeset
72 self._threads = test_support.threading_setup()
44253
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
73 # Enable server feedback
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
74 DocXMLRPCServer._send_traceback_header = True
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
75
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
76 self.evt = threading.Event()
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
77 threading.Thread(target=server, args=(self.evt, 1)).start()
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
78
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
79 # wait for port to be assigned
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
80 n = 1000
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
81 while n > 0 and PORT is None:
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
82 time.sleep(0.001)
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
83 n -= 1
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
84
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
85 self.client = httplib.HTTPConnection("localhost:%d" % PORT)
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
86
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
87 def tearDown(self):
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
88 self.client.close()
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
89
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
90 self.evt.wait()
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
91
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
92 # Disable server feedback
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
93 DocXMLRPCServer._send_traceback_header = False
56982
e11d2467d126 Fix transient refleaks in test_docxmlrpc.
Antoine Pitrou <solipsis@pitrou.net>
parents: 55002
diff changeset
94 test_support.threading_cleanup(*self._threads)
44253
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
95
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
96 def test_valid_get_response(self):
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
97 self.client.request("GET", "/")
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
98 response = self.client.getresponse()
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
99
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
100 self.assertEqual(response.status, 200)
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
101 self.assertEqual(response.getheader("Content-type"), "text/html")
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
102
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
103 # Server throws an exception if we don't start to read the data
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
104 response.read()
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
105
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
106 def test_invalid_get_response(self):
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
107 self.client.request("GET", "/spam")
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
108 response = self.client.getresponse()
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
109
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
110 self.assertEqual(response.status, 404)
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
111 self.assertEqual(response.getheader("Content-type"), "text/plain")
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
112
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
113 response.read()
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
114
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
115 def test_lambda(self):
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
116 """Test that lambda functionality stays the same. The output produced
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
117 currently is, I suspect invalid because of the unencoded brackets in the
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
118 HTML, "<lambda>".
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
119
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
120 The subtraction lambda method is tested.
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
121 """
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
122 self.client.request("GET", "/")
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
123 response = self.client.getresponse()
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
124
58460
17891566a478 use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents: 56982
diff changeset
125 self.assertIn('<dl><dt><a name="-&lt;lambda&gt;"><strong>'
17891566a478 use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents: 56982
diff changeset
126 '&lt;lambda&gt;</strong></a>(x, y)</dt></dl>',
17891566a478 use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents: 56982
diff changeset
127 response.read())
44253
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
128
59045
a4c45f8e70aa Issue 6292: for the moment at least, the test suite passes if run
R. David Murray <rdmurray@bitdance.com>
parents: 58817
diff changeset
129 @make_request_and_skipIf(sys.flags.optimize >= 2,
a4c45f8e70aa Issue 6292: for the moment at least, the test suite passes if run
R. David Murray <rdmurray@bitdance.com>
parents: 58817
diff changeset
130 "Docstrings are omitted with -O2 and above")
44253
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
131 def test_autolinking(self):
59045
a4c45f8e70aa Issue 6292: for the moment at least, the test suite passes if run
R. David Murray <rdmurray@bitdance.com>
parents: 58817
diff changeset
132 """Test that the server correctly automatically wraps references to
a4c45f8e70aa Issue 6292: for the moment at least, the test suite passes if run
R. David Murray <rdmurray@bitdance.com>
parents: 58817
diff changeset
133 PEPS and RFCs with links, and that it linkifies text starting with
a4c45f8e70aa Issue 6292: for the moment at least, the test suite passes if run
R. David Murray <rdmurray@bitdance.com>
parents: 58817
diff changeset
134 http or ftp protocol prefixes.
44253
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
135
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
136 The documentation for the "add" method contains the test material.
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
137 """
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
138 self.client.request("GET", "/")
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
139 response = self.client.getresponse()
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
140
58460
17891566a478 use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents: 56982
diff changeset
141 self.assertIn(
17891566a478 use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents: 56982
diff changeset
142 ('<dl><dt><a name="-add"><strong>add</strong></a>(x, y)</dt><dd>'
17891566a478 use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents: 56982
diff changeset
143 '<tt>Add&nbsp;two&nbsp;instances&nbsp;together.&nbsp;This&nbsp;'
17891566a478 use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents: 56982
diff changeset
144 'follows&nbsp;<a href="http://www.python.org/dev/peps/pep-0008/">'
17891566a478 use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents: 56982
diff changeset
145 'PEP008</a>,&nbsp;but&nbsp;has&nbsp;nothing<br>\nto&nbsp;do&nbsp;'
17891566a478 use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents: 56982
diff changeset
146 'with&nbsp;<a href="http://www.rfc-editor.org/rfc/rfc1952.txt">'
17891566a478 use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents: 56982
diff changeset
147 'RFC1952</a>.&nbsp;Case&nbsp;should&nbsp;matter:&nbsp;pEp008&nbsp;'
17891566a478 use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents: 56982
diff changeset
148 'and&nbsp;rFC1952.&nbsp;&nbsp;Things<br>\nthat&nbsp;start&nbsp;'
17891566a478 use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents: 56982
diff changeset
149 'with&nbsp;http&nbsp;and&nbsp;ftp&nbsp;should&nbsp;be&nbsp;'
17891566a478 use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents: 56982
diff changeset
150 'auto-linked,&nbsp;too:<br>\n<a href="http://google.com">'
17891566a478 use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents: 56982
diff changeset
151 'http://google.com</a>.</tt></dd></dl>'), response.read())
44253
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
152
59045
a4c45f8e70aa Issue 6292: for the moment at least, the test suite passes if run
R. David Murray <rdmurray@bitdance.com>
parents: 58817
diff changeset
153 @make_request_and_skipIf(sys.flags.optimize >= 2,
a4c45f8e70aa Issue 6292: for the moment at least, the test suite passes if run
R. David Murray <rdmurray@bitdance.com>
parents: 58817
diff changeset
154 "Docstrings are omitted with -O2 and above")
44253
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
155 def test_system_methods(self):
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
156 """Test the precense of three consecutive system.* methods.
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
157
59045
a4c45f8e70aa Issue 6292: for the moment at least, the test suite passes if run
R. David Murray <rdmurray@bitdance.com>
parents: 58817
diff changeset
158 This also tests their use of parameter type recognition and the
a4c45f8e70aa Issue 6292: for the moment at least, the test suite passes if run
R. David Murray <rdmurray@bitdance.com>
parents: 58817
diff changeset
159 systems related to that process.
44253
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
160 """
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
161 self.client.request("GET", "/")
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
162 response = self.client.getresponse()
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
163
58460
17891566a478 use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents: 56982
diff changeset
164 self.assertIn(
17891566a478 use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents: 56982
diff changeset
165 ('<dl><dt><a name="-system.listMethods"><strong>system.listMethods'
17891566a478 use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents: 56982
diff changeset
166 '</strong></a>()</dt><dd><tt><a href="#-system.listMethods">system'
17891566a478 use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents: 56982
diff changeset
167 '.listMethods</a>()&nbsp;=&gt;&nbsp;[\'add\',&nbsp;\'subtract\','
17891566a478 use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents: 56982
diff changeset
168 '&nbsp;\'multiple\']<br>\n&nbsp;<br>\nReturns&nbsp;a&nbsp;list'
17891566a478 use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents: 56982
diff changeset
169 '&nbsp;of&nbsp;the&nbsp;methods&nbsp;supported&nbsp;by&nbsp;the'
17891566a478 use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents: 56982
diff changeset
170 '&nbsp;server.</tt></dd></dl>\n <dl><dt><a name="-system.methodHelp">'
17891566a478 use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents: 56982
diff changeset
171 '<strong>system.methodHelp</strong></a>(method_name)</dt><dd><tt>'
17891566a478 use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents: 56982
diff changeset
172 '<a href="#-system.methodHelp">system.methodHelp</a>(\'add\')&nbsp;'
17891566a478 use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents: 56982
diff changeset
173 '=&gt;&nbsp;"Adds&nbsp;two&nbsp;integers&nbsp;together"<br>\n&nbsp;'
17891566a478 use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents: 56982
diff changeset
174 '<br>\nReturns&nbsp;a&nbsp;string&nbsp;containing&nbsp;documentation'
17891566a478 use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents: 56982
diff changeset
175 '&nbsp;for&nbsp;the&nbsp;specified&nbsp;method.</tt></dd></dl>\n '
17891566a478 use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents: 56982
diff changeset
176 '<dl><dt><a name="-system.methodSignature"><strong>system.'
17891566a478 use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents: 56982
diff changeset
177 'methodSignature</strong></a>(method_name)</dt><dd><tt><a href="#-'
17891566a478 use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents: 56982
diff changeset
178 'system.methodSignature">system.methodSignature</a>(\'add\')&nbsp;'
17891566a478 use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents: 56982
diff changeset
179 '=&gt;&nbsp;[double,&nbsp;int,&nbsp;int]<br>\n&nbsp;<br>\nReturns'
17891566a478 use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents: 56982
diff changeset
180 '&nbsp;a&nbsp;list&nbsp;describing&nbsp;the&nbsp;signature&nbsp;of'
17891566a478 use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents: 56982
diff changeset
181 '&nbsp;the&nbsp;method.&nbsp;In&nbsp;the<br>\nabove&nbsp;example,'
17891566a478 use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents: 56982
diff changeset
182 '&nbsp;the&nbsp;add&nbsp;method&nbsp;takes&nbsp;two&nbsp;integers'
17891566a478 use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents: 56982
diff changeset
183 '&nbsp;as&nbsp;arguments<br>\nand&nbsp;returns&nbsp;a&nbsp;double'
17891566a478 use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents: 56982
diff changeset
184 '&nbsp;result.<br>\n&nbsp;<br>\nThis&nbsp;server&nbsp;does&nbsp;'
17891566a478 use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents: 56982
diff changeset
185 'NOT&nbsp;support&nbsp;system.methodSignature.</tt></dd></dl>'),
17891566a478 use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents: 56982
diff changeset
186 response.read())
44253
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
187
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
188 def test_autolink_dotted_methods(self):
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
189 """Test that selfdot values are made strong automatically in the
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
190 documentation."""
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
191 self.client.request("GET", "/")
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
192 response = self.client.getresponse()
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
193
58460
17891566a478 use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents: 56982
diff changeset
194 self.assertIn("""Try&nbsp;self.<strong>add</strong>,&nbsp;too.""",
17891566a478 use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents: 56982
diff changeset
195 response.read())
44253
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
196
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
197 def test_main():
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
198 test_support.run_unittest(DocXMLRPCHTTPGETServer)
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
199
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
200 if __name__ == '__main__':
60a740f5a57a Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
201 test_main()