David Bremner <david@tethera.net> writes: > This series has grown somewhat since > id:20201225004228.647328-1-david@tethera.net. > > The following are test system improvements and fixes that I noticed > or needed along the way. I noticed a bug while dogfooding. The excludes iterator needs to be restarted every time. This is only shows up in --batch mode, so I added a test. diff --git a/lib/config.cc b/lib/config.cc index 7a1494be..443dc3a6 100644 --- a/lib/config.cc +++ b/lib/config.cc @@ -303,6 +303,8 @@ notmuch_config_values_get (notmuch_config_values_t *values) { void notmuch_config_values_start (notmuch_config_values_t *values) { + if (values == NULL) + return; if (values->children) { talloc_free (values->children); } diff --git a/lib/notmuch.h b/lib/notmuch.h index e51b738d..0f14b569 100644 --- a/lib/notmuch.h +++ b/lib/notmuch.h @@ -2562,7 +2562,7 @@ notmuch_config_values_move_to_next (notmuch_config_values_t *values); /** * reset the 'values' iterator to the first element * - * @param[in,out] values iterator + * @param[in,out] values iterator. A NULL value is ignored. * * @since libnotmuch 5.4 (notmuch 0.32) * diff --git a/notmuch-count.c b/notmuch-count.c index 321c9207..048b1f44 100644 --- a/notmuch-count.c +++ b/notmuch-count.c @@ -80,7 +80,7 @@ print_count (notmuch_database_t *notmuch, const char *query_str, return -1; } - for (; + for (notmuch_config_values_start (exclude_tags); notmuch_config_values_valid (exclude_tags); notmuch_config_values_move_to_next (exclude_tags)) { diff --git a/test/T140-excludes.sh b/test/T140-excludes.sh index cef07095..0cacc41d 100755 --- a/test/T140-excludes.sh +++ b/test/T140-excludes.sh @@ -286,6 +286,21 @@ test_begin_subtest "Count, default exclusion: tag in query (threads)" output=$(notmuch count --output=threads tag:test and tag:deleted) test_expect_equal "$output" "3" +test_begin_subtest "Count, default exclusion, batch" +notmuch count --batch --output=messages<<EOF > OUTPUT +tag:test +tag:test and tag:deleted +tag:test +tag:test and tag:deleted +EOF +cat <<EOF >EXPECTED +2 +4 +2 +4 +EOF +test_expect_equal_file EXPECTED OUTPUT + test_begin_subtest "Count, exclude=true: tag in query (messages)" output=$(notmuch count --exclude=true tag:test and tag:deleted) test_expect_equal "$output" "4" _______________________________________________ notmuch mailing list -- notmuch@notmuchmail.org To unsubscribe send an email to notmuch-leave@notmuchmail.org