Merge branch 'release'

This commit is contained in:
David Bremner 2022-01-09 09:20:56 -04:00
commit 22e04ed01a
2 changed files with 50 additions and 2 deletions

View file

@ -371,14 +371,14 @@ class Message(base.NotmuchObject):
This method will only work if the message was created from a This method will only work if the message was created from a
thread. Otherwise it will yield no results. thread. Otherwise it will yield no results.
:returns: An iterator yielding :class:`Message` instances. :returns: An iterator yielding :class:`OwnedMessage` instances.
:rtype: MessageIter :rtype: MessageIter
""" """
# The notmuch_messages_valid call accepts NULL and this will # The notmuch_messages_valid call accepts NULL and this will
# become an empty iterator, raising StopIteration immediately. # become an empty iterator, raising StopIteration immediately.
# Hence no return value checking here. # Hence no return value checking here.
msgs_p = capi.lib.notmuch_message_get_replies(self._msg_p) msgs_p = capi.lib.notmuch_message_get_replies(self._msg_p)
return MessageIter(self, msgs_p, db=self._db) return MessageIter(self, msgs_p, db=self._db, msg_cls=OwnedMessage)
def __hash__(self): def __hash__(self):
return hash(self.messageid) return hash(self.messageid)

View file

@ -0,0 +1,48 @@
#!/usr/bin/env bash
test_description="python bindings (notmuch test suite)"
. $(dirname "$0")/test-lib.sh || exit 1
if [ $NOTMUCH_HAVE_PYTHON3_CFFI -eq 0 -o $NOTMUCH_HAVE_PYTHON3_PYTEST -eq 0 ]; then
test_done
fi
add_email_corpus
cat <<EOF > recurse.py
from notmuch2 import Database
def show_msgs(msgs, level):
print('{:s} {:s}'.format(' ' * level*4, type(msgs).__name__))
for msg in msgs:
print('{:s} {:s}'.format(' ' * (level*4+2), type(msg).__name__))
replies=msg.replies()
show_msgs(replies, level+1)
db = Database(config=Database.CONFIG.SEARCH)
msg=db.find("87ocn0qh6d.fsf@yoom.home.cworth.org")
threads = db.threads(query="thread:"+msg.threadid)
thread = next (threads)
show_msgs(thread, 0)
EOF
test_begin_subtest "recursive traversal of replies (no crash)"
test_python < recurse.py
error=$?
test_expect_equal "${error}" 0
test_begin_subtest "recursive traversal of replies (output)"
test_python < recurse.py
tail -n 10 < OUTPUT > OUTPUT.sample
cat <<EOF > EXPECTED
OwnedMessage
MessageIter
OwnedMessage
MessageIter
OwnedMessage
MessageIter
OwnedMessage
MessageIter
OwnedMessage
MessageIter
EOF
test_expect_equal_file EXPECTED OUTPUT.sample
test_done