mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-08-20 00:56:26 +00:00
See if this helps with intermittent mail test failure
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
import dataclasses
|
import dataclasses
|
||||||
import email.contentmanager
|
import email.contentmanager
|
||||||
import random
|
import random
|
||||||
|
import time
|
||||||
import uuid
|
import uuid
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
from contextlib import AbstractContextManager
|
from contextlib import AbstractContextManager
|
||||||
@@ -385,6 +386,20 @@ class MailMocker(DirectoriesMixin, FileSystemAssertsMixin, TestCase):
|
|||||||
apply_mail_action([], rule.pk, message.uid, message.subject, message.date)
|
apply_mail_action([], rule.pk, message.uid, message.subject, message.date)
|
||||||
|
|
||||||
|
|
||||||
|
def assert_eventually_equals(getter_fn, expected_value, timeout=1.0, interval=0.05):
|
||||||
|
"""
|
||||||
|
Repeatedly calls `getter_fn()` until the result equals `expected_value`,
|
||||||
|
or times out after `timeout` seconds.
|
||||||
|
"""
|
||||||
|
deadline = time.time() + timeout
|
||||||
|
while time.time() < deadline:
|
||||||
|
if getter_fn() == expected_value:
|
||||||
|
return
|
||||||
|
time.sleep(interval)
|
||||||
|
actual = getter_fn()
|
||||||
|
raise AssertionError(f"Expected {expected_value}, but got {actual}")
|
||||||
|
|
||||||
|
|
||||||
@mock.patch("paperless_mail.mail.magic.from_buffer", fake_magic_from_buffer)
|
@mock.patch("paperless_mail.mail.magic.from_buffer", fake_magic_from_buffer)
|
||||||
class TestMail(
|
class TestMail(
|
||||||
DirectoriesMixin,
|
DirectoriesMixin,
|
||||||
@@ -818,7 +833,7 @@ class TestMail(
|
|||||||
self.mail_account_handler.handle_mail_account(account)
|
self.mail_account_handler.handle_mail_account(account)
|
||||||
self.mailMocker.apply_mail_actions()
|
self.mailMocker.apply_mail_actions()
|
||||||
|
|
||||||
self.assertEqual(len(self.mailMocker.bogus_mailbox.messages), 1)
|
assert_eventually_equals(lambda: len(self.mailMocker.bogus_mailbox.messages), 1)
|
||||||
|
|
||||||
def test_handle_mail_account_delete_no_filters(self):
|
def test_handle_mail_account_delete_no_filters(self):
|
||||||
account = MailAccount.objects.create(
|
account = MailAccount.objects.create(
|
||||||
|
Reference in New Issue
Block a user