Mercurial > cpython-lru_cache-weakref
annotate Lib/test/test_asyncore.py @ 54294:dba767bc3155 legacy-trunk
remove mention of old ctypes version
| author | Benjamin Peterson <benjamin@python.org> |
|---|---|
| date | Sat, 23 May 2009 20:59:09 +0000 |
| parents | ab75da266e57 |
| children | 42fd7855347e |
| rev | line source |
|---|---|
|
47703
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
1 import asyncore |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
2 import unittest |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
3 import select |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
4 import os |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
5 import socket |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
6 import threading |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
7 import sys |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
8 import time |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
9 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
10 from test import test_support |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
11 from test.test_support import TESTFN, run_unittest, unlink |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
12 from StringIO import StringIO |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
13 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
14 HOST = test_support.HOST |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
15 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
16 class dummysocket: |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
17 def __init__(self): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
18 self.closed = False |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
19 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
20 def close(self): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
21 self.closed = True |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
22 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
23 def fileno(self): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
24 return 42 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
25 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
26 class dummychannel: |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
27 def __init__(self): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
28 self.socket = dummysocket() |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
29 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
30 def close(self): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
31 self.socket.close() |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
32 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
33 class exitingdummy: |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
34 def __init__(self): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
35 pass |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
36 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
37 def handle_read_event(self): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
38 raise asyncore.ExitNow() |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
39 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
40 handle_write_event = handle_read_event |
|
47935
8da5d38ddca3
Fixed test for asyncore.
Josiah Carlson <josiah.carlson@gmail.com>
parents:
47907
diff
changeset
|
41 handle_close = handle_read_event |
|
47703
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
42 handle_expt_event = handle_read_event |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
43 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
44 class crashingdummy: |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
45 def __init__(self): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
46 self.error_handled = False |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
47 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
48 def handle_read_event(self): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
49 raise Exception() |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
50 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
51 handle_write_event = handle_read_event |
|
47935
8da5d38ddca3
Fixed test for asyncore.
Josiah Carlson <josiah.carlson@gmail.com>
parents:
47907
diff
changeset
|
52 handle_close = handle_read_event |
|
47703
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
53 handle_expt_event = handle_read_event |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
54 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
55 def handle_error(self): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
56 self.error_handled = True |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
57 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
58 # used when testing senders; just collects what it gets until newline is sent |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
59 def capture_server(evt, buf, serv): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
60 try: |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
61 serv.listen(5) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
62 conn, addr = serv.accept() |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
63 except socket.timeout: |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
64 pass |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
65 else: |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
66 n = 200 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
67 while n > 0: |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
68 r, w, e = select.select([conn], [], []) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
69 if r: |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
70 data = conn.recv(10) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
71 # keep everything except for the newline terminator |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
72 buf.write(data.replace('\n', '')) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
73 if '\n' in data: |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
74 break |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
75 n -= 1 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
76 time.sleep(0.01) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
77 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
78 conn.close() |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
79 finally: |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
80 serv.close() |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
81 evt.set() |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
82 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
83 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
84 class HelperFunctionTests(unittest.TestCase): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
85 def test_readwriteexc(self): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
86 # Check exception handling behavior of read, write and _exception |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
87 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
88 # check that ExitNow exceptions in the object handler method |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
89 # bubbles all the way up through asyncore read/write/_exception calls |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
90 tr1 = exitingdummy() |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
91 self.assertRaises(asyncore.ExitNow, asyncore.read, tr1) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
92 self.assertRaises(asyncore.ExitNow, asyncore.write, tr1) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
93 self.assertRaises(asyncore.ExitNow, asyncore._exception, tr1) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
94 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
95 # check that an exception other than ExitNow in the object handler |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
96 # method causes the handle_error method to get called |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
97 tr2 = crashingdummy() |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
98 asyncore.read(tr2) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
99 self.assertEqual(tr2.error_handled, True) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
100 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
101 tr2 = crashingdummy() |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
102 asyncore.write(tr2) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
103 self.assertEqual(tr2.error_handled, True) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
104 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
105 tr2 = crashingdummy() |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
106 asyncore._exception(tr2) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
107 self.assertEqual(tr2.error_handled, True) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
108 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
109 # asyncore.readwrite uses constants in the select module that |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
110 # are not present in Windows systems (see this thread: |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
111 # http://mail.python.org/pipermail/python-list/2001-October/109973.html) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
112 # These constants should be present as long as poll is available |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
113 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
114 if hasattr(select, 'poll'): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
115 def test_readwrite(self): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
116 # Check that correct methods are called by readwrite() |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
117 |
|
53067
f34281db47e6
Make test_asyncore tests match code changes introduced by the
R. David Murray <rdmurray@bitdance.com>
parents:
52630
diff
changeset
|
118 attributes = ('read', 'expt', 'write', 'closed', 'error_handled') |
|
f34281db47e6
Make test_asyncore tests match code changes introduced by the
R. David Murray <rdmurray@bitdance.com>
parents:
52630
diff
changeset
|
119 |
|
f34281db47e6
Make test_asyncore tests match code changes introduced by the
R. David Murray <rdmurray@bitdance.com>
parents:
52630
diff
changeset
|
120 expected = ( |
|
f34281db47e6
Make test_asyncore tests match code changes introduced by the
R. David Murray <rdmurray@bitdance.com>
parents:
52630
diff
changeset
|
121 (select.POLLIN, 'read'), |
|
f34281db47e6
Make test_asyncore tests match code changes introduced by the
R. David Murray <rdmurray@bitdance.com>
parents:
52630
diff
changeset
|
122 (select.POLLPRI, 'expt'), |
|
f34281db47e6
Make test_asyncore tests match code changes introduced by the
R. David Murray <rdmurray@bitdance.com>
parents:
52630
diff
changeset
|
123 (select.POLLOUT, 'write'), |
|
f34281db47e6
Make test_asyncore tests match code changes introduced by the
R. David Murray <rdmurray@bitdance.com>
parents:
52630
diff
changeset
|
124 (select.POLLERR, 'closed'), |
|
f34281db47e6
Make test_asyncore tests match code changes introduced by the
R. David Murray <rdmurray@bitdance.com>
parents:
52630
diff
changeset
|
125 (select.POLLHUP, 'closed'), |
|
f34281db47e6
Make test_asyncore tests match code changes introduced by the
R. David Murray <rdmurray@bitdance.com>
parents:
52630
diff
changeset
|
126 (select.POLLNVAL, 'closed'), |
|
f34281db47e6
Make test_asyncore tests match code changes introduced by the
R. David Murray <rdmurray@bitdance.com>
parents:
52630
diff
changeset
|
127 ) |
|
f34281db47e6
Make test_asyncore tests match code changes introduced by the
R. David Murray <rdmurray@bitdance.com>
parents:
52630
diff
changeset
|
128 |
|
47703
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
129 class testobj: |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
130 def __init__(self): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
131 self.read = False |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
132 self.write = False |
|
47907
d7fd32ce07aa
Fixed bugs 760475, 953599, and 1519.
Josiah Carlson <josiah.carlson@gmail.com>
parents:
47703
diff
changeset
|
133 self.closed = False |
|
47703
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
134 self.expt = False |
|
53067
f34281db47e6
Make test_asyncore tests match code changes introduced by the
R. David Murray <rdmurray@bitdance.com>
parents:
52630
diff
changeset
|
135 self.error_handled = False |
|
47703
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
136 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
137 def handle_read_event(self): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
138 self.read = True |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
139 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
140 def handle_write_event(self): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
141 self.write = True |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
142 |
|
47935
8da5d38ddca3
Fixed test for asyncore.
Josiah Carlson <josiah.carlson@gmail.com>
parents:
47907
diff
changeset
|
143 def handle_close(self): |
|
47907
d7fd32ce07aa
Fixed bugs 760475, 953599, and 1519.
Josiah Carlson <josiah.carlson@gmail.com>
parents:
47703
diff
changeset
|
144 self.closed = True |
|
d7fd32ce07aa
Fixed bugs 760475, 953599, and 1519.
Josiah Carlson <josiah.carlson@gmail.com>
parents:
47703
diff
changeset
|
145 |
|
47703
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
146 def handle_expt_event(self): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
147 self.expt = True |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
148 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
149 def handle_error(self): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
150 self.error_handled = True |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
151 |
|
53067
f34281db47e6
Make test_asyncore tests match code changes introduced by the
R. David Murray <rdmurray@bitdance.com>
parents:
52630
diff
changeset
|
152 for flag, expectedattr in expected: |
|
47703
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
153 tobj = testobj() |
|
53067
f34281db47e6
Make test_asyncore tests match code changes introduced by the
R. David Murray <rdmurray@bitdance.com>
parents:
52630
diff
changeset
|
154 self.assertEqual(getattr(tobj, expectedattr), False) |
|
47703
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
155 asyncore.readwrite(tobj, flag) |
|
53067
f34281db47e6
Make test_asyncore tests match code changes introduced by the
R. David Murray <rdmurray@bitdance.com>
parents:
52630
diff
changeset
|
156 |
|
f34281db47e6
Make test_asyncore tests match code changes introduced by the
R. David Murray <rdmurray@bitdance.com>
parents:
52630
diff
changeset
|
157 # Only the attribute modified by the routine we expect to be |
|
f34281db47e6
Make test_asyncore tests match code changes introduced by the
R. David Murray <rdmurray@bitdance.com>
parents:
52630
diff
changeset
|
158 # called should be True. |
|
f34281db47e6
Make test_asyncore tests match code changes introduced by the
R. David Murray <rdmurray@bitdance.com>
parents:
52630
diff
changeset
|
159 for attr in attributes: |
|
f34281db47e6
Make test_asyncore tests match code changes introduced by the
R. David Murray <rdmurray@bitdance.com>
parents:
52630
diff
changeset
|
160 self.assertEqual(getattr(tobj, attr), attr==expectedattr) |
|
47703
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
161 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
162 # check that ExitNow exceptions in the object handler method |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
163 # bubbles all the way up through asyncore readwrite call |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
164 tr1 = exitingdummy() |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
165 self.assertRaises(asyncore.ExitNow, asyncore.readwrite, tr1, flag) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
166 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
167 # check that an exception other than ExitNow in the object handler |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
168 # method causes the handle_error method to get called |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
169 tr2 = crashingdummy() |
|
53067
f34281db47e6
Make test_asyncore tests match code changes introduced by the
R. David Murray <rdmurray@bitdance.com>
parents:
52630
diff
changeset
|
170 self.assertEqual(tr2.error_handled, False) |
|
47703
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
171 asyncore.readwrite(tr2, flag) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
172 self.assertEqual(tr2.error_handled, True) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
173 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
174 def test_closeall(self): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
175 self.closeall_check(False) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
176 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
177 def test_closeall_default(self): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
178 self.closeall_check(True) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
179 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
180 def closeall_check(self, usedefault): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
181 # Check that close_all() closes everything in a given map |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
182 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
183 l = [] |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
184 testmap = {} |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
185 for i in range(10): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
186 c = dummychannel() |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
187 l.append(c) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
188 self.assertEqual(c.socket.closed, False) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
189 testmap[i] = c |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
190 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
191 if usedefault: |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
192 socketmap = asyncore.socket_map |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
193 try: |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
194 asyncore.socket_map = testmap |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
195 asyncore.close_all() |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
196 finally: |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
197 testmap, asyncore.socket_map = asyncore.socket_map, socketmap |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
198 else: |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
199 asyncore.close_all(testmap) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
200 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
201 self.assertEqual(len(testmap), 0) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
202 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
203 for c in l: |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
204 self.assertEqual(c.socket.closed, True) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
205 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
206 def test_compact_traceback(self): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
207 try: |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
208 raise Exception("I don't like spam!") |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
209 except: |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
210 real_t, real_v, real_tb = sys.exc_info() |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
211 r = asyncore.compact_traceback() |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
212 else: |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
213 self.fail("Expected exception") |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
214 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
215 (f, function, line), t, v, info = r |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
216 self.assertEqual(os.path.split(f)[-1], 'test_asyncore.py') |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
217 self.assertEqual(function, 'test_compact_traceback') |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
218 self.assertEqual(t, real_t) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
219 self.assertEqual(v, real_v) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
220 self.assertEqual(info, '[%s|%s|%s]' % (f, function, line)) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
221 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
222 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
223 class DispatcherTests(unittest.TestCase): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
224 def setUp(self): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
225 pass |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
226 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
227 def tearDown(self): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
228 asyncore.close_all() |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
229 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
230 def test_basic(self): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
231 d = asyncore.dispatcher() |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
232 self.assertEqual(d.readable(), True) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
233 self.assertEqual(d.writable(), True) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
234 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
235 def test_repr(self): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
236 d = asyncore.dispatcher() |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
237 self.assertEqual(repr(d), '<asyncore.dispatcher at %#x>' % id(d)) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
238 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
239 def test_log(self): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
240 d = asyncore.dispatcher() |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
241 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
242 # capture output of dispatcher.log() (to stderr) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
243 fp = StringIO() |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
244 stderr = sys.stderr |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
245 l1 = "Lovely spam! Wonderful spam!" |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
246 l2 = "I don't like spam!" |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
247 try: |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
248 sys.stderr = fp |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
249 d.log(l1) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
250 d.log(l2) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
251 finally: |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
252 sys.stderr = stderr |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
253 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
254 lines = fp.getvalue().splitlines() |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
255 self.assertEquals(lines, ['log: %s' % l1, 'log: %s' % l2]) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
256 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
257 def test_log_info(self): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
258 d = asyncore.dispatcher() |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
259 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
260 # capture output of dispatcher.log_info() (to stdout via print) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
261 fp = StringIO() |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
262 stdout = sys.stdout |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
263 l1 = "Have you got anything without spam?" |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
264 l2 = "Why can't she have egg bacon spam and sausage?" |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
265 l3 = "THAT'S got spam in it!" |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
266 try: |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
267 sys.stdout = fp |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
268 d.log_info(l1, 'EGGS') |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
269 d.log_info(l2) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
270 d.log_info(l3, 'SPAM') |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
271 finally: |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
272 sys.stdout = stdout |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
273 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
274 lines = fp.getvalue().splitlines() |
|
53119
ab75da266e57
Adjust test_asyncore to account for intentional asyncore behavior change
R. David Murray <rdmurray@bitdance.com>
parents:
53067
diff
changeset
|
275 expected = ['EGGS: %s' % l1, 'info: %s' % l2, 'SPAM: %s' % l3] |
|
47703
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
276 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
277 self.assertEquals(lines, expected) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
278 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
279 def test_unhandled(self): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
280 d = asyncore.dispatcher() |
|
52630
e555fd8c4b6e
Fix for failing asyncore tests.
Josiah Carlson <josiah.carlson@gmail.com>
parents:
48967
diff
changeset
|
281 d.ignore_log_types = () |
|
47703
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
282 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
283 # capture output of dispatcher.log_info() (to stdout via print) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
284 fp = StringIO() |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
285 stdout = sys.stdout |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
286 try: |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
287 sys.stdout = fp |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
288 d.handle_expt() |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
289 d.handle_read() |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
290 d.handle_write() |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
291 d.handle_connect() |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
292 d.handle_accept() |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
293 finally: |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
294 sys.stdout = stdout |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
295 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
296 lines = fp.getvalue().splitlines() |
|
52630
e555fd8c4b6e
Fix for failing asyncore tests.
Josiah Carlson <josiah.carlson@gmail.com>
parents:
48967
diff
changeset
|
297 expected = ['warning: unhandled incoming priority event', |
|
47703
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
298 'warning: unhandled read event', |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
299 'warning: unhandled write event', |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
300 'warning: unhandled connect event', |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
301 'warning: unhandled accept event'] |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
302 self.assertEquals(lines, expected) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
303 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
304 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
305 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
306 class dispatcherwithsend_noread(asyncore.dispatcher_with_send): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
307 def readable(self): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
308 return False |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
309 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
310 def handle_connect(self): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
311 pass |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
312 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
313 class DispatcherWithSendTests(unittest.TestCase): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
314 usepoll = False |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
315 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
316 def setUp(self): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
317 pass |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
318 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
319 def tearDown(self): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
320 asyncore.close_all() |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
321 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
322 def test_send(self): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
323 self.evt = threading.Event() |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
324 self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
325 self.sock.settimeout(3) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
326 self.port = test_support.bind_port(self.sock) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
327 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
328 cap = StringIO() |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
329 args = (self.evt, cap, self.sock) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
330 threading.Thread(target=capture_server, args=args).start() |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
331 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
332 # wait a little longer for the server to initialize (it sometimes |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
333 # refuses connections on slow machines without this wait) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
334 time.sleep(0.2) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
335 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
336 data = "Suppose there isn't a 16-ton weight?" |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
337 d = dispatcherwithsend_noread() |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
338 d.create_socket(socket.AF_INET, socket.SOCK_STREAM) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
339 d.connect((HOST, self.port)) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
340 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
341 # give time for socket to connect |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
342 time.sleep(0.1) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
343 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
344 d.send(data) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
345 d.send(data) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
346 d.send('\n') |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
347 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
348 n = 1000 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
349 while d.out_buffer and n > 0: |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
350 asyncore.poll() |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
351 n -= 1 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
352 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
353 self.evt.wait() |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
354 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
355 self.assertEqual(cap.getvalue(), data*2) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
356 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
357 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
358 class DispatcherWithSendTests_UsePoll(DispatcherWithSendTests): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
359 usepoll = True |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
360 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
361 if hasattr(asyncore, 'file_wrapper'): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
362 class FileWrapperTest(unittest.TestCase): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
363 def setUp(self): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
364 self.d = "It's not dead, it's sleeping!" |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
365 file(TESTFN, 'w').write(self.d) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
366 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
367 def tearDown(self): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
368 unlink(TESTFN) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
369 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
370 def test_recv(self): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
371 fd = os.open(TESTFN, os.O_RDONLY) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
372 w = asyncore.file_wrapper(fd) |
|
48967
c7fd0e881c45
Issue #3759: test_asyncore.py leaked handle.
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents:
47935
diff
changeset
|
373 os.close(fd) |
|
47703
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
374 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
375 self.assertNotEqual(w.fd, fd) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
376 self.assertNotEqual(w.fileno(), fd) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
377 self.assertEqual(w.recv(13), "It's not dead") |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
378 self.assertEqual(w.read(6), ", it's") |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
379 w.close() |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
380 self.assertRaises(OSError, w.read, 1) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
381 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
382 def test_send(self): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
383 d1 = "Come again?" |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
384 d2 = "I want to buy some cheese." |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
385 fd = os.open(TESTFN, os.O_WRONLY | os.O_APPEND) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
386 w = asyncore.file_wrapper(fd) |
|
48967
c7fd0e881c45
Issue #3759: test_asyncore.py leaked handle.
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents:
47935
diff
changeset
|
387 os.close(fd) |
|
47703
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
388 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
389 w.write(d1) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
390 w.send(d2) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
391 w.close() |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
392 self.assertEqual(file(TESTFN).read(), self.d + d1 + d2) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
393 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
394 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
395 def test_main(): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
396 tests = [HelperFunctionTests, DispatcherTests, DispatcherWithSendTests, |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
397 DispatcherWithSendTests_UsePoll] |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
398 if hasattr(asyncore, 'file_wrapper'): |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
399 tests.append(FileWrapperTest) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
400 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
401 run_unittest(*tests) |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
402 |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
403 if __name__ == "__main__": |
|
f36f092dbe97
Run svneol.py on all sources.
Martin v. Löwis <martin@v.loewis.de>
parents:
47554
diff
changeset
|
404 test_main() |
