summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_asyncore.py
diff options
context:
space:
mode:
authorR. David Murray <rdmurray@bitdance.com>2009-04-15 23:00:41 (GMT)
committerR. David Murray <rdmurray@bitdance.com>2009-04-15 23:00:41 (GMT)
commit7cd8f2bea39159c3a4ab4b4c71b98944519a559c (patch)
treedeb6d5638a7c29c8c00e00acc0cc38635693c3ce /Lib/test/test_asyncore.py
parent0ec635138fc97e496407413878845fa5a7e37de4 (diff)
downloadcpython-7cd8f2bea39159c3a4ab4b4c71b98944519a559c.zip
cpython-7cd8f2bea39159c3a4ab4b4c71b98944519a559c.tar.gz
cpython-7cd8f2bea39159c3a4ab4b4c71b98944519a559c.tar.bz2
Merged revisions 70873,70904,70934,71490,71553,71579 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r70873 | josiah.carlson | 2009-03-31 15:32:34 -0400 (Tue, 31 Mar 2009) | 2 lines This resolves issue 1161031. Tests pass. ........ r70904 | josiah.carlson | 2009-03-31 17:49:36 -0400 (Tue, 31 Mar 2009) | 3 lines Made handle_expt_event() be called last, so that we don't accidentally read after closing the socket. ........ r70934 | josiah.carlson | 2009-03-31 21:28:11 -0400 (Tue, 31 Mar 2009) | 2 lines Fix for failing asyncore tests. ........ r71490 | r.david.murray | 2009-04-11 13:52:56 -0400 (Sat, 11 Apr 2009) | 4 lines Make test_asyncore tests match code changes introduced by the fix to Issue1161031, refactoring the test to simplify it in the process. ........ r71553 | r.david.murray | 2009-04-12 21:06:46 -0400 (Sun, 12 Apr 2009) | 3 lines Adjust test_asyncore to account for intentional asyncore behavior change introduced by r70934 that was causing a test failure when run under -O. ........ r71579 | r.david.murray | 2009-04-13 12:56:32 -0400 (Mon, 13 Apr 2009) | 2 lines Add missing NEWS item for issue1161031 fix. ........
Diffstat (limited to 'Lib/test/test_asyncore.py')
-rw-r--r--Lib/test/test_asyncore.py65
1 files changed, 23 insertions, 42 deletions
diff --git a/Lib/test/test_asyncore.py b/Lib/test/test_asyncore.py
index 72de850..ce835aa 100644
--- a/Lib/test/test_asyncore.py
+++ b/Lib/test/test_asyncore.py
@@ -115,12 +115,24 @@ class HelperFunctionTests(unittest.TestCase):
def test_readwrite(self):
# Check that correct methods are called by readwrite()
+ attributes = ('read', 'expt', 'write', 'closed', 'error_handled')
+
+ expected = (
+ (select.POLLIN, 'read'),
+ (select.POLLPRI, 'expt'),
+ (select.POLLOUT, 'write'),
+ (select.POLLERR, 'closed'),
+ (select.POLLHUP, 'closed'),
+ (select.POLLNVAL, 'closed'),
+ )
+
class testobj:
def __init__(self):
self.read = False
self.write = False
self.closed = False
self.expt = False
+ self.error_handled = False
def handle_read_event(self):
self.read = True
@@ -137,54 +149,25 @@ class HelperFunctionTests(unittest.TestCase):
def handle_error(self):
self.error_handled = True
- for flag in (select.POLLIN, select.POLLPRI):
+ for flag, expectedattr in expected:
tobj = testobj()
- self.assertEqual(tobj.read, False)
+ self.assertEqual(getattr(tobj, expectedattr), False)
asyncore.readwrite(tobj, flag)
- self.assertEqual(tobj.read, True)
-
- # check that ExitNow exceptions in the object handler method
- # bubbles all the way up through asyncore readwrite call
- tr1 = exitingdummy()
- self.assertRaises(asyncore.ExitNow, asyncore.readwrite, tr1, flag)
-
- # check that an exception other than ExitNow in the object handler
- # method causes the handle_error method to get called
- tr2 = crashingdummy()
- asyncore.readwrite(tr2, flag)
- self.assertEqual(tr2.error_handled, True)
-
- tobj = testobj()
- self.assertEqual(tobj.write, False)
- asyncore.readwrite(tobj, select.POLLOUT)
- self.assertEqual(tobj.write, True)
-
- # check that ExitNow exceptions in the object handler method
- # bubbles all the way up through asyncore readwrite call
- tr1 = exitingdummy()
- self.assertRaises(asyncore.ExitNow, asyncore.readwrite, tr1,
- select.POLLOUT)
- # check that an exception other than ExitNow in the object handler
- # method causes the handle_error method to get called
- tr2 = crashingdummy()
- asyncore.readwrite(tr2, select.POLLOUT)
- self.assertEqual(tr2.error_handled, True)
-
- for flag in (select.POLLERR, select.POLLHUP, select.POLLNVAL):
- tobj = testobj()
- self.assertEqual((tobj.expt, tobj.closed)[flag == select.POLLHUP], False)
- asyncore.readwrite(tobj, flag)
- self.assertEqual((tobj.expt, tobj.closed)[flag == select.POLLHUP], True)
+ # Only the attribute modified by the routine we expect to be
+ # called should be True.
+ for attr in attributes:
+ self.assertEqual(getattr(tobj, attr), attr==expectedattr)
# check that ExitNow exceptions in the object handler method
- # bubbles all the way up through asyncore readwrite calls
+ # bubbles all the way up through asyncore readwrite call
tr1 = exitingdummy()
self.assertRaises(asyncore.ExitNow, asyncore.readwrite, tr1, flag)
# check that an exception other than ExitNow in the object handler
# method causes the handle_error method to get called
tr2 = crashingdummy()
+ self.assertEqual(tr2.error_handled, False)
asyncore.readwrite(tr2, flag)
self.assertEqual(tr2.error_handled, True)
@@ -289,15 +272,13 @@ class DispatcherTests(unittest.TestCase):
sys.stdout = stdout
lines = fp.getvalue().splitlines()
- if __debug__:
- expected = ['EGGS: %s' % l1, 'info: %s' % l2, 'SPAM: %s' % l3]
- else:
- expected = ['EGGS: %s' % l1, 'SPAM: %s' % l3]
+ expected = ['EGGS: %s' % l1, 'info: %s' % l2, 'SPAM: %s' % l3]
self.assertEquals(lines, expected)
def test_unhandled(self):
d = asyncore.dispatcher()
+ d.ignore_log_types = ()
# capture output of dispatcher.log_info() (to stdout via print)
fp = StringIO()
@@ -313,7 +294,7 @@ class DispatcherTests(unittest.TestCase):
sys.stdout = stdout
lines = fp.getvalue().splitlines()
- expected = ['warning: unhandled exception',
+ expected = ['warning: unhandled incoming priority event',
'warning: unhandled read event',
'warning: unhandled write event',
'warning: unhandled connect event',