Mercurial > cpython-lru_cache-weakref
annotate Lib/test/test_docxmlrpc.py @ 87690:66c1c9f32567 default tip
Add use_weakref option to functools.lru_cache
The use_weakref option makes lru_cache create weak references to the function
arguments when creating the cache key, which prevents them from staying in the
memory forever even after all other references to them are gone.
This is a proof of concept for http://bugs.python.org/issue19859
| author | Radomir Dopieralski <devel@sheep.art.pl> |
|---|---|
| date | Tue, 03 Dec 2013 16:02:48 +0100 |
| parents | bc49e82ee013 |
| children |
| rev | line source |
|---|---|
|
47288
346a99df5889
Create xmlrpc package. Issue #2886.
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
1 from xmlrpc.server import DocXMLRPCServer |
|
47318
e1fcc3881cb6
Create http package. #2883.
Georg Brandl <georg@python.org>
parents:
47288
diff
changeset
|
2 import http.client |
|
59091
8d3ff2fbbe4b
Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
58456
diff
changeset
|
3 import sys |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
45192
diff
changeset
|
4 from test import support |
|
61073
493bb4585e38
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59613
diff
changeset
|
5 threading = support.import_module('threading') |
|
44253
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
6 import time |
|
59613
77c71f258df7
Merged revisions 78018,78035-78040,78042-78043,78046,78048-78052,78054,78059,78075-78080 via svnmerge from
Georg Brandl <georg@python.org>
parents:
59091
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 |
|
59091
8d3ff2fbbe4b
Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
58456
diff
changeset
|
12 def make_request_and_skipIf(condition, reason): |
|
8d3ff2fbbe4b
Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
58456
diff
changeset
|
13 # If we skip the test, we have to make a request because the |
|
8d3ff2fbbe4b
Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
58456
diff
changeset
|
14 # the server created in setUp blocks expecting one to come in. |
|
8d3ff2fbbe4b
Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
58456
diff
changeset
|
15 if not condition: |
|
8d3ff2fbbe4b
Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
58456
diff
changeset
|
16 return lambda func: func |
|
8d3ff2fbbe4b
Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
58456
diff
changeset
|
17 def decorator(func): |
|
8d3ff2fbbe4b
Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
58456
diff
changeset
|
18 def make_request_and_skip(self): |
|
8d3ff2fbbe4b
Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
58456
diff
changeset
|
19 self.client.request("GET", "/") |
|
8d3ff2fbbe4b
Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
58456
diff
changeset
|
20 self.client.getresponse() |
|
8d3ff2fbbe4b
Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
58456
diff
changeset
|
21 raise unittest.SkipTest(reason) |
|
8d3ff2fbbe4b
Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
58456
diff
changeset
|
22 return make_request_and_skip |
|
8d3ff2fbbe4b
Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
58456
diff
changeset
|
23 return decorator |
|
8d3ff2fbbe4b
Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
58456
diff
changeset
|
24 |
|
8d3ff2fbbe4b
Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
58456
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): |
| 49493 | 27 serv = DocXMLRPCServer(("localhost", 0), logRequests=False) |
| 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( |
|
58456
f0f221e1a7c0
use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents:
56983
diff
changeset
|
37 "This is an XML-RPC server's documentation, but the server " |
|
f0f221e1a7c0
use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents:
56983
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 |
|
85096
bc49e82ee013
#8112: Update the documenting xmlrpc server to use getfullargspec.
R David Murray <rdmurray@bitdance.com>
parents:
80928
diff
changeset
|
57 def annotation(x: int): |
|
bc49e82ee013
#8112: Update the documenting xmlrpc server to use getfullargspec.
R David Murray <rdmurray@bitdance.com>
parents:
80928
diff
changeset
|
58 """ Use function annotations. """ |
|
bc49e82ee013
#8112: Update the documenting xmlrpc server to use getfullargspec.
R David Murray <rdmurray@bitdance.com>
parents:
80928
diff
changeset
|
59 return x |
|
bc49e82ee013
#8112: Update the documenting xmlrpc server to use getfullargspec.
R David Murray <rdmurray@bitdance.com>
parents:
80928
diff
changeset
|
60 |
|
bc49e82ee013
#8112: Update the documenting xmlrpc server to use getfullargspec.
R David Murray <rdmurray@bitdance.com>
parents:
80928
diff
changeset
|
61 class ClassWithAnnotation: |
|
bc49e82ee013
#8112: Update the documenting xmlrpc server to use getfullargspec.
R David Murray <rdmurray@bitdance.com>
parents:
80928
diff
changeset
|
62 def method_annotation(self, x: bytes): |
|
bc49e82ee013
#8112: Update the documenting xmlrpc server to use getfullargspec.
R David Murray <rdmurray@bitdance.com>
parents:
80928
diff
changeset
|
63 return x.decode() |
|
bc49e82ee013
#8112: Update the documenting xmlrpc server to use getfullargspec.
R David Murray <rdmurray@bitdance.com>
parents:
80928
diff
changeset
|
64 |
|
44253
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
65 serv.register_function(add) |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
66 serv.register_function(lambda x, y: x-y) |
|
85096
bc49e82ee013
#8112: Update the documenting xmlrpc server to use getfullargspec.
R David Murray <rdmurray@bitdance.com>
parents:
80928
diff
changeset
|
67 serv.register_function(annotation) |
|
bc49e82ee013
#8112: Update the documenting xmlrpc server to use getfullargspec.
R David Murray <rdmurray@bitdance.com>
parents:
80928
diff
changeset
|
68 serv.register_instance(ClassWithAnnotation()) |
|
44253
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 while numrequests > 0: |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
71 serv.handle_request() |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
72 numrequests -= 1 |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
73 except socket.timeout: |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
74 pass |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
75 finally: |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
76 serv.server_close() |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
77 PORT = None |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
78 evt.set() |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
79 |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
80 class DocXMLRPCHTTPGETServer(unittest.TestCase): |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
81 def setUp(self): |
|
56983
713e21a5471e
Merged revisions 75960 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
55593
diff
changeset
|
82 self._threads = support.threading_setup() |
|
44253
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
83 # Enable server feedback |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
84 DocXMLRPCServer._send_traceback_header = True |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
85 |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
86 self.evt = threading.Event() |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
87 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
|
88 |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
89 # wait for port to be assigned |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
90 n = 1000 |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
91 while n > 0 and PORT is None: |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
92 time.sleep(0.001) |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
93 n -= 1 |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
94 |
|
47318
e1fcc3881cb6
Create http package. #2883.
Georg Brandl <georg@python.org>
parents:
47288
diff
changeset
|
95 self.client = http.client.HTTPConnection("localhost:%d" % PORT) |
|
44253
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
96 |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
97 def tearDown(self): |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
98 self.client.close() |
|
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.evt.wait() |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
101 |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
102 # Disable server feedback |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
103 DocXMLRPCServer._send_traceback_header = False |
|
56983
713e21a5471e
Merged revisions 75960 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
55593
diff
changeset
|
104 support.threading_cleanup(*self._threads) |
|
44253
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_valid_get_response(self): |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
107 self.client.request("GET", "/") |
|
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, 200) |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
111 self.assertEqual(response.getheader("Content-type"), "text/html") |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
112 |
|
80928
fdf907708f49
Issue #16714: use 'raise' exceptions, don't 'throw'.
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
61073
diff
changeset
|
113 # Server raises an exception if we don't start to read the data |
|
44253
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
114 response.read() |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
115 |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
116 def test_invalid_get_response(self): |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
117 self.client.request("GET", "/spam") |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
118 response = self.client.getresponse() |
|
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 self.assertEqual(response.status, 404) |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
121 self.assertEqual(response.getheader("Content-type"), "text/plain") |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
122 |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
123 response.read() |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
124 |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
125 def test_lambda(self): |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
126 """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
|
127 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
|
128 HTML, "<lambda>". |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
129 |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
130 The subtraction lambda method is tested. |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
131 """ |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
132 self.client.request("GET", "/") |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
133 response = self.client.getresponse() |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
134 |
|
58456
f0f221e1a7c0
use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents:
56983
diff
changeset
|
135 self.assertIn((b'<dl><dt><a name="-<lambda>"><strong>' |
|
f0f221e1a7c0
use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents:
56983
diff
changeset
|
136 b'<lambda></strong></a>(x, y)</dt></dl>'), |
|
f0f221e1a7c0
use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents:
56983
diff
changeset
|
137 response.read()) |
|
44253
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
138 |
|
59091
8d3ff2fbbe4b
Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
58456
diff
changeset
|
139 @make_request_and_skipIf(sys.flags.optimize >= 2, |
|
8d3ff2fbbe4b
Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
58456
diff
changeset
|
140 "Docstrings are omitted with -O2 and above") |
|
44253
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
141 def test_autolinking(self): |
|
59091
8d3ff2fbbe4b
Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
58456
diff
changeset
|
142 """Test that the server correctly automatically wraps references to |
|
8d3ff2fbbe4b
Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
58456
diff
changeset
|
143 PEPS and RFCs with links, and that it linkifies text starting with |
|
8d3ff2fbbe4b
Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
58456
diff
changeset
|
144 http or ftp protocol prefixes. |
|
44253
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
145 |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
146 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
|
147 """ |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
148 self.client.request("GET", "/") |
|
45192
142a11b3057e
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60568-60598,60600-60616 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44257
diff
changeset
|
149 response = self.client.getresponse().read() |
|
44253
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
150 |
|
58456
f0f221e1a7c0
use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents:
56983
diff
changeset
|
151 self.assertIn( |
|
f0f221e1a7c0
use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents:
56983
diff
changeset
|
152 (b'<dl><dt><a name="-add"><strong>add</strong></a>(x, y)</dt><dd>' |
|
f0f221e1a7c0
use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents:
56983
diff
changeset
|
153 b'<tt>Add two instances together. This ' |
|
f0f221e1a7c0
use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents:
56983
diff
changeset
|
154 b'follows <a href="http://www.python.org/dev/peps/pep-0008/">' |
|
f0f221e1a7c0
use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents:
56983
diff
changeset
|
155 b'PEP008</a>, but has nothing<br>\nto do ' |
|
f0f221e1a7c0
use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents:
56983
diff
changeset
|
156 b'with <a href="http://www.rfc-editor.org/rfc/rfc1952.txt">' |
|
f0f221e1a7c0
use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents:
56983
diff
changeset
|
157 b'RFC1952</a>. Case should matter: pEp008 ' |
|
f0f221e1a7c0
use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents:
56983
diff
changeset
|
158 b'and rFC1952. Things<br>\nthat start ' |
|
f0f221e1a7c0
use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents:
56983
diff
changeset
|
159 b'with http and ftp should be ' |
|
f0f221e1a7c0
use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents:
56983
diff
changeset
|
160 b'auto-linked, too:<br>\n<a href="http://google.com">' |
|
f0f221e1a7c0
use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents:
56983
diff
changeset
|
161 b'http://google.com</a>.</tt></dd></dl>'), response) |
|
44253
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
162 |
|
59091
8d3ff2fbbe4b
Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
58456
diff
changeset
|
163 @make_request_and_skipIf(sys.flags.optimize >= 2, |
|
8d3ff2fbbe4b
Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
58456
diff
changeset
|
164 "Docstrings are omitted with -O2 and above") |
|
44253
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
165 def test_system_methods(self): |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
166 """Test the precense of three consecutive system.* methods. |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
167 |
|
59091
8d3ff2fbbe4b
Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
58456
diff
changeset
|
168 This also tests their use of parameter type recognition and the |
|
8d3ff2fbbe4b
Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
58456
diff
changeset
|
169 systems related to that process. |
|
44253
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
170 """ |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
171 self.client.request("GET", "/") |
|
44257
76ce597c72ee
Fixed doc xml rpc tests and server
Christian Heimes <christian@cheimes.de>
parents:
44253
diff
changeset
|
172 response = self.client.getresponse().read() |
|
44253
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
173 |
|
58456
f0f221e1a7c0
use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents:
56983
diff
changeset
|
174 self.assertIn( |
|
f0f221e1a7c0
use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents:
56983
diff
changeset
|
175 (b'<dl><dt><a name="-system.methodHelp"><strong>system.methodHelp' |
|
f0f221e1a7c0
use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents:
56983
diff
changeset
|
176 b'</strong></a>(method_name)</dt><dd><tt><a href="#-system.method' |
|
f0f221e1a7c0
use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents:
56983
diff
changeset
|
177 b'Help">system.methodHelp</a>(\'add\') => "Adds ' |
|
f0f221e1a7c0
use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents:
56983
diff
changeset
|
178 b'two integers together"<br>\n <br>\nReturns a' |
|
f0f221e1a7c0
use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents:
56983
diff
changeset
|
179 b' string containing documentation for ' |
|
f0f221e1a7c0
use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents:
56983
diff
changeset
|
180 b'the specified method.</tt></dd></dl>\n<dl><dt><a name' |
|
f0f221e1a7c0
use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents:
56983
diff
changeset
|
181 b'="-system.methodSignature"><strong>system.methodSignature</strong>' |
|
f0f221e1a7c0
use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents:
56983
diff
changeset
|
182 b'</a>(method_name)</dt><dd><tt><a href="#-system.methodSignature">' |
|
f0f221e1a7c0
use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents:
56983
diff
changeset
|
183 b'system.methodSignature</a>(\'add\') => [double, ' |
|
f0f221e1a7c0
use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents:
56983
diff
changeset
|
184 b'int, int]<br>\n <br>\nReturns a list ' |
|
f0f221e1a7c0
use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents:
56983
diff
changeset
|
185 b'describing the signature of the method.' |
|
f0f221e1a7c0
use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents:
56983
diff
changeset
|
186 b' In the<br>\nabove example, the add ' |
|
f0f221e1a7c0
use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents:
56983
diff
changeset
|
187 b'method takes two integers as arguments' |
|
f0f221e1a7c0
use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents:
56983
diff
changeset
|
188 b'<br>\nand returns a double result.<br>\n ' |
|
f0f221e1a7c0
use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents:
56983
diff
changeset
|
189 b'<br>\nThis server does NOT support system' |
|
85096
bc49e82ee013
#8112: Update the documenting xmlrpc server to use getfullargspec.
R David Murray <rdmurray@bitdance.com>
parents:
80928
diff
changeset
|
190 b'.methodSignature.</tt></dd></dl>'), response) |
|
44253
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
191 |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
192 def test_autolink_dotted_methods(self): |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
193 """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
|
194 documentation.""" |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
195 self.client.request("GET", "/") |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
196 response = self.client.getresponse() |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
197 |
|
58456
f0f221e1a7c0
use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents:
56983
diff
changeset
|
198 self.assertIn(b"""Try self.<strong>add</strong>, too.""", |
|
f0f221e1a7c0
use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents:
56983
diff
changeset
|
199 response.read()) |
|
44253
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
200 |
|
85096
bc49e82ee013
#8112: Update the documenting xmlrpc server to use getfullargspec.
R David Murray <rdmurray@bitdance.com>
parents:
80928
diff
changeset
|
201 def test_annotations(self): |
|
bc49e82ee013
#8112: Update the documenting xmlrpc server to use getfullargspec.
R David Murray <rdmurray@bitdance.com>
parents:
80928
diff
changeset
|
202 """ Test that annotations works as expected """ |
|
bc49e82ee013
#8112: Update the documenting xmlrpc server to use getfullargspec.
R David Murray <rdmurray@bitdance.com>
parents:
80928
diff
changeset
|
203 self.client.request("GET", "/") |
|
bc49e82ee013
#8112: Update the documenting xmlrpc server to use getfullargspec.
R David Murray <rdmurray@bitdance.com>
parents:
80928
diff
changeset
|
204 response = self.client.getresponse() |
|
bc49e82ee013
#8112: Update the documenting xmlrpc server to use getfullargspec.
R David Murray <rdmurray@bitdance.com>
parents:
80928
diff
changeset
|
205 self.assertIn( |
|
bc49e82ee013
#8112: Update the documenting xmlrpc server to use getfullargspec.
R David Murray <rdmurray@bitdance.com>
parents:
80928
diff
changeset
|
206 (b'<dl><dt><a name="-annotation"><strong>annotation</strong></a>' |
|
bc49e82ee013
#8112: Update the documenting xmlrpc server to use getfullargspec.
R David Murray <rdmurray@bitdance.com>
parents:
80928
diff
changeset
|
207 b'(x: int)</dt><dd><tt>Use function annotations.</tt>' |
|
bc49e82ee013
#8112: Update the documenting xmlrpc server to use getfullargspec.
R David Murray <rdmurray@bitdance.com>
parents:
80928
diff
changeset
|
208 b'</dd></dl>\n<dl><dt><a name="-method_annotation"><strong>' |
|
bc49e82ee013
#8112: Update the documenting xmlrpc server to use getfullargspec.
R David Murray <rdmurray@bitdance.com>
parents:
80928
diff
changeset
|
209 b'method_annotation</strong></a>(x: bytes)</dt></dl>'), |
|
bc49e82ee013
#8112: Update the documenting xmlrpc server to use getfullargspec.
R David Murray <rdmurray@bitdance.com>
parents:
80928
diff
changeset
|
210 response.read()) |
|
bc49e82ee013
#8112: Update the documenting xmlrpc server to use getfullargspec.
R David Murray <rdmurray@bitdance.com>
parents:
80928
diff
changeset
|
211 |
|
bc49e82ee013
#8112: Update the documenting xmlrpc server to use getfullargspec.
R David Murray <rdmurray@bitdance.com>
parents:
80928
diff
changeset
|
212 |
|
44253
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
213 def test_main(): |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
45192
diff
changeset
|
214 support.run_unittest(DocXMLRPCHTTPGETServer) |
|
44253
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
215 |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
216 if __name__ == '__main__': |
|
60a740f5a57a
Merged revisions 59441-59449 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
217 test_main() |
