summaryrefslogtreecommitdiff
path: root/Lib/test/test_mailbox.py
diff options
context:
space:
mode:
authorAndrew M. Kuchling <amk@amk.ca>2009-05-03 02:52:20 +0000
committerAndrew M. Kuchling <amk@amk.ca>2009-05-03 02:52:20 +0000
commit989fb717f86446aaab8a6145dfc444b0c2b9a06b (patch)
treeb005bdeccea684d1db6a276f03cb7b75810d8f87 /Lib/test/test_mailbox.py
parentf6108cdeeb2185a1110e6e2cbfd4dbae37607311 (diff)
downloadcpython-989fb717f86446aaab8a6145dfc444b0c2b9a06b.tar.gz
Merged revisions 72213 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r72213 | andrew.kuchling | 2009-05-02 15:17:28 -0400 (Sat, 02 May 2009) | 3 lines #1607951: Make mailbox.Maildir re-read the directories less frequently. This is done by recording the current time -1sec, and not re-reading unless the directory mod. times are >= the recorded time. ........
Diffstat (limited to 'Lib/test/test_mailbox.py')
-rw-r--r--Lib/test/test_mailbox.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/Lib/test/test_mailbox.py b/Lib/test/test_mailbox.py
index 28b9322169..655b639115 100644
--- a/Lib/test/test_mailbox.py
+++ b/Lib/test/test_mailbox.py
@@ -740,6 +740,37 @@ class TestMaildir(TestMailbox):
perms = st.st_mode
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
+
+ # Refresh mailbox; the times should now be set to something.
+ 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.
+ 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()
+
+ # Now, write something into cur and remove it. This changes
+ # the mtime and should cause a re-read.
+ filename = os.path.join(self._path, 'cur', 'stray-file')
+ f = open(filename, 'w')
+ f.close()
+ os.unlink(filename)
+ self._box._refresh()
+ assert refreshed()
class _TestMboxMMDF(TestMailbox):