The corresponding xapian document just gets more terms added to it, but this doesn't seem to break anything. Values on the other hand get overwritten, which is a bit annoying, but arguably it is not worse to take the values (from, subject, date) from the last file indexed rather than the first. --- lib/add-message.cc | 20 +++++++++++--------- test/T160-json.sh | 4 ++-- test/T670-duplicate-mid.sh | 2 -- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/lib/add-message.cc b/lib/add-message.cc index 2922eaa9..ae9b14a7 100644 --- a/lib/add-message.cc +++ b/lib/add-message.cc @@ -529,19 +529,21 @@ notmuch_database_add_message (notmuch_database_t *notmuch, if (is_ghost) /* Convert ghost message to a regular message */ _notmuch_message_remove_term (message, "type", "ghost"); - ret = _notmuch_database_link_message (notmuch, message, + } + + ret = _notmuch_database_link_message (notmuch, message, message_file, is_ghost); - if (ret) - goto DONE; + if (ret) + goto DONE; - _notmuch_message_set_header_values (message, date, from, subject); + _notmuch_message_set_header_values (message, date, from, subject); - ret = _notmuch_message_index_file (message, message_file); - if (ret) - goto DONE; - } else { + ret = _notmuch_message_index_file (message, message_file); + if (ret) + goto DONE; + + if (! is_new && !is_ghost) ret = NOTMUCH_STATUS_DUPLICATE_MESSAGE_ID; - } _notmuch_message_sync (message); } catch (const Xapian::Error &error) { diff --git a/test/T160-json.sh b/test/T160-json.sh index ac51895e..07955a2b 100755 --- a/test/T160-json.sh +++ b/test/T160-json.sh @@ -71,8 +71,8 @@ test_begin_subtest "Format version: too high" test_expect_code 21 "notmuch search --format-version=999 \\*" test_begin_subtest "Show message: multiple filenames" -add_message "[id]=message-id@example.com [filename]=copy1" -add_message "[id]=message-id@example.com [filename]=copy2" +add_message '[id]=message-id@example.com [filename]=copy1 [date]="Fri, 05 Jan 2001 15:43:52 +0000"' +add_message '[id]=message-id@example.com [filename]=copy2 [date]="Fri, 05 Jan 2001 15:43:52 +0000"' cat <<EOF > EXPECTED [ [ diff --git a/test/T670-duplicate-mid.sh b/test/T670-duplicate-mid.sh index ced28a21..f1952555 100755 --- a/test/T670-duplicate-mid.sh +++ b/test/T670-duplicate-mid.sh @@ -6,7 +6,6 @@ add_message '[id]="duplicate"' '[subject]="message 1" [filename]=copy1' add_message '[id]="duplicate"' '[subject]="message 2" [filename]=copy2' test_begin_subtest 'Search for second subject' -test_subtest_known_broken cat <<EOF >EXPECTED MAIL_DIR/copy1 MAIL_DIR/copy2 @@ -16,7 +15,6 @@ test_expect_equal_file EXPECTED OUTPUT add_message '[id]="duplicate"' '[body]="sekrit" [filename]=copy3' test_begin_subtest 'search for body in duplicate file' -test_subtest_known_broken cat <<EOF >EXPECTED MAIL_DIR/copy1 MAIL_DIR/copy2 -- 2.11.0