unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
blob eb23e02b45081e508166e391caa6ae01a534c237 5395 bytes (raw)
name: test/insert 	 # 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
 
#!/usr/bin/env bash
test_description='"notmuch insert"'
. ./test-lib.sh

# Create directories and database before inserting.
mkdir -p "$MAIL_DIR"/{cur,new,tmp}
mkdir -p "$MAIL_DIR"/Drafts/{cur,new,tmp}
notmuch new > /dev/null

# We use generate_message to create the temporary message files.
# They happen to be in the mail directory already but that is okay
# since we do not call notmuch new hereafter.

gen_insert_msg() {
    generate_message \
	"[subject]=\"insert-subject\"" \
	"[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" \
	"[body]=\"insert-message\""
}

gen_add_msg() {
    generate_message \
        "[dir]=add-messages/cur" \
        "[subject]=\"add-subject\"" \
        "[body]=\"add-message\"" \
        "[id]=\"add-message\""
}

test_expect_code 1 "Insert zero-length file" \
    "notmuch insert < /dev/null"

# This test is a proxy for other errors that may occur while trying to
# add a message to the notmuch database, e.g. database locked.
test_expect_code 0 "Insert non-message" \
    "echo bad_message | notmuch insert"

test_begin_subtest "Database empty so far"
test_expect_equal "0" "`notmuch count --output=messages '*'`"

test_begin_subtest "Insert message"
gen_insert_msg
notmuch insert < "$gen_msg_filename"
cur_msg_filename=$(notmuch search --output=files "subject:insert-subject")
test_expect_equal_file "$cur_msg_filename" "$gen_msg_filename"

test_begin_subtest "Insert message adds default tags"
output=$(notmuch show --format=json "subject:insert-subject")
expected='[[[{
 "id": "'"${gen_msg_id}"'",
 "match": true,
 "excluded": false,
 "filename": "'"${cur_msg_filename}"'",
 "timestamp": 946728000,
 "date_relative": "2000-01-01",
 "tags": ["inbox","unread"],
 "headers": {
  "Subject": "insert-subject",
  "From": "Notmuch Test Suite <test_suite@notmuchmail.org>",
  "To": "Notmuch Test Suite <test_suite@notmuchmail.org>",
  "Date": "Sat, 01 Jan 2000 12:00:00 +0000"},
 "body": [{"id": 1,
  "content-type": "text/plain",
  "content": "insert-message\n"}]},
 []]]]'
test_expect_equal_json "$output" "$expected"

test_begin_subtest "Insert duplicate message"
notmuch insert +duptag -unread < "$gen_msg_filename"
output=$(notmuch search --output=files "subject:insert-subject" | wc -l)
test_expect_equal "$output" 2

test_begin_subtest "Duplicate message does not change tags"
output=$(notmuch search --format=json --output=tags "subject:insert-subject")
test_expect_equal_json "$output" '["inbox", "unread"]'

test_begin_subtest "Insert message, add tag"
gen_insert_msg
notmuch insert +custom < "$gen_msg_filename"
output=$(notmuch count tag:custom)
test_expect_equal "$output" "1"

test_begin_subtest "Insert message, add/remove tags"
gen_insert_msg
notmuch insert +custom -unread < "$gen_msg_filename"
output=$(notmuch count tag:custom NOT tag:unread)
test_expect_equal "$output" "1"

test_begin_subtest "Insert message into folder"
gen_insert_msg
notmuch insert --folder=Drafts < "$gen_msg_filename"
output=$(notmuch search --output=files folder:Drafts)
dirname=$(dirname "$output")
test_expect_equal "$dirname" "$MAIL_DIR/Drafts/cur"

test_begin_subtest "Insert message into folder, add/remove tags"
gen_insert_msg
notmuch insert --folder=Drafts +draft -unread < "$gen_msg_filename"
output=$(notmuch count folder:Drafts tag:draft NOT tag:unread)
test_expect_equal "$output" "1"

gen_insert_msg
test_expect_code 1 "Insert message into non-existent folder" \
    "notmuch insert --folder=nonesuch < $gen_msg_filename"

test_begin_subtest "Insert message, create folder"
gen_insert_msg
notmuch insert --folder=F --create-folder +folder < "$gen_msg_filename"
output=$(notmuch search --output=files folder:F tag:folder)
basename=$(basename "$output")
test_expect_equal_file "$gen_msg_filename" "$MAIL_DIR/F/cur/${basename}"

test_begin_subtest "Insert message, create subfolder"
gen_insert_msg
notmuch insert --folder=F/G/H/I/J --create-folder +folder < "$gen_msg_filename"
output=$(notmuch search --output=files folder:F/G/H/I/J tag:folder)
basename=$(basename "$output")
test_expect_equal_file "$gen_msg_filename" "${MAIL_DIR}/F/G/H/I/J/cur/${basename}"

test_begin_subtest "Insert message, create existing subfolder"
gen_insert_msg
notmuch insert --folder=F/G/H/I/J --create-folder +folder < "$gen_msg_filename"
output=$(notmuch count folder:F/G/H/I/J tag:folder)
test_expect_equal "$output" "2"

gen_insert_msg
test_expect_code 1 "Insert message, create invalid subfolder" \
    "notmuch insert --folder=../G --create-folder $gen_msg_filename"

gen_add_msg
tmp_filename=/tmp/$(basename $gen_msg_filename)
mv $gen_msg_filename $tmp_filename
notmuch add $tmp_filename
test_expect_code 1 "Add message from outside maildir returns 1" \
    "notmuch add $tmp_filename"

test_begin_subtest "Add message from outside maildir does nothing"
output=$(notmuch count id:$gen_msg_id)
test_expect_equal "$output" "0"

test_begin_subtest "Add message from inside maildir"
gen_add_msg
notmuch add $gen_msg_filename
output=$(notmuch count id:$gen_msg_id)
test_expect_equal "$output" "1"

test_begin_subtest "Add duplicate message"
gen_add_msg
notmuch add "$gen_msg_filename"
output=$(notmuch search --output=files "id:$gen_msg_id" | wc -l)
test_expect_equal "$output" 2

test_begin_subtest "Adding duplicate message does not change tags"
output=$(notmuch search --format=json --output=tags "id:$gen_msg_id")
test_expect_equal_json "$output" '["inbox", "unread"]'

test_done

debug log:

solving eb23e02 ...
found eb23e02 in https://yhetil.org/notmuch/1373762746-22308-4-git-send-email-awg+notmuch@xvx.ca/
found 021edb6 in https://yhetil.org/notmuch.git/
preparing index
index prepared:
100755 021edb62d4354b10d88d4ef083c4017569123ed4	test/insert

applying [1/1] https://yhetil.org/notmuch/1373762746-22308-4-git-send-email-awg+notmuch@xvx.ca/
diff --git a/test/insert b/test/insert
index 021edb6..eb23e02 100755

Checking patch test/insert...
Applied patch test/insert cleanly.

index at:
100755 eb23e02b45081e508166e391caa6ae01a534c237	test/insert

(*) 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).