unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
blob a4cef26c4f6b08427a12315a75129bdacc044aa9 11980 bytes (raw)
name: test/search-excludes 	 # note: path name is non-authoritative(*)

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
 
#!/usr/bin/env bash
test_description='"notmuch search" with excludes in several variations'
. ./test-lib.sh

# Generates a thread consisting of a top level message and 'length'
# replies. The subject of the top message 'subject: top message"
# and the subject of the nth reply in the thread is "subject: reply n"
generate_thread ()
{
    local subject="$1"
    local length="$2"
    generate_message '[subject]="'"${subject}: top message"'"'
    parent_id=$gen_msg_id
    gen_thread_msg_id[0]=$gen_msg_id
    for i in `seq 1 $length`
    do
	generate_message '[subject]="'"${subject}: reply $i"'"' \
	                 "[in-reply-to]=\<$parent_id\>"
	gen_thread_msg_id[$i]=$gen_msg_id
	parent_id=$gen_msg_id
    done
    notmuch new > /dev/null
    # We cannot retrieve the thread_id until after we have run notmuch new.
    gen_thread_id=`notmuch search --output=threads id:${gen_thread_msg_id[0]}`
}

# These are the original search exclude tests.

test_begin_subtest "Exclude \"deleted\" messages from search"
notmuch config set search.exclude_tags deleted
generate_message '[subject]="Not deleted"'
not_deleted_id=$gen_msg_id
generate_message '[subject]="Deleted"'
notmuch new > /dev/null
notmuch tag +deleted id:$gen_msg_id
deleted_id=$gen_msg_id
output=$(notmuch search subject:deleted | notmuch_search_sanitize)
test_expect_equal "$output" "thread:XXX   2001-01-05 [1/1] Notmuch Test Suite; Not deleted (inbox unread)"

test_begin_subtest "Exclude \"deleted\" messages from message search"
output=$(notmuch search --output=messages subject:deleted | notmuch_search_sanitize)
test_expect_equal "$output" "id:$not_deleted_id"

test_begin_subtest "Exclude \"deleted\" messages from message search --exclude=false"
output=$(notmuch search --exclude=false --output=messages subject:deleted | notmuch_search_sanitize)
test_expect_equal "$output" "id:$not_deleted_id
id:$deleted_id"

test_begin_subtest "Exclude \"deleted\" messages from message search (non-existent exclude-tag)"
notmuch config set search.exclude_tags deleted non_existent_tag
output=$(notmuch search --output=messages subject:deleted | notmuch_search_sanitize)
test_expect_equal "$output" "id:$not_deleted_id"
notmuch config set search.exclude_tags deleted

test_begin_subtest "Exclude \"deleted\" messages from search, overridden"
output=$(notmuch search subject:deleted and tag:deleted | notmuch_search_sanitize)
test_expect_equal "$output" "thread:XXX   2001-01-05 [1/1] Notmuch Test Suite; Deleted (deleted inbox unread)"

test_begin_subtest "Exclude \"deleted\" messages from threads"
add_message '[subject]="Not deleted reply"' '[in-reply-to]="<$gen_msg_id>"'
output=$(notmuch search subject:deleted | notmuch_search_sanitize)
test_expect_equal "$output" "thread:XXX   2001-01-05 [1/1] Notmuch Test Suite; Not deleted (inbox unread)
thread:XXX   2001-01-05 [1/2] Notmuch Test Suite; Not deleted reply (deleted inbox unread)"

test_begin_subtest "Don't exclude \"deleted\" messages when --exclude=flag specified"
output=$(notmuch search --exclude=flag subject:deleted | notmuch_search_sanitize)
test_expect_equal "$output" "thread:XXX   2001-01-05 [1/1] Notmuch Test Suite; Not deleted (inbox unread)
thread:XXX   2001-01-05 [1/2] Notmuch Test Suite; Not deleted reply (deleted inbox unread)"

test_begin_subtest "Don't exclude \"deleted\" messages from search if not configured"
notmuch config set search.exclude_tags
output=$(notmuch search subject:deleted | notmuch_search_sanitize)
test_expect_equal "$output" "thread:XXX   2001-01-05 [1/1] Notmuch Test Suite; Not deleted (inbox unread)
thread:XXX   2001-01-05 [2/2] Notmuch Test Suite; Deleted (deleted inbox unread)"




# We construct some threads for the tests. We use the tag "test" to
# indicate which messages we will search for.

# A thread of deleted messages; test matches one of them.
generate_thread "All messages excluded: single match" 5
notmuch tag +deleted $gen_thread_id
notmuch tag +test id:${gen_thread_msg_id[2]}

# A thread of deleted messages; test matches two of them.
generate_thread "All messages excluded: double match" 5
notmuch tag +deleted $gen_thread_id
notmuch tag +test id:${gen_thread_msg_id[2]}
notmuch tag +test id:${gen_thread_msg_id[4]}

# A thread some messages deleted; test only matches a deleted message.
generate_thread "Some messages excluded: single excluded match" 5
notmuch tag +deleted +test id:${gen_thread_msg_id[3]}

# A thread some messages deleted; test only matches a non-deleted message.
generate_thread "Some messages excluded: single non-excluded match" 5
notmuch tag +deleted id:${gen_thread_msg_id[2]}
notmuch tag +test id:${gen_thread_msg_id[4]}

# A thread no messages deleted; test matches a message.
generate_thread "No messages excluded: single match" 5
notmuch tag +test id:${gen_thread_msg_id[3]}

# Temporarily remove excludes to get list of matching messages
notmuch config set search.exclude_tags
matching_message_ids=( `notmuch search --output=messages tag:test` )
notmuch config set search.exclude_tags deleted

test_begin_subtest "Default exclusion (thread summary)"
output=$(notmuch search tag:test | notmuch_search_sanitize)
test_expect_equal "$output" "thread:XXX   2001-01-05 [1/6] Notmuch Test Suite; Some messages excluded: single non-excluded match: reply 4 (deleted inbox test unread)
thread:XXX   2001-01-05 [1/6] Notmuch Test Suite; No messages excluded: single match: reply 3 (inbox test unread)"

test_begin_subtest "Default exclusion (messages)"
output=$(notmuch search --output=messages tag:test | notmuch_search_sanitize)
test_expect_equal "$output" "${matching_message_ids[4]}
${matching_message_ids[5]}"

test_begin_subtest "exclude=true (thread summary)"
output=$(notmuch search --exclude=true tag:test | notmuch_search_sanitize)
test_expect_equal "$output" "thread:XXX   2001-01-05 [1/6] Notmuch Test Suite; Some messages excluded: single non-excluded match: reply 4 (deleted inbox test unread)
thread:XXX   2001-01-05 [1/6] Notmuch Test Suite; No messages excluded: single match: reply 3 (inbox test unread)"

test_begin_subtest "exclude=true (messages)"
output=$(notmuch search --exclude=true --output=messages tag:test | notmuch_search_sanitize)
test_expect_equal "$output" "${matching_message_ids[4]}
${matching_message_ids[5]}"

test_begin_subtest "exclude=false (thread summary)"
output=$(notmuch search --exclude=false tag:test | notmuch_search_sanitize)
test_expect_equal "$output" "thread:XXX   2001-01-05 [1/6] Notmuch Test Suite; All messages excluded: single match: reply 2 (deleted inbox test unread)
thread:XXX   2001-01-05 [2/6] Notmuch Test Suite; All messages excluded: double match: reply 2 (deleted inbox test unread)
thread:XXX   2001-01-05 [1/6] Notmuch Test Suite; Some messages excluded: single excluded match: reply 3 (deleted inbox test unread)
thread:XXX   2001-01-05 [1/6] Notmuch Test Suite; Some messages excluded: single non-excluded match: reply 4 (deleted inbox test unread)
thread:XXX   2001-01-05 [1/6] Notmuch Test Suite; No messages excluded: single match: reply 3 (inbox test unread)"

test_begin_subtest "exclude=false (messages)"
output=$(notmuch search --exclude=false --output=messages tag:test | notmuch_search_sanitize)
test_expect_equal "$output" "${matching_message_ids[0]}
${matching_message_ids[1]}
${matching_message_ids[2]}
${matching_message_ids[3]}
${matching_message_ids[4]}
${matching_message_ids[5]}"

test_begin_subtest "exclude=flag (thread summary)"
output=$(notmuch search --exclude=flag tag:test | notmuch_search_sanitize)
test_expect_equal "$output" "thread:XXX   2001-01-05 [0/6] Notmuch Test Suite; All messages excluded: single match: reply 2 (deleted inbox test unread)
thread:XXX   2001-01-05 [0/6] Notmuch Test Suite; All messages excluded: double match: reply 4 (deleted inbox test unread)
thread:XXX   2001-01-05 [0/6] Notmuch Test Suite; Some messages excluded: single excluded match: reply 3 (deleted inbox test unread)
thread:XXX   2001-01-05 [1/6] Notmuch Test Suite; Some messages excluded: single non-excluded match: reply 4 (deleted inbox test unread)
thread:XXX   2001-01-05 [1/6] Notmuch Test Suite; No messages excluded: single match: reply 3 (inbox test unread)"

test_begin_subtest "exclude=flag (messages)"
output=$(notmuch search --exclude=flag --output=messages tag:test | notmuch_search_sanitize)
test_expect_equal "$output" "${matching_message_ids[0]}
${matching_message_ids[1]}
${matching_message_ids[2]}
${matching_message_ids[3]}
${matching_message_ids[4]}
${matching_message_ids[5]}"

test_begin_subtest "Default exclusion: tag in query (thread summary)"
output=$(notmuch search tag:test and tag:deleted | notmuch_search_sanitize)
test_expect_equal "$output" "thread:XXX   2001-01-05 [1/6] Notmuch Test Suite; All messages excluded: single match: reply 2 (deleted inbox test unread)
thread:XXX   2001-01-05 [2/6] Notmuch Test Suite; All messages excluded: double match: reply 2 (deleted inbox test unread)
thread:XXX   2001-01-05 [1/6] Notmuch Test Suite; Some messages excluded: single excluded match: reply 3 (deleted inbox test unread)"

test_begin_subtest "Default exclusion: tag in query (messages)"
output=$(notmuch search --output=messages tag:test and tag:deleted | notmuch_search_sanitize)
test_expect_equal "$output" "${matching_message_ids[0]}
${matching_message_ids[1]}
${matching_message_ids[2]}
${matching_message_ids[3]}"

test_begin_subtest "exclude=true: tag in query (thread summary)"
output=$(notmuch search --exclude=true tag:test and tag:deleted | notmuch_search_sanitize)
test_expect_equal "$output" "thread:XXX   2001-01-05 [1/6] Notmuch Test Suite; All messages excluded: single match: reply 2 (deleted inbox test unread)
thread:XXX   2001-01-05 [2/6] Notmuch Test Suite; All messages excluded: double match: reply 2 (deleted inbox test unread)
thread:XXX   2001-01-05 [1/6] Notmuch Test Suite; Some messages excluded: single excluded match: reply 3 (deleted inbox test unread)"

test_begin_subtest "exclude=true: tag in query (messages)"
output=$(notmuch search --exclude=true --output=messages tag:test and tag:deleted | notmuch_search_sanitize)
test_expect_equal "$output" "${matching_message_ids[0]}
${matching_message_ids[1]}
${matching_message_ids[2]}
${matching_message_ids[3]}"

test_begin_subtest "exclude=false: tag in query (thread summary)"
output=$(notmuch search --exclude=false tag:test and tag:deleted | notmuch_search_sanitize)
test_expect_equal "$output" "thread:XXX   2001-01-05 [1/6] Notmuch Test Suite; All messages excluded: single match: reply 2 (deleted inbox test unread)
thread:XXX   2001-01-05 [2/6] Notmuch Test Suite; All messages excluded: double match: reply 2 (deleted inbox test unread)
thread:XXX   2001-01-05 [1/6] Notmuch Test Suite; Some messages excluded: single excluded match: reply 3 (deleted inbox test unread)"

test_begin_subtest "exclude=false: tag in query (messages)"
output=$(notmuch search --exclude=false --output=messages tag:test and tag:deleted | notmuch_search_sanitize)
test_expect_equal "$output" "${matching_message_ids[0]}
${matching_message_ids[1]}
${matching_message_ids[2]}
${matching_message_ids[3]}"

test_begin_subtest "exclude=flag: tag in query (thread summary)"
output=$(notmuch search --exclude=flag tag:test and tag:deleted | notmuch_search_sanitize)
test_expect_equal "$output" "thread:XXX   2001-01-05 [1/6] Notmuch Test Suite; All messages excluded: single match: reply 2 (deleted inbox test unread)
thread:XXX   2001-01-05 [2/6] Notmuch Test Suite; All messages excluded: double match: reply 2 (deleted inbox test unread)
thread:XXX   2001-01-05 [1/6] Notmuch Test Suite; Some messages excluded: single excluded match: reply 3 (deleted inbox test unread)"

test_begin_subtest "exclude=flag: tag in query (messages)"
output=$(notmuch search --exclude=flag --output=messages tag:test and tag:deleted | notmuch_search_sanitize)
test_expect_equal "$output" "${matching_message_ids[0]}
${matching_message_ids[1]}
${matching_message_ids[2]}
${matching_message_ids[3]}"



test_done

debug log:

solving a4cef26 ...
found a4cef26 in https://yhetil.org/notmuch/1333716551-29153-5-git-send-email-markwalters1009@gmail.com/

applying [1/1] https://yhetil.org/notmuch/1333716551-29153-5-git-send-email-markwalters1009@gmail.com/
diff --git a/test/search-excludes b/test/search-excludes
new file mode 100755
index 0000000..a4cef26

Checking patch test/search-excludes...
Applied patch test/search-excludes cleanly.

index at:
100755 a4cef26c4f6b08427a12315a75129bdacc044aa9	test/search-excludes

(*) Git path names are given by the tree(s) the blob belongs to.
    Blobs themselves have no identifier aside from the hash of its contents.^

Code repositories for project(s) associated with this public inbox

	https://yhetil.org/notmuch.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).