X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=test%2FT610-message-property.sh;h=b87742305f506627421c5a577bfff0fe5ab13e36;hp=74b3f5a1811f5fa6664f157d28480d6214b25cf6;hb=488e91f42b95c116b387212c90ea47c43c716f5b;hpb=040c3236afcf95bead0324a48c2e0b9cd7934993 diff --git a/test/T610-message-property.sh b/test/T610-message-property.sh index 74b3f5a1..b8774230 100755 --- a/test/T610-message-property.sh +++ b/test/T610-message-property.sh @@ -100,6 +100,41 @@ cat <<'EOF' >EXPECTED EOF test_expect_equal_file EXPECTED OUTPUT +test_begin_subtest "testing string map binary search (via message properties)" +cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR} +{ + char *keys[] = {"a", "b", "c", "d", "e", NULL}; + for (int i=0; keys[i]; i++) + EXPECT0(notmuch_message_add_property (message, keys[i], keys[i])); + + for (int i=0; keys[i]; i++) { + EXPECT0(notmuch_message_get_property (message, keys[i], &val)); + printf("%s = %s\n", keys[i], val); + } + + for (int i=0; keys[i]; i++) { + EXPECT0(notmuch_message_remove_property (message, keys[i], keys[i])); + EXPECT0(notmuch_message_get_property (message, keys[i], &val)); + printf("%s = %s\n", keys[i], val == NULL ? "NULL" : val); + } +} +EOF +cat < EXPECTED +== stdout == +a = a +b = b +c = c +d = d +e = e +a = NULL +b = NULL +c = NULL +d = NULL +e = NULL +== stderr == +EOF +test_expect_equal_file EXPECTED OUTPUT + test_begin_subtest "notmuch_message_get_properties: empty list" cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR} { @@ -151,6 +186,18 @@ EXPECT0(notmuch_message_add_property (message, "testkey3", "testvalue3")); EXPECT0(notmuch_message_add_property (message, "testkey3", "alice3")); print_properties (message, "testkey", FALSE); EOF +# expected: 4 values for testkey1, 3 values for testkey3 +# they are not guaranteed to be sorted, so sort them, leaving the first +# line '== stdout ==' and the end ('== stderr ==' and whatever error +# may have been printed) alone +mv OUTPUT unsorted_OUTPUT +awk ' NR == 1 { print; next } \ + NR < 6 { print | "sort"; next } \ + NR == 6 { close("sort") } \ + NR < 9 { print | "sort"; next } \ + NR == 9 { close("sort") } \ + { print }' unsorted_OUTPUT > OUTPUT +rm unsorted_OUTPUT cat <<'EOF' >EXPECTED == stdout == alice @@ -256,4 +303,63 @@ id:4EFC743A.3060609@april.org EOF test_expect_equal_file EXPECTED OUTPUT +test_begin_subtest "msg.get_property (python)" +test_python <<'EOF' +import notmuch +db = notmuch.Database(mode=notmuch.Database.MODE.READ_WRITE) +msg = db.find_message("4EFC743A.3060609@april.org") +print("testkey1 = {0}".format(msg.get_property("testkey1"))) +print("testkey3 = {0}".format(msg.get_property("testkey3"))) +EOF +cat <<'EOF' > EXPECTED +testkey1 = alice +testkey3 = alice3 +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_begin_subtest "msg.get_properties (python)" +test_python <<'EOF' +import notmuch +db = notmuch.Database(mode=notmuch.Database.MODE.READ_ONLY) +msg = db.find_message("4EFC743A.3060609@april.org") +for (key,val) in msg.get_properties("testkey1"): + print("{0} = {1}".format(key,val)) +EOF +cat <<'EOF' > EXPECTED +testkey1 = alice +testkey1 = bob +testkey1 = testvalue1 +testkey1 = testvalue2 +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_begin_subtest "msg.get_properties (python, prefix)" +test_python <<'EOF' +import notmuch +db = notmuch.Database(mode=notmuch.Database.MODE.READ_ONLY) +msg = db.find_message("4EFC743A.3060609@april.org") +for (key,val) in msg.get_properties("testkey"): + print("{0} = {1}".format(key,val)) +EOF +cat <<'EOF' > EXPECTED +testkey1 = alice +testkey1 = bob +testkey1 = testvalue1 +testkey1 = testvalue2 +testkey3 = alice3 +testkey3 = bob3 +testkey3 = testvalue3 +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_begin_subtest "msg.get_properties (python, exact)" +test_python <<'EOF' +import notmuch +db = notmuch.Database(mode=notmuch.Database.MODE.READ_ONLY) +msg = db.find_message("4EFC743A.3060609@april.org") +for (key,val) in msg.get_properties("testkey",True): + print("{0} = {1}".format(key,val)) +EOF +test_expect_equal_file /dev/null OUTPUT + test_done