]> git.ipfire.org Git - thirdparty/tornado.git/commitdiff
Fixed: Subsequent calls to AsyncTestCase.wait() now clear previously set timeouts. 460/head
authorRoey Berman <roey.berman@gmail.com>
Mon, 13 Feb 2012 13:23:24 +0000 (15:23 +0200)
committerRoey Berman <roey.berman@gmail.com>
Mon, 13 Feb 2012 13:26:06 +0000 (15:26 +0200)
See: http://groups.google.com/group/python-tornado/browse_thread/thread/cc77a08b15c39a14

tornado/test/testing_test.py
tornado/testing.py

index f445ce5cdbf09977c4c2561ddd42f2688ad79a4c..e7d6a7392f93df347e832d09b1c121788420c065 100644 (file)
@@ -2,6 +2,7 @@
 
 from __future__ import absolute_import, division, with_statement
 import unittest
+import time
 from tornado.testing import AsyncTestCase, LogTrapTestCase
 
 
@@ -14,6 +15,15 @@ class AsyncTestCaseTest(AsyncTestCase, LogTrapTestCase):
         except ZeroDivisionError:
             pass
 
+    def test_subsequent_wait_calls(self):
+        """
+        This test makes sure that a second call to wait()
+        clears the first timeout.
+        """
+        self.io_loop.add_timeout(time.time() + 0.001, self.stop)
+        self.wait(timeout = 0.002)
+        self.io_loop.add_timeout(time.time() + 0.003, self.stop)
+        self.wait(timeout = 0.01)
 
 class SetUpTearDownTest(unittest.TestCase):
     def test_set_up_tear_down(self):
index 87448a4d0a1d31b5fdb4dcdbdffeee8b3aa1ccd8..2905d91d47f6d590c5d6c39747ad086ad9e95995 100644 (file)
@@ -107,6 +107,7 @@ class AsyncTestCase(unittest.TestCase):
         self.__running = False
         self.__failure = None
         self.__stop_args = None
+        self.__timeout = None
 
     def setUp(self):
         super(AsyncTestCase, self).setUp()
@@ -173,7 +174,9 @@ class AsyncTestCase(unittest.TestCase):
                     except Exception:
                         self.__failure = sys.exc_info()
                     self.stop()
-                self.io_loop.add_timeout(time.time() + timeout, timeout_func)
+                if self.__timeout is not None:
+                    self.io_loop.remove_timeout(self.__timeout)
+                self.__timeout = self.io_loop.add_timeout(time.time() + timeout, timeout_func)
             while True:
                 self.__running = True
                 with NullContext():