diff --git a/python/src/deltachat/account.py b/python/src/deltachat/account.py index fab388ce3..e1501a5f5 100644 --- a/python/src/deltachat/account.py +++ b/python/src/deltachat/account.py @@ -574,11 +574,11 @@ class EventLogger: else: assert not rex.match(ev[0]), "event found {}".format(ev) - def get_matching(self, event_name_regex, check_error=True): + def get_matching(self, event_name_regex, check_error=True, timeout=None): self._log("-- waiting for event with regex: {} --".format(event_name_regex)) rex = re.compile("(?:{}).*".format(event_name_regex)) while 1: - ev = self.get() + ev = self.get(timeout=timeout, check_error=check_error) if rex.match(ev[0]): return ev diff --git a/python/tests/test_account.py b/python/tests/test_account.py index aa48397ec..af9750c3e 100644 --- a/python/tests/test_account.py +++ b/python/tests/test_account.py @@ -1,6 +1,7 @@ from __future__ import print_function import pytest import os +import queue from deltachat import const, Account from deltachat.message import Message from datetime import datetime, timedelta @@ -475,6 +476,14 @@ class TestOnlineAccount: lp.step("2") assert msg_out.is_out_mdn_received() + lp.sec("check that a second call to mark_seen does not create change or smtp job") + ac2._evlogger.consume_events() + ac2.mark_seen_messages([msg_in]) + try: + ac2._evlogger.get_matching("DC_EVENT_MSG_READ", timeout=0.01) + except queue.Empty: + pass # mark_seen_messages() has generated events before it returns + def test_send_and_receive_will_encrypt_decrypt(self, acfactory, lp): ac1, ac2 = acfactory.get_two_online_accounts()