Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package maildir-utils for openSUSE:Factory checked in at 2022-08-08 11:42:59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/maildir-utils (Old) and /work/SRC/openSUSE:Factory/.maildir-utils.new.1521 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "maildir-utils" Mon Aug 8 11:42:59 2022 rev:34 rq:993675 version:1.8.8 Changes: -------- --- /work/SRC/openSUSE:Factory/maildir-utils/maildir-utils.changes 2022-07-26 19:44:47.708367848 +0200 +++ /work/SRC/openSUSE:Factory/.maildir-utils.new.1521/maildir-utils.changes 2022-08-08 11:43:01.902409912 +0200 @@ -1,0 +2,8 @@ +Mon Aug 8 06:56:00 UTC 2022 - Michael Vetter <mvet...@suse.com> + +- Update to 1.8.8: + * Update mu4e-action-add-org-contact for new contact format (#2306) + * Ensure non-nil works (rather than only t) in mu4e-server (#2310) + * Add some more unit tests for skipdups / related messages. + +------------------------------------------------------------------- Old: ---- mu-1.8.7.tar.xz New: ---- mu-1.8.8.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ maildir-utils.spec ++++++ --- /var/tmp/diff_new_pack.1jBWJs/_old 2022-08-08 11:43:02.342410508 +0200 +++ /var/tmp/diff_new_pack.1jBWJs/_new 2022-08-08 11:43:02.346410513 +0200 @@ -17,7 +17,7 @@ Name: maildir-utils -Version: 1.8.7 +Version: 1.8.8 Release: 0 Summary: Maildir indexer and searcher License: GPL-3.0-or-later ++++++ mu-1.8.7.tar.xz -> mu-1.8.8.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mu-1.8.7/configure.ac new/mu-1.8.8/configure.ac --- old/mu-1.8.7/configure.ac 2022-07-24 11:47:47.000000000 +0200 +++ new/mu-1.8.8/configure.ac 2022-08-07 11:02:50.000000000 +0200 @@ -15,7 +15,7 @@ ## Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. AC_PREREQ([2.68]) -AC_INIT([mu],[1.8.7],[https://github.com/djcb/mu/issues],[mu]) +AC_INIT([mu],[1.8.8],[https://github.com/djcb/mu/issues],[mu]) AC_COPYRIGHT([Copyright (C) 2008-2022 Dirk-Jan C. Binnema]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_SRCDIR([mu/mu.cc]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mu-1.8.7/lib/tests/test-mu-store-query.cc new/mu-1.8.8/lib/tests/test-mu-store-query.cc --- old/mu-1.8.7/lib/tests/test-mu-store-query.cc 2022-07-24 11:47:47.000000000 +0200 +++ new/mu-1.8.8/lib/tests/test-mu-store-query.cc 2022-08-07 11:02:50.000000000 +0200 @@ -17,6 +17,7 @@ ** */ +#include "test-mu-common.hh" #include <array> #include <thread> #include <string> @@ -209,6 +210,131 @@ } } + +static void +test_dups_related() +{ + const TestMap test_msgs = {{ +/* parent */ +{ +"inbox/cur/msg1:2,S", +R"(Message-Id: <ab...@foo.bar> +From: "Foo Example" <b...@example.com> +Date: Sat, 06 Aug 2022 11:01:54 -0700 +To: exam...@example.com +Subject: test1 + +Parent +)"}, +/* child (dup vv) */ +{ +"boo/cur/msg2:1,S", +R"(Message-Id: <ed...@foo.bar> +In-Reply-To: <ab...@foo.bar> +From: "Foo Example" <b...@example.com> +Date: Sat, 06 Aug 2022 13:01:54 -0700 +To: exam...@example.com +Subject: Re: test1 + +Child +)"}, +/* child (dup ^^) */ +{ +"inbox/cur/msg2:1,S", +R"(Message-Id: <ed...@foo.bar> +In-Reply-To: <ab...@foo.bar> +From: "Foo Example" <b...@example.com> +Date: Sat, 06 Aug 2022 14:01:54 -0700 +To: exam...@example.com +Subject: Re: test1 + +Child +)"}, +}}; + TempDir tdir; + auto store{make_test_store(tdir.path(), test_msgs, {})}; + { + // direct matches + auto qr = store.run_query("test1", Field::Id::Date, + QueryFlags::None); + g_assert_true(!!qr); + g_assert_false(qr->empty()); + g_assert_cmpuint(qr->size(), ==, 3); + } + + { + // skip duplicate messages; which one is skipped is arbitrary. + auto qr = store.run_query("test1", Field::Id::Date, + QueryFlags::SkipDuplicates); + g_assert_true(!!qr); + g_assert_false(qr->empty()); + g_assert_cmpuint(qr->size(), ==, 2); + } + + { + // no related + auto qr = store.run_query("Parent", Field::Id::Date); + g_assert_true(!!qr); + g_assert_false(qr->empty()); + g_assert_cmpuint(qr->size(), ==, 1); + } + + { + // find related messages + auto qr = store.run_query("Parent", Field::Id::Date, + QueryFlags::IncludeRelated); + g_assert_true(!!qr); + g_assert_false(qr->empty()); + g_assert_cmpuint(qr->size(), ==, 3); + } + + { + // find related messages, skip dups. the leader message + // should _not_ be skipped. + auto qr = store.run_query("test1 AND maildir:/inbox", + Field::Id::Date, + QueryFlags::IncludeRelated| + QueryFlags::SkipDuplicates); + g_assert_true(!!qr); + g_assert_false(qr->empty()); + g_assert_cmpuint(qr->size(), ==, 2); + + // ie the /boo is to be skipped, since it's not in the leader + // set. + for (auto&& m: *qr) + assert_equal(m.message()->maildir(), "/inbox"); + } + + { + // find related messages, find parent from child. + auto qr = store.run_query("Child and maildir:/inbox", + Field::Id::Date, + QueryFlags::IncludeRelated); + g_assert_true(!!qr); + g_assert_false(qr->empty()); + g_assert_cmpuint(qr->size(), ==, 3); + + } + + { + // find related messages, find parent from child. + // leader message wins + auto qr = store.run_query("Child and maildir:/inbox", + Field::Id::Date, + QueryFlags::IncludeRelated| + QueryFlags::SkipDuplicates| + QueryFlags::Descending); + g_assert_true(!!qr); + g_assert_false(qr->empty()); + g_assert_cmpuint(qr->size(), ==, 2); + + // ie the /boo is to be skipped, since it's not in the leader + // set. + for (auto&& m: *qr) + assert_equal(m.message()->maildir(), "/inbox"); + } +} + int main(int argc, char* argv[]) { @@ -219,6 +345,15 @@ g_test_add_func("/store/query/simple", test_simple); g_test_add_func("/store/query/spam-address-components", test_spam_address_components); + g_test_add_func("/store/query/dups-related", + test_dups_related); + + if (!g_test_verbose()) + g_log_set_handler( + NULL, + (GLogLevelFlags)(G_LOG_LEVEL_MASK | + G_LOG_FLAG_FATAL | G_LOG_FLAG_RECURSION), + (GLogFunc)black_hole, NULL); return g_test_run(); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mu-1.8.7/meson.build new/mu-1.8.8/meson.build --- old/mu-1.8.7/meson.build 2022-07-24 11:47:47.000000000 +0200 +++ new/mu-1.8.8/meson.build 2022-08-07 11:02:50.000000000 +0200 @@ -18,7 +18,7 @@ # project setup # project('mu', ['c', 'cpp'], - version: '1.8.7', + version: '1.8.8', meson_version: '>= 0.52.0', # debian 10 license: 'GPL-3.0-or-later', default_options : [ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mu-1.8.7/mu4e/mu4e-actions.el new/mu-1.8.8/mu4e/mu4e-actions.el --- old/mu-1.8.7/mu4e/mu4e-actions.el 2022-07-24 11:47:47.000000000 +0200 +++ new/mu-1.8.8/mu4e/mu4e-actions.el 2022-08-07 11:02:50.000000000 +0200 @@ -32,7 +32,7 @@ (require 'mu4e-helpers) (require 'mu4e-message) (require 'mu4e-search) - +(require 'mu4e-contacts) ;;; Count lines @@ -78,7 +78,8 @@ (unless mu4e-org-contacts-file (mu4e-error "Variable `mu4e-org-contacts-file' is nil")) (let* ((sender (car-safe (mu4e-message-field msg :from))) - (name (car-safe sender)) (email (cdr-safe sender)) + (name (mu4e-contact-name sender)) + (email (mu4e-contact-email sender)) (blurb (format (concat @@ -95,7 +96,6 @@ (append org-capture-templates (list (list key "contacts" 'entry (list 'file mu4e-org-contacts-file) blurb))))) - (message "%S" org-capture-templates) (when (fboundp 'org-capture) (org-capture nil key)))) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mu-1.8.7/mu4e/mu4e-server.el new/mu-1.8.8/mu4e/mu4e-server.el --- old/mu-1.8.7/mu4e/mu4e-server.el 2022-07-24 11:47:47.000000000 +0200 +++ new/mu-1.8.8/mu4e/mu4e-server.el 2022-08-07 11:02:50.000000000 +0200 @@ -491,16 +491,26 @@ (mu4e--server-call-mu `(find :query ,query - :threads ,threads + :threads ,(and threads t) :sortfield ,sortfield :descending ,(if (eq sortdir 'descending) t nil) :maxnum ,maxnum - :skip-dups ,skip-dups - :include-related ,include-related))) + :skip-dups ,(and skip-dups t) + :include-related ,(and include-related t)))) (defun mu4e--server-index (&optional cleanup lazy-check) - "Index messages with possible CLEANUP and LAZY-CHECK." - (mu4e--server-call-mu `(index :cleanup ,cleanup :lazy-check ,lazy-check))) + "Index messages. +If CLEANUP is non-nil, remove messages which are in the database +but no longer in the filesystem. If LAZY-CHECK is non-nil, only +consider messages for which the time stamp (ctime) of the +directory they reside in has not changed since the previous +indexing run. This is much faster than the non-lazy check, but +won't update messages that have change (rather than having been +added or removed), since merely editing a message does not update +the directory time stamp." + (mu4e--server-call-mu + `(index :cleanup ,(and cleanup t) + :lazy-check ,(and lazy-check t)))) (defun mu4e--server-mkdir (path) "Create a new maildir-directory at filesystem PATH." @@ -573,19 +583,19 @@ (mu4e--server-call-mu `(sent :path ,path))) (defun mu4e--server-view (docid-or-msgid &optional mark-as-read) - "Get a message DOCID-OR-MSGID. + "View a message referred to by DOCID-OR-MSGID. Optionally, if MARK-AS-READ is non-nil, the backend marks the -message as read before returning, if it was not already unread. -The result will be delivered to the function registered as -`mu4e-view-func'." +message as \"read\" before returning, if not already. The result +will be delivered to the function registered as `mu4e-view-func'." (mu4e--server-call-mu `(view :docid ,(if (stringp docid-or-msgid) nil docid-or-msgid) :msgid ,(if (stringp docid-or-msgid) docid-or-msgid nil) - :mark-as-read ,mark-as-read + :mark-as-read ,(and mark-as-read t) ;; when moving (due to mark-as-read), change filenames - ;; if so configured. - :rename ,mu4e-change-filenames-when-moving))) + ;; if so configured. Note: currently this *ignored* + ;; because mbsync seems to get confused. + :rename ,(and mu4e-change-filenames-when-moving t)))) (provide 'mu4e-server)