aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/search-position-overlap-bug
diff options
context:
space:
mode:
authorGravatar Carl Worth <cworth@cworth.org>2011-01-26 15:19:31 +1000
committerGravatar Carl Worth <cworth@cworth.org>2011-01-26 15:59:19 +1000
commitfb54dee4ac1265b1cdf5b039e7c86a419decd04c (patch)
tree420194ef379054c1919088d218235c34e9c03f71 /test/search-position-overlap-bug
parentb64afb1ab9924749cd6d3fbfa02e5e42bb0d728b (diff)
Add test demonstrating a position overlap bug.
Currently, whenever we call index_terms multiple times for a single field, the term generator is being reset to position 0 each time. This means that with text such as: To: a@b.c, x@y.z one can get a bogus match by searching for: To: a@y.c Thanks to Mark Anderson for reporting the bug, (and providing a nice, minimal test case that inspired what is used here).
Diffstat (limited to 'test/search-position-overlap-bug')
-rwxr-xr-xtest/search-position-overlap-bug37
1 files changed, 37 insertions, 0 deletions
diff --git a/test/search-position-overlap-bug b/test/search-position-overlap-bug
new file mode 100755
index 00000000..5bbef740
--- /dev/null
+++ b/test/search-position-overlap-bug
@@ -0,0 +1,37 @@
+#!/bin/bash
+
+# Test to demonstrate a position overlap bug.
+#
+# At one point, notmuch would index terms incorrectly in the case of
+# calling index_terms multiple times for a single field. The term
+# generator was being reset to position 0 each time. This means that
+# with text such as:
+#
+# To: a@b.c, x@y.z
+#
+# one could get a bogus match by searching for:
+#
+# To: a@y.c
+#
+# Thanks to Mark Anderson for reporting the bug, (and providing a nice,
+# minimal test case that inspired what is used here), in
+# id:3wd4o8wa7fx.fsf@testarossa.amd.com
+
+test_description='that notmuch does not overlap term positions'
+. ./test-lib.sh
+
+add_message '[to]="a@b.c, x@y.z"'
+
+test_begin_subtest "Search for a@b.c matches"
+output=$(notmuch search a@b.c | notmuch_search_sanitize)
+test_expect_equal "$output" "thread:XXX 2001-01-05 [1/1] Notmuch Test Suite; Test message #1 (inbox unread)"
+
+test_begin_subtest "Search for x@y.z matches"
+output=$(notmuch search x@y.z | notmuch_search_sanitize)
+test_expect_equal "$output" "thread:XXX 2001-01-05 [1/1] Notmuch Test Suite; Test message #1 (inbox unread)"
+
+test_begin_subtest "Search for a@y.c must not match"
+output=$(notmuch search a@y.c | notmuch_search_sanitize)
+test_expect_equal "$output" ""
+
+test_done