diff options
author | Petri Lehtinen <petri@digip.org> | 2011-11-05 07:44:59 (GMT) |
---|---|---|
committer | Petri Lehtinen <petri@digip.org> | 2011-11-05 07:44:59 (GMT) |
commit | 8c482ee95564f04df01fc856f313ff8c98846718 (patch) | |
tree | 8e8286ac9035b81f6a957b28b6ea331b66147e07 /Lib/test/test_mailbox.py | |
parent | 97c1bef6a4f3c522826386480c62ec27fe46301d (diff) | |
download | cpython-8c482ee95564f04df01fc856f313ff8c98846718.zip cpython-8c482ee95564f04df01fc856f313ff8c98846718.tar.gz cpython-8c482ee95564f04df01fc856f313ff8c98846718.tar.bz2 |
Fix Maildir initialization so that maildir contents are read correctly.
Closes #13254.
Diffstat (limited to 'Lib/test/test_mailbox.py')
-rw-r--r-- | Lib/test/test_mailbox.py | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/Lib/test/test_mailbox.py b/Lib/test/test_mailbox.py index fb4812d..e0d8da2 100644 --- a/Lib/test/test_mailbox.py +++ b/Lib/test/test_mailbox.py @@ -801,6 +801,25 @@ class TestMaildir(TestMailbox): key1: os.path.join('new', key1), key2: os.path.join('new', key2)}) + def test_refresh_after_safety_period(self): + # Issue #13254: Call _refresh after the "file system safety + # period" of 2 seconds has passed; _toc should still be + # updated because this is the first call to _refresh. + key0 = self._box.add(self._template % 0) + key1 = self._box.add(self._template % 1) + + self._box = self._factory(self._path) + self.assertEqual(self._box._toc, {}) + + # Emulate sleeping. Instead of sleeping for 2 seconds, use the + # skew factor to make _refresh think that the filesystem + # safety period has passed and re-reading the _toc is only + # required if mtimes differ. + self._box._skewfactor = -2 + + self._box._refresh() + self.assertEqual(sorted(self._box._toc.keys()), sorted([key0, key1])) + def test_lookup(self): # Look up message subpaths in the TOC self.assertRaises(KeyError, lambda: self._box._lookup('foo')) @@ -876,6 +895,8 @@ class TestMaildir(TestMailbox): self.assertFalse((perms & 0o111)) # Execute bits should all be off. def test_reread(self): + # Do an initial unconditional refresh + self._box._refresh() # Put the last modified times more than two seconds into the past # (because mtime may have a two second granularity) |