Am Fr., 24. Nov. 2023 um 14:57 Uhr schrieb David Bremner <david@tethera.net>:
Michael J Gruber <michaeljgruber+grubix+git@gmail.com> writes:

> Hi there,
>
> during my first tests for Python 3.13 (hooray...) I noticed that some tests
> in T610 started to fail independent of that. It seems that with notmuch
> 0.38.1 on current Fedora rawhide,  `notmuch_message_get_properties()`
> returns properties in a different order, while the tests expect a specific
> order. So I'm wondering:
> - Is there a particular order which the interface promises to deliver?
> - If yes: What could cause it to be different?
> If not there's some work to do making the tests independent of the order ...
> This is not glib again, is it?

Can you try the following patch?

diff --git a/lib/string-map.c b/lib/string-map.c
index e3a81b4f..99bc2ea2 100644
--- a/lib/string-map.c
+++ b/lib/string-map.c
@@ -86,10 +86,14 @@ _notmuch_string_map_append (notmuch_string_map_t *map,
 static int
 cmppair (const void *pa, const void *pb)
 {
+    int cmp = 0;
     notmuch_string_pair_t *a = (notmuch_string_pair_t *) pa;
     notmuch_string_pair_t *b = (notmuch_string_pair_t *) pb;

-    return strcmp (a->key, b->key);
+    cmp = strcmp (a->key, b->key);
+    if (cmp = 0)
+       cmp = strcmp (a->value, b->value);
+    return cmp;
 }

 static void

So I guess we did not quite sort completely before, ey? ;-)

That patch makes T610 pass again, thanks. It's a good change independent of any glibc promises, I think.

Glad we got this sorted out!

Cheers
Michael