mirror of
https://github.com/python/cpython.git
synced 2025-09-27 02:39:58 +00:00
#15036: Make a repeated changes and flushes work with single-file mailboxes
This commit is contained in:
commit
a717d563d0
3 changed files with 16 additions and 0 deletions
|
@ -675,6 +675,7 @@ class _singlefileMailbox(Mailbox):
|
||||||
new_file.write(buffer)
|
new_file.write(buffer)
|
||||||
new_toc[key] = (new_start, new_file.tell())
|
new_toc[key] = (new_start, new_file.tell())
|
||||||
self._post_message_hook(new_file)
|
self._post_message_hook(new_file)
|
||||||
|
self._file_length = new_file.tell()
|
||||||
except:
|
except:
|
||||||
new_file.close()
|
new_file.close()
|
||||||
os.remove(new_file.name)
|
os.remove(new_file.name)
|
||||||
|
|
|
@ -504,6 +504,17 @@ class TestMailbox(TestBase):
|
||||||
# Write changes to disk
|
# Write changes to disk
|
||||||
self._test_flush_or_close(self._box.flush, True)
|
self._test_flush_or_close(self._box.flush, True)
|
||||||
|
|
||||||
|
def test_popitem_and_flush_twice(self):
|
||||||
|
# See #15036.
|
||||||
|
self._box.add(self._template % 0)
|
||||||
|
self._box.add(self._template % 1)
|
||||||
|
self._box.flush()
|
||||||
|
|
||||||
|
self._box.popitem()
|
||||||
|
self._box.flush()
|
||||||
|
self._box.popitem()
|
||||||
|
self._box.flush()
|
||||||
|
|
||||||
def test_lock_unlock(self):
|
def test_lock_unlock(self):
|
||||||
# Lock and unlock the mailbox
|
# Lock and unlock the mailbox
|
||||||
self.assertFalse(os.path.exists(self._get_lock_path()))
|
self.assertFalse(os.path.exists(self._get_lock_path()))
|
||||||
|
|
|
@ -21,6 +21,10 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #15036: Allow removing or changing multiple items in
|
||||||
|
single-file mailboxes (mbox, MMDF, Babyl) flushing the mailbox
|
||||||
|
between the changes.
|
||||||
|
|
||||||
- Issue #14059: Implement multiprocessing.Barrier.
|
- Issue #14059: Implement multiprocessing.Barrier.
|
||||||
|
|
||||||
- Issue #15061: The inappropriately named hmac.secure_compare has been
|
- Issue #15061: The inappropriately named hmac.secure_compare has been
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue