Still more work on tests.

Basically Cyrus is completely fine on 64-bit little-endian machines.
"make check" fails on big-endian machines.  The Cassandane tests fail on
32-bit machines.

Some of the Cassandane tests are known to be due to bugs in the tests
suite; Fedora's 32-bit Perl does not support 64-bit types ("Q" and "q")
in pack and unpack.  This is being fixed in rawhide on our side, but it
won't be a complete solution because there are some failures elsewhere
in the test suite.

Fedora is the first to fully integrate Cassandane into the build
process, and we appear to be the only ones to do testing on big-endian
and 32-bit machines.  So there's a bit of teething still to get through.

I still do intend to try and push this to F26 as upstream has requested.
This commit is contained in:
Jason Tibbitts 2017-05-30 14:22:54 -05:00
parent c43a3db86d
commit 1c7b0e8083
4 changed files with 56 additions and 4 deletions

1
.gitignore vendored
View File

@ -7,3 +7,4 @@
/cassandane-testdata-20170523.tar.gz /cassandane-testdata-20170523.tar.gz
/cassandane-b97ba9c.tar.gz /cassandane-b97ba9c.tar.gz
/cassandane-0a6c13e.tar.gz /cassandane-0a6c13e.tar.gz
/cassandane-2f8f3f4.tar.gz

View File

@ -1,7 +1,8 @@
%define scmt(l:) %(c=%1; echo ${c:0:%{-l:%{-l*}}%{!-l:7}}) %define scmt(l:) %(c=%1; echo ${c:0:%{-l:%{-l*}}%{!-l:7}})
# Cassandane doesn't have releases often. This was fetched on 20170525. # Cassandane doesn't have releases often, but it receives constant development.
%global cmt1 0a6c13e83813d4bb1ed4ee36ec7298c56db1b99b # This was fetched on 20170530.
%global cmt1 2f8f3f4949e58bf20362c3cd8b1720f49002660d
# Cassandane run by default. '--without cassandane' disables. # Cassandane run by default. '--without cassandane' disables.
%bcond_without cassandane %bcond_without cassandane
@ -26,6 +27,7 @@ URL: http://www.cyrusimap.org/
Source0: http://www.cyrusimap.org/releases/%name-%version.tar.gz Source0: http://www.cyrusimap.org/releases/%name-%version.tar.gz
Patch0: patch-cyrus-testsuite-endianness Patch0: patch-cyrus-testsuite-endianness
Patch1: patch-cyrus-testsuite-endianness2
Source10: cyrus-imapd.logrotate Source10: cyrus-imapd.logrotate
Source11: cyrus-imapd.pam-config Source11: cyrus-imapd.pam-config
@ -411,29 +413,58 @@ gcc -fPIC -shared -Wl,-soname,-libredirectsyslog.so.0 -ldl -o libredirectsyslog.
export LD_LIBRARY_PATH=%buildroot/%_libdir export LD_LIBRARY_PATH=%buildroot/%_libdir
export CYRUS_USER=$USER export CYRUS_USER=$USER
# These are all the tests I have managed to make work at this time. # Most Cassandane tests pass, but using snapshots includes new tests which
# aren't supposed to pass on released versions of cyrus. So we have a big
# exclusion list.
# Note that Cassandane::Test::Core must always be excluded; it can't possibly # Note that Cassandane::Test::Core must always be excluded; it can't possibly
# work. The others are expected on 3.0.1 and should be removed and re-checked # work. The others are expected on 3.0.1 and should be removed and re-checked
# at each release. # at each release.
#!JMAPCalendars.creationids \
# Add -vvv for too much output # Add -vvv for too much output
./testrunner.pl %{?_smp_mflags} -f pretty \ ./testrunner.pl %{?_smp_mflags} -f pretty \
!Cassandane::Test::Core \ !Cassandane::Test::Core \
!Admin.imap_admins \ !Admin.imap_admins \
!Fetch.fetch_flags_before_exists \ !Fetch.fetch_flags_before_exists \
\
!JMAPCalendars.creationids \
!JMAPCalendars.getcalendareventlist \
!JMAPCalendars.getcalendareventlist_date \
!JMAPCalendars.getcalendareventlist_datetime \
!JMAPCalendars.getcalendareventlist_text \
!JMAPCalendars.getcalendarevents_privacy \
!JMAPCalendars.getcalendarevents_properties \ !JMAPCalendars.getcalendarevents_properties \
!JMAPCalendars.getcalendarevents_relatedto \ !JMAPCalendars.getcalendarevents_relatedto \
!JMAPCalendars.getcalendarevents_simple \ !JMAPCalendars.getcalendarevents_simple \
!JMAPCalendars.getcalendareventupdates \
\
!JMAPCalendars.setcalendarevents_alerts \ !JMAPCalendars.setcalendarevents_alerts \
!JMAPCalendars.setcalendarevents_caldav \
!JMAPCalendars.setcalendarevents_endtimezone \
!JMAPCalendars.setcalendarevents_endtimezone_recurrence \
!JMAPCalendars.setcalendarevents_isallday \
!JMAPCalendars.setcalendarevents_links \
!JMAPCalendars.setcalendarevents_localizations \
!JMAPCalendars.setcalendarevents_locations \ !JMAPCalendars.setcalendarevents_locations \
!JMAPCalendars.setcalendarevents_move \
!JMAPCalendars.setcalendarevents_participantid \
!JMAPCalendars.setcalendarevents_participants \ !JMAPCalendars.setcalendarevents_participants \
!JMAPCalendars.setcalendarevents_prodid \
!JMAPCalendars.setcalendarevents_recurrenceoverrides \ !JMAPCalendars.setcalendarevents_recurrenceoverrides \
!JMAPCalendars.setcalendarevents_relatedto \ !JMAPCalendars.setcalendarevents_relatedto \
!JMAPCalendars.setcalendarevents_recurrence \
!JMAPCalendars.setcalendarevents_schedule_cancel \
!JMAPCalendars.setcalendarevents_schedule_reply \
!JMAPCalendars.setcalendarevents_schedule_request \
!JMAPCalendars.setcalendarevents_simple \
\
!JMAPMail.getmessagelist_attachments \ !JMAPMail.getmessagelist_attachments \
!JMAPMail.getmessagelist_window \ !JMAPMail.getmessagelist_window \
!JMAPMail.getmessages_body_nontext \ !JMAPMail.getmessages_body_nontext \
!JMAPMail.getmessages_attachment_name \ !JMAPMail.getmessages_attachment_name \
!JMAPMail.setmailboxes_destroy_empty \ !JMAPMail.setmailboxes_destroy_empty \
!JMAPMail.setmessages_attachments \
\
!Quota.num_folders_rename \ !Quota.num_folders_rename \
!SearchFuzzy.cjk_words \ !SearchFuzzy.cjk_words \
!SearchFuzzy.xattachmentname \ !SearchFuzzy.xattachmentname \

View File

@ -0,0 +1,20 @@
diff --git a/imap/conversations.c b/imap/conversations.c
index 504c5db..2b151dc 100644
--- a/imap/conversations.c
+++ b/imap/conversations.c
@@ -560,11 +560,14 @@ EXPORTED int conversations_get_msgid(struct conversations_state *state,
&data, &datalen,
&state->txn);
+ if (r == CYRUSDB_NOTFOUND)
+ return 0; /* not an error, but nothing more to do */
+
if (!r) r = _conversations_parse(data, datalen, cids, NULL);
if (r) arrayu64_truncate(cids, 0);
- return 0;
+ return r;
}
/*

View File

@ -1,3 +1,3 @@
SHA512 (cassandane-0a6c13e.tar.gz) = fa37cd3fd7f32bbfb4af8ec48da0a48b8bce7f4d0135cb5361559464285ea18ff815ec812ba3be037c054a80513c3150af6943d90b60e6aff2d75060ade4d321
SHA512 (cassandane-testdata-20170523.tar.gz) = 705f5af6a31fe3b8d6e8027bbddbedb2f64d65997f8a06620ec07fcd30a95d98ac3f3fbef7af5080684ee21be1c5b8bcad2374b2749f0571099e780355a04420 SHA512 (cassandane-testdata-20170523.tar.gz) = 705f5af6a31fe3b8d6e8027bbddbedb2f64d65997f8a06620ec07fcd30a95d98ac3f3fbef7af5080684ee21be1c5b8bcad2374b2749f0571099e780355a04420
SHA512 (cyrus-imapd-3.0.1.tar.gz) = 0a2bf13b4793e642f3df53231fd66774e0c5ad753b436a7fb0645db6ee70121d0da245038527cc58cb078255fec3e7b32a6230c196cceea040f74813ef78e337 SHA512 (cyrus-imapd-3.0.1.tar.gz) = 0a2bf13b4793e642f3df53231fd66774e0c5ad753b436a7fb0645db6ee70121d0da245038527cc58cb078255fec3e7b32a6230c196cceea040f74813ef78e337
SHA512 (cassandane-2f8f3f4.tar.gz) = b949155b85e30a9cabd5992806fafe78a462662297398e8a74856f345c063769e5e419d01777e08c1f326622244181667ead47a057e38b1974ec121e7913a955