mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-21 18:38:08 +01:00
lib/message-property: sync removed properties to the database
_notmuch_message_remove_all_properties wasn't syncing the message back to the database but was still invalidating the metadata, giving the impression the properties had actually been removed. Also move the metadata invalidation to _notmuch_message_remove_terms to be closer to what's done in _notmuch_message_modify_property and _notmuch_message_remove_term.
This commit is contained in:
parent
3363349967
commit
fb55ff28a2
3 changed files with 5 additions and 11 deletions
|
@ -142,7 +142,6 @@ _notmuch_message_remove_all_properties (notmuch_message_t *message, const char *
|
||||||
if (status)
|
if (status)
|
||||||
return status;
|
return status;
|
||||||
|
|
||||||
_notmuch_message_invalidate_metadata (message, "property");
|
|
||||||
if (key)
|
if (key)
|
||||||
term_prefix = talloc_asprintf (message, "%s%s%s", _find_prefix ("property"), key,
|
term_prefix = talloc_asprintf (message, "%s%s%s", _find_prefix ("property"), key,
|
||||||
prefix ? "" : "=");
|
prefix ? "" : "=");
|
||||||
|
@ -157,6 +156,9 @@ _notmuch_message_remove_all_properties (notmuch_message_t *message, const char *
|
||||||
return NOTMUCH_STATUS_XAPIAN_EXCEPTION;
|
return NOTMUCH_STATUS_XAPIAN_EXCEPTION;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (! _notmuch_message_frozen (message))
|
||||||
|
_notmuch_message_sync (message);
|
||||||
|
|
||||||
return NOTMUCH_STATUS_SUCCESS;
|
return NOTMUCH_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -719,6 +719,8 @@ _notmuch_message_remove_terms (notmuch_message_t *message, const char *prefix)
|
||||||
/* Ignore failure to remove non-existent term. */
|
/* Ignore failure to remove non-existent term. */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_notmuch_message_invalidate_metadata (message, "property");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -152,7 +152,6 @@ EOF
|
||||||
test_expect_equal_file EXPECTED OUTPUT
|
test_expect_equal_file EXPECTED OUTPUT
|
||||||
|
|
||||||
test_begin_subtest "notmuch_message_remove_all_properties"
|
test_begin_subtest "notmuch_message_remove_all_properties"
|
||||||
test_subtest_known_broken
|
|
||||||
cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR}
|
cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR}
|
||||||
EXPECT0(notmuch_message_remove_all_properties (message, NULL));
|
EXPECT0(notmuch_message_remove_all_properties (message, NULL));
|
||||||
EXPECT0(notmuch_database_destroy(db));
|
EXPECT0(notmuch_database_destroy(db));
|
||||||
|
@ -174,7 +173,6 @@ EOF
|
||||||
test_expect_equal_file EXPECTED OUTPUT
|
test_expect_equal_file EXPECTED OUTPUT
|
||||||
|
|
||||||
test_begin_subtest "notmuch_message_properties: multiple values"
|
test_begin_subtest "notmuch_message_properties: multiple values"
|
||||||
test_subtest_known_broken
|
|
||||||
cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR}
|
cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR}
|
||||||
EXPECT0(notmuch_message_add_property (message, "testkey1", "bob"));
|
EXPECT0(notmuch_message_add_property (message, "testkey1", "bob"));
|
||||||
EXPECT0(notmuch_message_add_property (message, "testkey1", "testvalue2"));
|
EXPECT0(notmuch_message_add_property (message, "testkey1", "testvalue2"));
|
||||||
|
@ -191,7 +189,6 @@ EOF
|
||||||
test_expect_equal_file EXPECTED OUTPUT
|
test_expect_equal_file EXPECTED OUTPUT
|
||||||
|
|
||||||
test_begin_subtest "notmuch_message_properties: prefix"
|
test_begin_subtest "notmuch_message_properties: prefix"
|
||||||
test_subtest_known_broken
|
|
||||||
cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR}
|
cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR}
|
||||||
EXPECT0(notmuch_message_add_property (message, "testkey3", "bob3"));
|
EXPECT0(notmuch_message_add_property (message, "testkey3", "bob3"));
|
||||||
EXPECT0(notmuch_message_add_property (message, "testkey3", "testvalue3"));
|
EXPECT0(notmuch_message_add_property (message, "testkey3", "testvalue3"));
|
||||||
|
@ -246,7 +243,6 @@ EOF
|
||||||
test_expect_equal_file EXPECTED OUTPUT
|
test_expect_equal_file EXPECTED OUTPUT
|
||||||
|
|
||||||
test_begin_subtest "dump message properties"
|
test_begin_subtest "dump message properties"
|
||||||
test_subtest_known_broken
|
|
||||||
cat <<EOF > PROPERTIES
|
cat <<EOF > PROPERTIES
|
||||||
#= 4EFC743A.3060609@april.org fancy%20key%20with%20%c3%a1cc%c3%a8nts=import%20value%20with%20= testkey1=alice testkey1=bob testkey1=testvalue2 testkey3=alice3 testkey3=bob3 testkey3=testvalue3
|
#= 4EFC743A.3060609@april.org fancy%20key%20with%20%c3%a1cc%c3%a8nts=import%20value%20with%20= testkey1=alice testkey1=bob testkey1=testvalue2 testkey3=alice3 testkey3=bob3 testkey3=testvalue3
|
||||||
EOF
|
EOF
|
||||||
|
@ -257,7 +253,6 @@ notmuch dump | grep '^#=' > OUTPUT
|
||||||
test_expect_equal_file PROPERTIES OUTPUT
|
test_expect_equal_file PROPERTIES OUTPUT
|
||||||
|
|
||||||
test_begin_subtest "dump _only_ message properties"
|
test_begin_subtest "dump _only_ message properties"
|
||||||
test_subtest_known_broken
|
|
||||||
cat <<EOF > EXPECTED
|
cat <<EOF > EXPECTED
|
||||||
#notmuch-dump batch-tag:3 properties
|
#notmuch-dump batch-tag:3 properties
|
||||||
#= 4EFC743A.3060609@april.org fancy%20key%20with%20%c3%a1cc%c3%a8nts=import%20value%20with%20= testkey1=alice testkey1=bob testkey1=testvalue2 testkey3=alice3 testkey3=bob3 testkey3=testvalue3
|
#= 4EFC743A.3060609@april.org fancy%20key%20with%20%c3%a1cc%c3%a8nts=import%20value%20with%20= testkey1=alice testkey1=bob testkey1=testvalue2 testkey3=alice3 testkey3=bob3 testkey3=testvalue3
|
||||||
|
@ -267,7 +262,6 @@ test_expect_equal_file EXPECTED OUTPUT
|
||||||
|
|
||||||
|
|
||||||
test_begin_subtest "restore missing message property (single line)"
|
test_begin_subtest "restore missing message property (single line)"
|
||||||
test_subtest_known_broken
|
|
||||||
notmuch dump | grep '^#=' > BEFORE1
|
notmuch dump | grep '^#=' > BEFORE1
|
||||||
cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR}
|
cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR}
|
||||||
EXPECT0(notmuch_message_remove_property (message, "testkey1", "bob"));
|
EXPECT0(notmuch_message_remove_property (message, "testkey1", "bob"));
|
||||||
|
@ -278,7 +272,6 @@ test_expect_equal_file PROPERTIES OUTPUT
|
||||||
|
|
||||||
|
|
||||||
test_begin_subtest "restore missing message property (full dump)"
|
test_begin_subtest "restore missing message property (full dump)"
|
||||||
test_subtest_known_broken
|
|
||||||
notmuch dump > BEFORE2
|
notmuch dump > BEFORE2
|
||||||
cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR}
|
cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR}
|
||||||
EXPECT0(notmuch_message_remove_property (message, "testkey1", "bob"));
|
EXPECT0(notmuch_message_remove_property (message, "testkey1", "bob"));
|
||||||
|
@ -288,7 +281,6 @@ notmuch dump | grep '^#=' > OUTPUT
|
||||||
test_expect_equal_file PROPERTIES OUTPUT
|
test_expect_equal_file PROPERTIES OUTPUT
|
||||||
|
|
||||||
test_begin_subtest "restore clear extra message property"
|
test_begin_subtest "restore clear extra message property"
|
||||||
test_subtest_known_broken
|
|
||||||
cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR}
|
cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR}
|
||||||
EXPECT0(notmuch_message_add_property (message, "testkey1", "charles"));
|
EXPECT0(notmuch_message_add_property (message, "testkey1", "charles"));
|
||||||
EOF
|
EOF
|
||||||
|
@ -322,7 +314,6 @@ EOF
|
||||||
test_expect_equal_file EXPECTED OUTPUT
|
test_expect_equal_file EXPECTED OUTPUT
|
||||||
|
|
||||||
test_begin_subtest "msg.get_properties (python)"
|
test_begin_subtest "msg.get_properties (python)"
|
||||||
test_subtest_known_broken
|
|
||||||
test_python <<'EOF'
|
test_python <<'EOF'
|
||||||
import notmuch
|
import notmuch
|
||||||
db = notmuch.Database(mode=notmuch.Database.MODE.READ_ONLY)
|
db = notmuch.Database(mode=notmuch.Database.MODE.READ_ONLY)
|
||||||
|
@ -338,7 +329,6 @@ EOF
|
||||||
test_expect_equal_file EXPECTED OUTPUT
|
test_expect_equal_file EXPECTED OUTPUT
|
||||||
|
|
||||||
test_begin_subtest "msg.get_properties (python, prefix)"
|
test_begin_subtest "msg.get_properties (python, prefix)"
|
||||||
test_subtest_known_broken
|
|
||||||
test_python <<'EOF'
|
test_python <<'EOF'
|
||||||
import notmuch
|
import notmuch
|
||||||
db = notmuch.Database(mode=notmuch.Database.MODE.READ_ONLY)
|
db = notmuch.Database(mode=notmuch.Database.MODE.READ_ONLY)
|
||||||
|
|
Loading…
Reference in a new issue