]> granicus.if.org Git - python/commitdiff
#9557: eliminate 3 seconds of static overhead from test_mailbox.
authorR David Murray <rdmurray@bitdance.com>
Fri, 25 Mar 2011 20:03:47 +0000 (16:03 -0400)
committerR David Murray <rdmurray@bitdance.com>
Fri, 25 Mar 2011 20:03:47 +0000 (16:03 -0400)
This patch doesn't quite fix the 'run in a VM with Samba share'
timing problem, but it should at least make it better.

Lib/test/test_mailbox.py

index 9a43f8843d9ec1a75489a1a0311ae910cbe66244..dd13c72e994af3d6f36b5fff59d0c6f4a5676b21 100644 (file)
@@ -741,8 +741,6 @@ class TestMaildir(TestMailbox):
         self.assertFalse((perms & 0o111)) # Execute bits should all be off.
 
     def test_reread(self):
-        # Wait for 2 seconds
-        time.sleep(2)
 
         # Initially, the mailbox has not been read and the time is null.
         assert getattr(self._box, '_last_read', None) is None
@@ -751,15 +749,21 @@ class TestMaildir(TestMailbox):
         self._box._refresh()
         assert getattr(self._box, '_last_read', None) is not None
 
-        # Try calling _refresh() again; the modification times shouldn't have
-        # changed, so the mailbox should not be re-reading.  Re-reading causes
-        # the ._toc attribute to be assigned a new dictionary object, so
-        # we'll check that the ._toc attribute isn't a different object.
+        # Put the last modified times more than one second into the past
+        # (because mtime has a one second granularity, a refresh is done
+        # unconditionally if called for within the same second, just in case
+        # the mbox has changed).
+        for subdir in ('cur', 'new'):
+            os.utime(os.path.join(self._box._path, subdir),
+                     (time.time()-5,)*2)
+
+        # Re-reading causes the ._toc attribute to be assigned a new dictionary
+        # object, so we'll check that the ._toc attribute isn't a different
+        # object.
         orig_toc = self._box._toc
         def refreshed():
             return self._box._toc is not orig_toc
 
-        time.sleep(1)         # Wait 1sec to ensure time.time()'s value changes
         self._box._refresh()
         assert not refreshed()