notmuch/test/T740-body.sh
David Bremner 319dd95ebb lib: add 'body:' field, stop indexing headers twice.
The new `body:` field (in Xapian terms) or prefix (in slightly
sloppier notmuch) terms allows matching terms that occur only in the
body.

Unprefixed query terms should continue to match anywhere (header or
body) in the message.

This follows a suggestion of Olly Betts to use the facility (since
Xapian 1.0.4) to add the same field with multiple prefixes. The double
indexing of previous versions is thus replaced with a query time
expension of unprefixed query terms to the various prefixed
equivalent.

Reindexing will be needed for 'body:' searches to work correctly;
otherwise they will also match messages where the term occur in
headers (demonstrated by the new tests in T530-upgrade.sh)
2019-04-17 08:48:16 -03:00

43 lines
1.5 KiB
Bash
Executable file

#!/usr/bin/env bash
test_description='search body'
. $(dirname "$0")/test-lib.sh || exit 1
add_message "[body]=thebody-1" "[subject]=subject-1"
add_message "[body]=nothing-to-see-here-1" "[subject]=thebody-1"
test_begin_subtest 'search with body: prefix'
notmuch search body:thebody | notmuch_search_sanitize > OUTPUT
cat <<EOF > EXPECTED
thread:XXX 2001-01-05 [1/1] Notmuch Test Suite; subject-1 (inbox unread)
EOF
test_expect_equal_file EXPECTED OUTPUT
test_begin_subtest 'search without body: prefix'
notmuch search thebody | notmuch_search_sanitize > OUTPUT
cat <<EOF > EXPECTED
thread:XXX 2001-01-05 [1/1] Notmuch Test Suite; subject-1 (inbox unread)
thread:XXX 2001-01-05 [1/1] Notmuch Test Suite; thebody-1 (inbox unread)
EOF
test_expect_equal_file EXPECTED OUTPUT
test_begin_subtest 'negated body: prefix'
notmuch search thebody and not body:thebody | notmuch_search_sanitize > OUTPUT
cat <<EOF > EXPECTED
thread:XXX 2001-01-05 [1/1] Notmuch Test Suite; thebody-1 (inbox unread)
EOF
test_expect_equal_file EXPECTED OUTPUT
test_begin_subtest 'search unprefixed for prefixed term'
notmuch search subject | notmuch_search_sanitize > OUTPUT
cat <<EOF > EXPECTED
thread:XXX 2001-01-05 [1/1] Notmuch Test Suite; subject-1 (inbox unread)
EOF
test_expect_equal_file EXPECTED OUTPUT
test_begin_subtest 'search with body: prefix for term only in subject'
notmuch search body:subject | notmuch_search_sanitize > OUTPUT
cat <<EOF > EXPECTED
EOF
test_expect_equal_file EXPECTED OUTPUT
test_done