2013-06-23 06:23:59 +02:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
test_description='"notmuch insert"'
|
2017-09-25 22:38:19 +02:00
|
|
|
. $(dirname "$0")/test-lib.sh || exit 1
|
2013-06-23 06:23:59 +02:00
|
|
|
|
2018-02-09 05:10:58 +01:00
|
|
|
# subtests about file permissions assume that we're working with umask
|
|
|
|
# 022 by default.
|
|
|
|
umask 022
|
|
|
|
|
2013-06-23 06:23:59 +02:00
|
|
|
# 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.
|
|
|
|
|
2021-05-15 22:47:39 +02:00
|
|
|
gen_insert_msg () {
|
2013-06-23 06:23:59 +02:00
|
|
|
generate_message \
|
|
|
|
"[subject]=\"insert-subject\"" \
|
|
|
|
"[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" \
|
|
|
|
"[body]=\"insert-message\""
|
|
|
|
}
|
|
|
|
|
2017-02-26 14:43:01 +01:00
|
|
|
test_begin_subtest "Insert zero-length file"
|
|
|
|
test_expect_code 1 "notmuch insert < /dev/null"
|
2013-06-23 06:23:59 +02:00
|
|
|
|
|
|
|
# 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.
|
2017-02-26 14:43:01 +01:00
|
|
|
test_begin_subtest "Insert non-message"
|
|
|
|
test_expect_code 1 "echo bad_message | notmuch insert"
|
2013-06-23 06:23:59 +02:00
|
|
|
|
|
|
|
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"
|
|
|
|
|
2018-02-09 05:10:58 +01:00
|
|
|
test_begin_subtest "Permissions on inserted message should be 0600"
|
|
|
|
test_expect_equal "600" "$(stat -c %a "$cur_msg_filename")"
|
|
|
|
|
2013-06-23 06:23:59 +02:00
|
|
|
test_begin_subtest "Insert message adds default tags"
|
2022-07-01 23:45:40 +02:00
|
|
|
output=$(notmuch show --format=json "subject:insert-subject" | notmuch_json_show_sanitize)
|
2013-06-23 06:23:59 +02:00
|
|
|
expected='[[[{
|
2022-07-01 23:45:40 +02:00
|
|
|
"id": "XXXXX",
|
2019-05-25 20:04:06 +02:00
|
|
|
"crypto": {},
|
2013-06-23 06:23:59 +02:00
|
|
|
"match": true,
|
|
|
|
"excluded": false,
|
2022-07-01 23:45:40 +02:00
|
|
|
"filename": ["YYYYY"],
|
2013-06-23 06:23:59 +02:00
|
|
|
"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"
|
2017-01-04 23:35:23 +01:00
|
|
|
output=$((`notmuch search --output=files "subject:insert-subject" | wc -l`))
|
2013-06-23 06:23:59 +02:00
|
|
|
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"
|
2013-09-03 07:19:03 +02:00
|
|
|
output=$(notmuch search --output=messages tag:custom)
|
|
|
|
test_expect_equal "$output" "id:$gen_msg_id"
|
2013-06-23 06:23:59 +02:00
|
|
|
|
2018-02-09 05:10:58 +01:00
|
|
|
test_begin_subtest "Insert tagged world-readable message"
|
|
|
|
gen_insert_msg
|
|
|
|
notmuch insert --world-readable +world-readable-test < "$gen_msg_filename"
|
|
|
|
cur_msg_filename=$(notmuch search --output=files "tag:world-readable-test")
|
|
|
|
test_expect_equal_file "$cur_msg_filename" "$gen_msg_filename"
|
|
|
|
|
|
|
|
test_begin_subtest "Permissions on inserted world-readable message should be 0644"
|
|
|
|
test_expect_equal "644" "$(stat -c %a "$cur_msg_filename")"
|
|
|
|
|
|
|
|
test_begin_subtest "Insert tagged world-readable message with group-only umask"
|
|
|
|
oldumask=$(umask)
|
|
|
|
umask 027
|
|
|
|
gen_insert_msg
|
|
|
|
notmuch insert --world-readable +world-readable-umask-test < "$gen_msg_filename"
|
|
|
|
cur_msg_filename=$(notmuch search --output=files "tag:world-readable-umask-test")
|
|
|
|
umask "$oldumask"
|
|
|
|
test_expect_equal_file "$cur_msg_filename" "$gen_msg_filename"
|
|
|
|
|
|
|
|
test_begin_subtest "Permissions on inserted world-readable message with funny umask should be 0640"
|
|
|
|
test_expect_equal "640" "$(stat -c %a "$cur_msg_filename")"
|
|
|
|
|
2013-06-23 06:23:59 +02:00
|
|
|
test_begin_subtest "Insert message, add/remove tags"
|
|
|
|
gen_insert_msg
|
|
|
|
notmuch insert +custom -unread < "$gen_msg_filename"
|
2013-09-03 07:19:03 +02:00
|
|
|
output=$(notmuch search --output=messages tag:custom NOT tag:unread)
|
|
|
|
test_expect_equal "$output" "id:$gen_msg_id"
|
2013-06-23 06:23:59 +02:00
|
|
|
|
2013-09-03 07:19:02 +02:00
|
|
|
test_begin_subtest "Insert message with default tags stays in new/"
|
|
|
|
gen_insert_msg
|
|
|
|
notmuch insert < "$gen_msg_filename"
|
|
|
|
output=$(notmuch search --output=files id:$gen_msg_id)
|
|
|
|
dirname=$(dirname "$output")
|
|
|
|
test_expect_equal "$dirname" "$MAIL_DIR/new"
|
|
|
|
|
|
|
|
test_begin_subtest "Insert message with non-maildir synced tags stays in new/"
|
|
|
|
gen_insert_msg
|
|
|
|
notmuch insert +custom -inbox < "$gen_msg_filename"
|
|
|
|
output=$(notmuch search --output=files id:$gen_msg_id)
|
|
|
|
dirname=$(dirname "$output")
|
|
|
|
test_expect_equal "$dirname" "$MAIL_DIR/new"
|
|
|
|
|
|
|
|
test_begin_subtest "Insert message with custom new.tags goes to cur/"
|
|
|
|
OLDCONFIG=$(notmuch config get new.tags)
|
|
|
|
notmuch config set new.tags test
|
|
|
|
gen_insert_msg
|
|
|
|
notmuch insert < "$gen_msg_filename"
|
|
|
|
output=$(notmuch search --output=files id:$gen_msg_id)
|
|
|
|
dirname=$(dirname "$output")
|
|
|
|
notmuch config set new.tags $OLDCONFIG
|
|
|
|
test_expect_equal "$dirname" "$MAIL_DIR/cur"
|
|
|
|
|
|
|
|
# additional check on the previous message
|
|
|
|
test_begin_subtest "Insert message with custom new.tags actually gets the tags"
|
|
|
|
output=$(notmuch search --output=tags id:$gen_msg_id)
|
|
|
|
test_expect_equal "$output" "test"
|
|
|
|
|
|
|
|
test_begin_subtest "Insert message with maildir synced tags goes to cur/"
|
|
|
|
gen_insert_msg
|
|
|
|
notmuch insert +flagged < "$gen_msg_filename"
|
|
|
|
output=$(notmuch search --output=files id:$gen_msg_id)
|
|
|
|
dirname=$(dirname "$output")
|
|
|
|
test_expect_equal "$dirname" "$MAIL_DIR/cur"
|
|
|
|
|
2014-01-01 16:20:13 +01:00
|
|
|
test_begin_subtest "Insert message with maildir sync off goes to new/"
|
|
|
|
OLDCONFIG=$(notmuch config get maildir.synchronize_flags)
|
|
|
|
notmuch config set maildir.synchronize_flags false
|
|
|
|
gen_insert_msg
|
|
|
|
notmuch insert +flagged < "$gen_msg_filename"
|
|
|
|
output=$(notmuch search --output=files id:$gen_msg_id)
|
|
|
|
dirname=$(dirname "$output")
|
|
|
|
notmuch config set maildir.synchronize_flags $OLDCONFIG
|
|
|
|
test_expect_equal "$dirname" "$MAIL_DIR/new"
|
|
|
|
|
2013-06-23 06:24:02 +02:00
|
|
|
test_begin_subtest "Insert message into folder"
|
|
|
|
gen_insert_msg
|
|
|
|
notmuch insert --folder=Drafts < "$gen_msg_filename"
|
2014-01-06 22:48:24 +01:00
|
|
|
output=$(notmuch search --output=files path:Drafts/new)
|
2013-06-23 06:24:02 +02:00
|
|
|
dirname=$(dirname "$output")
|
2012-12-19 22:32:27 +01:00
|
|
|
test_expect_equal "$dirname" "$MAIL_DIR/Drafts/new"
|
2013-06-23 06:24:02 +02:00
|
|
|
|
2017-11-02 20:08:57 +01:00
|
|
|
test_begin_subtest "Insert message into top level folder"
|
|
|
|
gen_insert_msg
|
|
|
|
notmuch insert --folder="" < "$gen_msg_filename"
|
|
|
|
output=$(notmuch search --output=files id:${gen_msg_id})
|
|
|
|
dirname=$(dirname "$output")
|
|
|
|
test_expect_equal "$dirname" "$MAIL_DIR/new"
|
|
|
|
|
2017-08-12 18:47:30 +02:00
|
|
|
test_begin_subtest "Insert message into folder with trailing /"
|
|
|
|
gen_insert_msg
|
|
|
|
notmuch insert --folder=Drafts/ < "$gen_msg_filename"
|
|
|
|
output=$(notmuch search --output=files id:${gen_msg_id})
|
|
|
|
dirname=$(dirname "$output")
|
|
|
|
test_expect_equal "$dirname" "$MAIL_DIR/Drafts/new"
|
|
|
|
|
2013-06-23 06:24:02 +02:00
|
|
|
test_begin_subtest "Insert message into folder, add/remove tags"
|
|
|
|
gen_insert_msg
|
|
|
|
notmuch insert --folder=Drafts +draft -unread < "$gen_msg_filename"
|
2014-01-06 22:48:24 +01:00
|
|
|
output=$(notmuch search --output=messages path:Drafts/cur tag:draft NOT tag:unread)
|
2013-09-03 07:19:03 +02:00
|
|
|
test_expect_equal "$output" "id:$gen_msg_id"
|
2013-06-23 06:24:02 +02:00
|
|
|
|
2017-02-26 14:43:01 +01:00
|
|
|
test_begin_subtest "Insert message into non-existent folder"
|
2013-06-23 06:24:02 +02:00
|
|
|
gen_insert_msg
|
2017-02-26 14:43:01 +01:00
|
|
|
test_expect_code 1 "notmuch insert --folder=nonesuch < $gen_msg_filename"
|
2013-06-23 06:24:02 +02:00
|
|
|
|
2013-06-23 06:24:05 +02:00
|
|
|
test_begin_subtest "Insert message, create folder"
|
|
|
|
gen_insert_msg
|
|
|
|
notmuch insert --folder=F --create-folder +folder < "$gen_msg_filename"
|
2014-01-06 22:48:24 +01:00
|
|
|
output=$(notmuch search --output=files path:F/new tag:folder)
|
2013-06-23 06:24:05 +02:00
|
|
|
basename=$(basename "$output")
|
2012-12-19 22:32:27 +01:00
|
|
|
test_expect_equal_file "$gen_msg_filename" "$MAIL_DIR/F/new/${basename}"
|
2013-06-23 06:24:05 +02:00
|
|
|
|
|
|
|
test_begin_subtest "Insert message, create subfolder"
|
|
|
|
gen_insert_msg
|
|
|
|
notmuch insert --folder=F/G/H/I/J --create-folder +folder < "$gen_msg_filename"
|
2014-01-06 22:48:24 +01:00
|
|
|
output=$(notmuch search --output=files path:F/G/H/I/J/new tag:folder)
|
2013-06-23 06:24:05 +02:00
|
|
|
basename=$(basename "$output")
|
2012-12-19 22:32:27 +01:00
|
|
|
test_expect_equal_file "$gen_msg_filename" "${MAIL_DIR}/F/G/H/I/J/new/${basename}"
|
2013-06-23 06:24:05 +02:00
|
|
|
|
2018-02-09 05:10:58 +01:00
|
|
|
test_begin_subtest "Created subfolder should have permissions 0700"
|
|
|
|
test_expect_equal "700" "$(stat -c %a "${MAIL_DIR}/F/G/H/I/J")"
|
|
|
|
test_begin_subtest "Created subfolder new/ should also have permissions 0700"
|
|
|
|
test_expect_equal "700" "$(stat -c %a "${MAIL_DIR}/F/G/H/I/J/new")"
|
|
|
|
|
|
|
|
test_begin_subtest "Insert message, create world-readable subfolder"
|
|
|
|
gen_insert_msg
|
|
|
|
notmuch insert --folder=F/G/H/I/J/K --create-folder --world-readable +folder-world-readable < "$gen_msg_filename"
|
|
|
|
output=$(notmuch search --output=files path:F/G/H/I/J/K/new tag:folder-world-readable)
|
|
|
|
basename=$(basename "$output")
|
|
|
|
test_expect_equal_file "$gen_msg_filename" "${MAIL_DIR}/F/G/H/I/J/K/new/${basename}"
|
|
|
|
|
|
|
|
test_begin_subtest "Created world-readable subfolder should have permissions 0755"
|
|
|
|
test_expect_equal "755" "$(stat -c %a "${MAIL_DIR}/F/G/H/I/J/K")"
|
|
|
|
test_begin_subtest "Created world-readable subfolder new/ should also have permissions 0755"
|
|
|
|
test_expect_equal "755" "$(stat -c %a "${MAIL_DIR}/F/G/H/I/J/K/new")"
|
|
|
|
|
2013-06-23 06:24:05 +02:00
|
|
|
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"
|
2014-01-06 22:48:24 +01:00
|
|
|
output=$(notmuch count path:F/G/H/I/J/new tag:folder)
|
2013-06-23 06:24:05 +02:00
|
|
|
test_expect_equal "$output" "2"
|
|
|
|
|
2017-02-26 14:43:01 +01:00
|
|
|
test_begin_subtest "Insert message, create invalid subfolder"
|
2013-06-23 06:24:05 +02:00
|
|
|
gen_insert_msg
|
2020-09-04 03:10:57 +02:00
|
|
|
test_expect_code 1 "notmuch insert --folder=../G --create-folder < $gen_msg_filename"
|
2013-06-23 06:24:05 +02:00
|
|
|
|
2014-02-23 17:55:23 +01:00
|
|
|
OLDCONFIG=$(notmuch config get new.tags)
|
|
|
|
|
2020-08-26 13:43:33 +02:00
|
|
|
test_begin_subtest "Empty tags in new.tags are ignored"
|
2014-02-23 17:55:23 +01:00
|
|
|
notmuch config set new.tags "foo;;bar"
|
|
|
|
gen_insert_msg
|
2020-08-26 13:43:33 +02:00
|
|
|
notmuch insert < $gen_msg_filename
|
|
|
|
output=$(notmuch show --format=json id:$gen_msg_id)
|
|
|
|
test_json_nodes <<<"$output" \
|
|
|
|
'new_tags:[0][0][0]["tags"] = ["bar", "foo"]'
|
2014-02-23 17:55:23 +01:00
|
|
|
|
2021-09-30 19:17:47 +02:00
|
|
|
test_begin_subtest "leading/trailing whitespace in new.tags is ignored"
|
|
|
|
# avoid complications with leading spaces and "notmuch config"
|
|
|
|
sed -i 's/^tags=.*$/tags= fu bar ; ; bar /' notmuch-config
|
|
|
|
gen_insert_msg
|
|
|
|
notmuch insert < $gen_msg_filename
|
|
|
|
notmuch dump id:$gen_msg_id | sed 's/ --.*$//' > OUTPUT
|
|
|
|
cat <<EOF >EXPECTED
|
|
|
|
#notmuch-dump batch-tag:3 config,properties,tags
|
|
|
|
+bar +fu%20bar
|
|
|
|
EOF
|
|
|
|
test_expect_equal_file EXPECTED OUTPUT
|
|
|
|
|
2014-02-23 17:55:23 +01:00
|
|
|
test_begin_subtest "Tags starting with '-' in new.tags are forbidden"
|
|
|
|
notmuch config set new.tags "-foo;bar"
|
|
|
|
gen_insert_msg
|
2020-09-04 03:10:57 +02:00
|
|
|
output=$(notmuch insert < $gen_msg_filename 2>&1)
|
2014-02-23 17:55:23 +01:00
|
|
|
test_expect_equal "$output" "Error: tag '-foo' in new.tags: tag starting with '-' forbidden"
|
|
|
|
|
2017-02-26 14:43:01 +01:00
|
|
|
test_begin_subtest "Invalid tags set exit code"
|
2020-09-04 03:10:57 +02:00
|
|
|
test_expect_code 1 "notmuch insert < $gen_msg_filename 2>&1"
|
2014-02-23 17:55:23 +01:00
|
|
|
|
|
|
|
notmuch config set new.tags $OLDCONFIG
|
|
|
|
|
2014-10-03 23:18:57 +02:00
|
|
|
# DUPLICATE_MESSAGE_ID is not tested here, because it should actually pass.
|
2019-06-26 18:23:37 +02:00
|
|
|
# pregenerate all of the test shims
|
2021-01-16 02:29:17 +01:00
|
|
|
for code in FILE_NOT_EMAIL READ_ONLY_DATABASE UPGRADE_REQUIRED PATH_ERROR OUT_OF_MEMORY XAPIAN_EXCEPTION; do
|
2019-06-26 18:23:37 +02:00
|
|
|
make_shim shim-$code <<EOF
|
|
|
|
#include <notmuch.h>
|
|
|
|
#include <stdio.h>
|
|
|
|
notmuch_status_t
|
|
|
|
notmuch_database_index_file (notmuch_database_t *notmuch,
|
|
|
|
const char *filename,
|
|
|
|
notmuch_indexopts_t *indexopts,
|
|
|
|
notmuch_message_t **message_ret)
|
|
|
|
{
|
|
|
|
return NOTMUCH_STATUS_$code;
|
|
|
|
}
|
2014-10-03 23:18:57 +02:00
|
|
|
EOF
|
2016-11-28 04:01:42 +01:00
|
|
|
done
|
|
|
|
|
|
|
|
gen_insert_msg
|
|
|
|
|
2021-01-16 02:29:17 +01:00
|
|
|
for code in FILE_NOT_EMAIL READ_ONLY_DATABASE UPGRADE_REQUIRED PATH_ERROR; do
|
database: add n_d_index_file (deprecates n_d_add_message)
We need a way to pass parameters to the indexing functionality on the
first index, not just on reindexing. The obvious place is in
notmuch_database_add_message. But since modifying the argument list
would break both API and ABI, we needed a new name.
I considered notmuch_database_add_message_with_params(), but the
functionality we're talking about doesn't always add a message. It
tries to index a specific file, possibly adding a message, but
possibly doing other things, like adding terms to an existing message,
or failing to deal with message objects entirely (e.g. because the
file didn't contain a message).
So i chose the function name notmuch_database_index_file.
I confess i'm a little concerned about confusing future notmuch
developers with the new name, since we already have a private
_notmuch_message_index_file function, and the two do rather different
things. But i think the added clarity for people linking against the
future libnotmuch and the capacity for using index parameters makes
this a worthwhile tradeoff. (that said, if anyone has another name
that they strongly prefer, i'd be happy to go with it)
This changeset also adjusts the tests so that we test whether the new,
preferred function returns bad values (since the deprecated function
just calls the new one).
We can keep the deprecated n_d_add_message function around as long as
we like, but at the next place where we're forced to break API or ABI
we can probably choose to drop the name relatively safely.
NOTE: there is probably more cleanup to do in the ruby and go bindings
to complete the deprecation directly. I don't know those languages
well enough to attempt a fix; i don't know how to test them; and i
don't know the culture around those languages about API additions or
deprecations.
2017-08-18 01:14:25 +02:00
|
|
|
test_begin_subtest "EXIT_FAILURE when index_file returns $code"
|
2019-06-26 18:23:37 +02:00
|
|
|
test_expect_code 1 "notmuch_with_shim shim-$code insert < \"$gen_msg_filename\""
|
2017-02-26 14:43:01 +01:00
|
|
|
|
database: add n_d_index_file (deprecates n_d_add_message)
We need a way to pass parameters to the indexing functionality on the
first index, not just on reindexing. The obvious place is in
notmuch_database_add_message. But since modifying the argument list
would break both API and ABI, we needed a new name.
I considered notmuch_database_add_message_with_params(), but the
functionality we're talking about doesn't always add a message. It
tries to index a specific file, possibly adding a message, but
possibly doing other things, like adding terms to an existing message,
or failing to deal with message objects entirely (e.g. because the
file didn't contain a message).
So i chose the function name notmuch_database_index_file.
I confess i'm a little concerned about confusing future notmuch
developers with the new name, since we already have a private
_notmuch_message_index_file function, and the two do rather different
things. But i think the added clarity for people linking against the
future libnotmuch and the capacity for using index parameters makes
this a worthwhile tradeoff. (that said, if anyone has another name
that they strongly prefer, i'd be happy to go with it)
This changeset also adjusts the tests so that we test whether the new,
preferred function returns bad values (since the deprecated function
just calls the new one).
We can keep the deprecated n_d_add_message function around as long as
we like, but at the next place where we're forced to break API or ABI
we can probably choose to drop the name relatively safely.
NOTE: there is probably more cleanup to do in the ruby and go bindings
to complete the deprecation directly. I don't know those languages
well enough to attempt a fix; i don't know how to test them; and i
don't know the culture around those languages about API additions or
deprecations.
2017-08-18 01:14:25 +02:00
|
|
|
test_begin_subtest "success exit with --keep when index_file returns $code"
|
2019-06-26 18:23:37 +02:00
|
|
|
test_expect_code 0 "notmuch_with_shim shim-$code insert --keep < \"$gen_msg_filename\""
|
2016-11-28 04:01:42 +01:00
|
|
|
done
|
|
|
|
|
|
|
|
for code in OUT_OF_MEMORY XAPIAN_EXCEPTION ; do
|
database: add n_d_index_file (deprecates n_d_add_message)
We need a way to pass parameters to the indexing functionality on the
first index, not just on reindexing. The obvious place is in
notmuch_database_add_message. But since modifying the argument list
would break both API and ABI, we needed a new name.
I considered notmuch_database_add_message_with_params(), but the
functionality we're talking about doesn't always add a message. It
tries to index a specific file, possibly adding a message, but
possibly doing other things, like adding terms to an existing message,
or failing to deal with message objects entirely (e.g. because the
file didn't contain a message).
So i chose the function name notmuch_database_index_file.
I confess i'm a little concerned about confusing future notmuch
developers with the new name, since we already have a private
_notmuch_message_index_file function, and the two do rather different
things. But i think the added clarity for people linking against the
future libnotmuch and the capacity for using index parameters makes
this a worthwhile tradeoff. (that said, if anyone has another name
that they strongly prefer, i'd be happy to go with it)
This changeset also adjusts the tests so that we test whether the new,
preferred function returns bad values (since the deprecated function
just calls the new one).
We can keep the deprecated n_d_add_message function around as long as
we like, but at the next place where we're forced to break API or ABI
we can probably choose to drop the name relatively safely.
NOTE: there is probably more cleanup to do in the ruby and go bindings
to complete the deprecation directly. I don't know those languages
well enough to attempt a fix; i don't know how to test them; and i
don't know the culture around those languages about API additions or
deprecations.
2017-08-18 01:14:25 +02:00
|
|
|
test_begin_subtest "EX_TEMPFAIL when index_file returns $code"
|
2019-06-26 18:23:37 +02:00
|
|
|
test_expect_code 75 "notmuch_with_shim shim-$code insert < \"$gen_msg_filename\""
|
2017-02-26 14:43:01 +01:00
|
|
|
|
database: add n_d_index_file (deprecates n_d_add_message)
We need a way to pass parameters to the indexing functionality on the
first index, not just on reindexing. The obvious place is in
notmuch_database_add_message. But since modifying the argument list
would break both API and ABI, we needed a new name.
I considered notmuch_database_add_message_with_params(), but the
functionality we're talking about doesn't always add a message. It
tries to index a specific file, possibly adding a message, but
possibly doing other things, like adding terms to an existing message,
or failing to deal with message objects entirely (e.g. because the
file didn't contain a message).
So i chose the function name notmuch_database_index_file.
I confess i'm a little concerned about confusing future notmuch
developers with the new name, since we already have a private
_notmuch_message_index_file function, and the two do rather different
things. But i think the added clarity for people linking against the
future libnotmuch and the capacity for using index parameters makes
this a worthwhile tradeoff. (that said, if anyone has another name
that they strongly prefer, i'd be happy to go with it)
This changeset also adjusts the tests so that we test whether the new,
preferred function returns bad values (since the deprecated function
just calls the new one).
We can keep the deprecated n_d_add_message function around as long as
we like, but at the next place where we're forced to break API or ABI
we can probably choose to drop the name relatively safely.
NOTE: there is probably more cleanup to do in the ruby and go bindings
to complete the deprecation directly. I don't know those languages
well enough to attempt a fix; i don't know how to test them; and i
don't know the culture around those languages about API additions or
deprecations.
2017-08-18 01:14:25 +02:00
|
|
|
test_begin_subtest "success exit with --keep when index_file returns $code"
|
2019-06-26 18:23:37 +02:00
|
|
|
test_expect_code 0 "notmuch_with_shim shim-$code insert --keep < \"$gen_msg_filename\""
|
2014-10-03 23:18:57 +02:00
|
|
|
done
|
|
|
|
|
2022-02-12 03:10:07 +01:00
|
|
|
test_begin_subtest "insert converts mboxes on delivery"
|
|
|
|
notmuch insert +unmboxed < "${TEST_DIRECTORY}"/corpora/indexing/mbox-attachment.eml
|
|
|
|
output=$(notmuch count tag:unmboxed)
|
|
|
|
test_expect_equal "${output}" 1
|
|
|
|
|
2013-06-23 06:23:59 +02:00
|
|
|
test_done
|