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