diff options
| author | R. David Murray <rdmurray@bitdance.com> | 2009-04-15 23:00:41 (GMT) |
|---|---|---|
| committer | R. David Murray <rdmurray@bitdance.com> | 2009-04-15 23:00:41 (GMT) |
| commit | 7cd8f2bea39159c3a4ab4b4c71b98944519a559c (patch) | |
| tree | deb6d5638a7c29c8c00e00acc0cc38635693c3ce /Lib/test/test_asyncore.py | |
| parent | 0ec635138fc97e496407413878845fa5a7e37de4 (diff) | |
| download | cpython-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.py | 65 |
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', |
