From 85da95e26699a404b3bb3e1c01ea7998a1284abd Mon Sep 17 00:00:00 2001 From: David Bremner Date: Wed, 22 Jul 2020 07:51:18 -0300 Subject: [PATCH] test: move notmuch_message_* tests to their own file This is for consistency with the recently added tests for notmuch_database_*. --- test/T560-lib-error.sh | 378 -------------------------------------- test/T566-lib-message.sh | 380 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 380 insertions(+), 378 deletions(-) create mode 100755 test/T566-lib-message.sh diff --git a/test/T560-lib-error.sh b/test/T560-lib-error.sh index 68180e41..70df292a 100755 --- a/test/T560-lib-error.sh +++ b/test/T560-lib-error.sh @@ -318,382 +318,4 @@ EOF test_expect_equal_file EXPECTED OUTPUT.clean restore_database -cat < c_head2 -#include -#include -#include -int main (int argc, char** argv) -{ - notmuch_database_t *db; - notmuch_status_t stat; - char *msg = NULL; - notmuch_message_t *message = NULL; - const char *id = "1258471718-6781-1-git-send-email-dottedmag@dottedmag.net"; - - stat = notmuch_database_open_verbose (argv[1], NOTMUCH_DATABASE_MODE_READ_WRITE, &db, &msg); - if (stat != NOTMUCH_STATUS_SUCCESS) { - fprintf (stderr, "error opening database: %d %s\n", stat, msg ? msg : ""); - exit (1); - } - EXPECT0(notmuch_database_find_message (db, id, &message)); - EXPECT0(notmuch_database_close (db)); -EOF - -test_begin_subtest "Handle getting message-id from closed database" -cat c_head2 - c_tail <<'EOF' | test_C ${MAIL_DIR} - { - const char *id2; - id2=notmuch_message_get_message_id (message); - printf("%d\n%d\n", message != NULL, id2==NULL); - stat = NOTMUCH_STATUS_XAPIAN_EXCEPTION; - } -EOF -cat < EXPECTED -== stdout == -1 -1 -== stderr == -A Xapian exception occurred at lib/message.cc:XXX: Database has been closed -EOF -test_expect_equal_file EXPECTED OUTPUT - -test_begin_subtest "Handle getting thread-id from closed database" -cat c_head2 - c_tail <<'EOF' | test_C ${MAIL_DIR} - { - const char *id2; - id2=notmuch_message_get_thread_id (message); - printf("%d\n%d\n", message != NULL, id2==NULL); - stat = NOTMUCH_STATUS_XAPIAN_EXCEPTION; - } -EOF -cat < EXPECTED -== stdout == -1 -1 -== stderr == -A Xapian exception occurred at lib/message.cc:XXX: Database has been closed -EOF -test_expect_equal_file EXPECTED OUTPUT - -test_begin_subtest "Handle getting header from closed database" -cat c_head2 - c_tail <<'EOF' | test_C ${MAIL_DIR} - { - const char *from; - from=notmuch_message_get_header (message, "from"); - printf("%s\n%d\n", id, from == NULL); - stat = NOTMUCH_STATUS_XAPIAN_EXCEPTION; - } -EOF -cat < EXPECTED -== stdout == -1258471718-6781-1-git-send-email-dottedmag@dottedmag.net -1 -== stderr == -A Xapian exception occurred at lib/message.cc:XXX: Database has been closed -EOF -test_expect_equal_file EXPECTED OUTPUT - -# XXX TODO: test on a message from notmuch_thread_get_toplevel_messages -# XXX this test only tests the trivial code path -test_begin_subtest "Handle getting replies from closed database" -cat c_head2 - c_tail <<'EOF' | test_C ${MAIL_DIR} - { - notmuch_messages_t *replies; - replies = notmuch_message_get_replies (message); - printf("%d\n%d\n", message != NULL, replies==NULL); - stat = NOTMUCH_STATUS_XAPIAN_EXCEPTION; - } -EOF -cat < EXPECTED -== stdout == -1 -1 -== stderr == -EOF -test_expect_equal_file EXPECTED OUTPUT - -test_begin_subtest "Handle getting message filename from closed database" -cat c_head2 - c_tail <<'EOF' | test_C ${MAIL_DIR} - { - const char *filename; - filename = notmuch_message_get_filename (message); - printf("%d\n%d\n", message != NULL, filename == NULL); - stat = NOTMUCH_STATUS_XAPIAN_EXCEPTION; - } -EOF -cat < EXPECTED -== stdout == -1 -1 -== stderr == -A Xapian exception occurred at lib/message.cc:XXX: Database has been closed -EOF -test_expect_equal_file EXPECTED OUTPUT - -test_begin_subtest "Handle getting all message filenames from closed database" -cat c_head2 - c_tail <<'EOF' | test_C ${MAIL_DIR} - { - notmuch_filenames_t *filenames; - filenames = notmuch_message_get_filenames (message); - printf("%d\n%d\n", message != NULL, filenames == NULL); - stat = NOTMUCH_STATUS_XAPIAN_EXCEPTION; - } -EOF -cat < EXPECTED -== stdout == -1 -1 -== stderr == -A Xapian exception occurred at lib/message.cc:XXX: Database has been closed -EOF -test_expect_equal_file EXPECTED OUTPUT - -test_begin_subtest "Handle getting ghost flag from closed database" -cat c_head2 - c_tail <<'EOF' | test_C ${MAIL_DIR} - { - notmuch_bool_t result; - result = notmuch_message_get_flag (message, NOTMUCH_MESSAGE_FLAG_GHOST); - printf("%d\n%d\n", message != NULL, result == FALSE); - stat = NOTMUCH_STATUS_XAPIAN_EXCEPTION; - } -EOF -cat < EXPECTED -== stdout == -1 -1 -== stderr == -A Xapian exception occurred at lib/message.cc:XXX: Database has been closed -EOF -test_expect_equal_file EXPECTED OUTPUT - -test_begin_subtest "Handle getting date from closed database" -cat c_head2 - c_tail <<'EOF' | test_C ${MAIL_DIR} - { - time_t result; - result = notmuch_message_get_date (message); - printf("%d\n%d\n", message != NULL, result == 0); - stat = NOTMUCH_STATUS_XAPIAN_EXCEPTION; - } -EOF -cat < EXPECTED -== stdout == -1 -1 -== stderr == -A Xapian exception occurred at lib/message.cc:XXX: Database has been closed -EOF -test_expect_equal_file EXPECTED OUTPUT - -test_begin_subtest "Handle getting tags from closed database" -cat c_head2 - c_tail <<'EOF' | test_C ${MAIL_DIR} - { - notmuch_tags_t *result; - result = notmuch_message_get_tags (message); - printf("%d\n%d\n", message != NULL, result == NULL); - stat = NOTMUCH_STATUS_XAPIAN_EXCEPTION; - } -EOF -cat < EXPECTED -== stdout == -1 -1 -== stderr == -A Xapian exception occurred at lib/message.cc:XXX: Database has been closed -EOF -test_expect_equal_file EXPECTED OUTPUT - -test_begin_subtest "Handle counting files from closed database" -cat c_head2 - c_tail <<'EOF' | test_C ${MAIL_DIR} - { - int result; - result = notmuch_message_count_files (message); - printf("%d\n%d\n", message != NULL, result < 0); - stat = NOTMUCH_STATUS_XAPIAN_EXCEPTION; - } -EOF -cat < EXPECTED -== stdout == -1 -1 -== stderr == -A Xapian exception occurred at lib/message.cc:XXX: Database has been closed -EOF -test_expect_equal_file EXPECTED OUTPUT - -test_begin_subtest "Handle adding tag with closed database" -cat c_head2 - c_tail <<'EOF' | test_C ${MAIL_DIR} - { - stat = notmuch_message_add_tag (message, "boom"); - printf("%d\n%d\n", message != NULL, stat == NOTMUCH_STATUS_XAPIAN_EXCEPTION); - } -EOF -cat < EXPECTED -== stdout == -1 -1 -== stderr == -A Xapian exception occurred at lib/message.cc:XXX: Database has been closed -EOF -test_expect_equal_file EXPECTED OUTPUT - -test_begin_subtest "Handle removing tag with closed database" -cat c_head2 - c_tail <<'EOF' | test_C ${MAIL_DIR} - { - stat = notmuch_message_remove_tag (message, "boom"); - printf("%d\n%d\n", message != NULL, stat == NOTMUCH_STATUS_XAPIAN_EXCEPTION); - } -EOF -cat < EXPECTED -== stdout == -1 -1 -== stderr == -A Xapian exception occurred at lib/message.cc:XXX: Database has been closed -EOF -test_expect_equal_file EXPECTED OUTPUT - -test_begin_subtest "Handle read maildir flag with closed database" -cat c_head2 - c_tail <<'EOF' | test_C ${MAIL_DIR} - { - notmuch_bool_t is_set = -1; - is_set = notmuch_message_has_maildir_flag (message, 'S'); - printf("%d\n%d\n", message != NULL, is_set == FALSE || is_set == TRUE); - stat = NOTMUCH_STATUS_XAPIAN_EXCEPTION; - } -EOF -cat < EXPECTED -== stdout == -1 -1 -== stderr == -A Xapian exception occurred at lib/message.cc:XXX: Database has been closed -EOF -test_expect_equal_file EXPECTED OUTPUT - -test_begin_subtest "Handle checking maildir flag with closed db (new API)" -cat c_head2 - c_tail <<'EOF' | test_C ${MAIL_DIR} - { - notmuch_bool_t out; - stat = notmuch_message_has_maildir_flag_st (message, 'S', &out); - printf("%d\n%d\n", message != NULL, stat == NOTMUCH_STATUS_XAPIAN_EXCEPTION); - } -EOF -cat < EXPECTED -== stdout == -1 -1 -== stderr == -A Xapian exception occurred at lib/message.cc:XXX: Database has been closed -EOF -test_expect_equal_file EXPECTED OUTPUT - -test_begin_subtest "Handle converting maildir flags to tags with closed db" -cat c_head2 - c_tail <<'EOF' | test_C ${MAIL_DIR} - { - stat = notmuch_message_maildir_flags_to_tags (message); - printf("%d\n%d\n", message != NULL, stat == NOTMUCH_STATUS_XAPIAN_EXCEPTION); - } -EOF -cat < EXPECTED -== stdout == -1 -1 -== stderr == -A Xapian exception occurred at lib/message.cc:XXX: Database has been closed -EOF -test_expect_equal_file EXPECTED OUTPUT - -test_begin_subtest "Handle removing all tags with closed db" -cat c_head2 - c_tail <<'EOF' | test_C ${MAIL_DIR} - { - stat = notmuch_message_remove_all_tags (message); - printf("%d\n%d\n", message != NULL, stat == NOTMUCH_STATUS_XAPIAN_EXCEPTION); - } -EOF -cat < EXPECTED -== stdout == -1 -1 -== stderr == -A Xapian exception occurred at lib/message.cc:XXX: Database has been closed -EOF -test_expect_equal_file EXPECTED OUTPUT - -test_begin_subtest "Handle freezing message with closed db" -cat c_head2 - c_tail <<'EOF' | test_C ${MAIL_DIR} - { - stat = notmuch_message_freeze (message); - printf("%d\n%d\n", message != NULL, stat == NOTMUCH_STATUS_SUCCESS); - } -EOF -cat < EXPECTED -== stdout == -1 -1 -== stderr == -EOF -test_expect_equal_file EXPECTED OUTPUT - -test_begin_subtest "Handle thawing message with closed db" -cat c_head2 - c_tail <<'EOF' | test_C ${MAIL_DIR} - { - stat = notmuch_message_thaw (message); - printf("%d\n%d\n", message != NULL, stat == NOTMUCH_STATUS_UNBALANCED_FREEZE_THAW); - } -EOF -cat < EXPECTED -== stdout == -1 -1 -== stderr == -EOF -test_expect_equal_file EXPECTED OUTPUT - -test_begin_subtest "Handle destroying message with closed db" -cat c_head2 - c_tail <<'EOF' | test_C ${MAIL_DIR} - { - notmuch_message_destroy (message); - printf("%d\n%d\n", message != NULL, 1); - } -EOF -cat < EXPECTED -== stdout == -1 -1 -== stderr == -EOF -test_expect_equal_file EXPECTED OUTPUT - -test_begin_subtest "Handle retrieving closed db from message" -cat c_head2 - c_tail <<'EOF' | test_C ${MAIL_DIR} - { - notmuch_database_t *db2; - db2 = notmuch_message_get_database (message); - printf("%d\n%d\n", message != NULL, db == db2); - } -EOF -cat < EXPECTED -== stdout == -1 -1 -== stderr == -EOF -test_expect_equal_file EXPECTED OUTPUT - -test_begin_subtest "Handle reindexing message with closed db" -cat c_head2 - c_tail <<'EOF' | test_C ${MAIL_DIR} - { - stat = notmuch_message_reindex (message, NULL); - printf("%d\n%d\n", message != NULL, stat == NOTMUCH_STATUS_XAPIAN_EXCEPTION); - } -EOF -cat < EXPECTED -== stdout == -1 -1 -== stderr == -A Xapian exception occurred at lib/message.cc:XXX: Database has been closed -EOF -test_expect_equal_file EXPECTED OUTPUT - test_done diff --git a/test/T566-lib-message.sh b/test/T566-lib-message.sh new file mode 100755 index 00000000..0c5575a9 --- /dev/null +++ b/test/T566-lib-message.sh @@ -0,0 +1,380 @@ +#!/usr/bin/env bash +test_description="API tests for notmuch_message_*" + +. $(dirname "$0")/test-lib.sh || exit 1 + +add_email_corpus + +test_begin_subtest "building database" +test_expect_success "NOTMUCH_NEW" + +cat <<'EOF' > c_tail + if (stat) { + const char *stat_str = notmuch_database_status_string (db); + if (stat_str) + fputs (stat_str, stderr); + } + +} +EOF + +cat < c_head +#include +#include +#include +int main (int argc, char** argv) +{ + notmuch_database_t *db; + notmuch_status_t stat; + char *msg = NULL; + notmuch_message_t *message = NULL; + const char *id = "1258471718-6781-1-git-send-email-dottedmag@dottedmag.net"; + + stat = notmuch_database_open_verbose (argv[1], NOTMUCH_DATABASE_MODE_READ_WRITE, &db, &msg); + if (stat != NOTMUCH_STATUS_SUCCESS) { + fprintf (stderr, "error opening database: %d %s\n", stat, msg ? msg : ""); + exit (1); + } + EXPECT0(notmuch_database_find_message (db, id, &message)); + EXPECT0(notmuch_database_close (db)); +EOF + +test_begin_subtest "Handle getting message-id from closed database" +cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR} + { + const char *id2; + id2=notmuch_message_get_message_id (message); + printf("%d\n%d\n", message != NULL, id2==NULL); + } +EOF +cat < EXPECTED +== stdout == +1 +1 +== stderr == +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_begin_subtest "Handle getting thread-id from closed database" +cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR} + { + const char *id2; + id2=notmuch_message_get_thread_id (message); + printf("%d\n%d\n", message != NULL, id2==NULL); + } +EOF +cat < EXPECTED +== stdout == +1 +1 +== stderr == +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_begin_subtest "Handle getting header from closed database" +cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR} + { + const char *from; + from=notmuch_message_get_header (message, "from"); + printf("%s\n%d\n", id, from == NULL); + } +EOF +cat < EXPECTED +== stdout == +1258471718-6781-1-git-send-email-dottedmag@dottedmag.net +1 +== stderr == +EOF +test_expect_equal_file EXPECTED OUTPUT + +# XXX TODO: test on a message from notmuch_thread_get_toplevel_messages +# XXX this test only tests the trivial code path +test_begin_subtest "Handle getting replies from closed database" +cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR} + { + notmuch_messages_t *replies; + replies = notmuch_message_get_replies (message); + printf("%d\n%d\n", message != NULL, replies==NULL); + } +EOF +cat < EXPECTED +== stdout == +1 +1 +== stderr == +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_begin_subtest "Handle getting message filename from closed database" +cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR} + { + const char *filename; + filename = notmuch_message_get_filename (message); + printf("%d\n%d\n", message != NULL, filename == NULL); + } +EOF +cat < EXPECTED +== stdout == +1 +1 +== stderr == +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_begin_subtest "Handle getting all message filenames from closed database" +cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR} + { + notmuch_filenames_t *filenames; + filenames = notmuch_message_get_filenames (message); + printf("%d\n%d\n", message != NULL, filenames == NULL); + } +EOF +cat < EXPECTED +== stdout == +1 +1 +== stderr == +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_begin_subtest "Handle getting ghost flag from closed database" +cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR} + { + notmuch_bool_t result; + result = notmuch_message_get_flag (message, NOTMUCH_MESSAGE_FLAG_GHOST); + printf("%d\n%d\n", message != NULL, result == FALSE); + } +EOF +cat < EXPECTED +== stdout == +1 +1 +== stderr == +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_begin_subtest "Handle getting date from closed database" +cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR} + { + time_t result; + result = notmuch_message_get_date (message); + printf("%d\n%d\n", message != NULL, result == 0); + } +EOF +cat < EXPECTED +== stdout == +1 +1 +== stderr == +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_begin_subtest "Handle getting tags from closed database" +cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR} + { + notmuch_tags_t *result; + result = notmuch_message_get_tags (message); + printf("%d\n%d\n", message != NULL, result == NULL); + } +EOF +cat < EXPECTED +== stdout == +1 +1 +== stderr == +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_begin_subtest "Handle counting files from closed database" +cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR} + { + int result; + result = notmuch_message_count_files (message); + printf("%d\n%d\n", message != NULL, result < 0); + } +EOF +cat < EXPECTED +== stdout == +1 +1 +== stderr == +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_begin_subtest "Handle adding tag with closed database" +cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR} + { + notmuch_status_t status; + status = notmuch_message_add_tag (message, "boom"); + printf("%d\n%d\n", message != NULL, status == NOTMUCH_STATUS_XAPIAN_EXCEPTION); + } +EOF +cat < EXPECTED +== stdout == +1 +1 +== stderr == +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_begin_subtest "Handle removing tag with closed database" +cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR} + { + notmuch_status_t status; + status = notmuch_message_remove_tag (message, "boom"); + printf("%d\n%d\n", message != NULL, status == NOTMUCH_STATUS_XAPIAN_EXCEPTION); + } +EOF +cat < EXPECTED +== stdout == +1 +1 +== stderr == +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_begin_subtest "Handle read maildir flag with closed database" +cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR} + { + notmuch_bool_t is_set = -1; + is_set = notmuch_message_has_maildir_flag (message, 'S'); + printf("%d\n%d\n", message != NULL, is_set == FALSE || is_set == TRUE); + } +EOF +cat < EXPECTED +== stdout == +1 +1 +== stderr == +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_begin_subtest "Handle checking maildir flag with closed db (new API)" +cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR} + { + notmuch_status_t status; + notmuch_bool_t out; + status = notmuch_message_has_maildir_flag_st (message, 'S', &out); + printf("%d\n%d\n", message != NULL, status == NOTMUCH_STATUS_XAPIAN_EXCEPTION); + } +EOF +cat < EXPECTED +== stdout == +1 +1 +== stderr == +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_begin_subtest "Handle converting maildir flags to tags with closed db" +cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR} + { + notmuch_status_t status; + status = notmuch_message_maildir_flags_to_tags (message); + printf("%d\n%d\n", message != NULL, status == NOTMUCH_STATUS_XAPIAN_EXCEPTION); + } +EOF +cat < EXPECTED +== stdout == +1 +1 +== stderr == +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_begin_subtest "Handle removing all tags with closed db" +cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR} + { + notmuch_status_t status; + status = notmuch_message_remove_all_tags (message); + printf("%d\n%d\n", message != NULL, status == NOTMUCH_STATUS_XAPIAN_EXCEPTION); + } +EOF +cat < EXPECTED +== stdout == +1 +1 +== stderr == +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_begin_subtest "Handle freezing message with closed db" +cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR} + { + notmuch_status_t status; + status = notmuch_message_freeze (message); + printf("%d\n%d\n", message != NULL, status == NOTMUCH_STATUS_SUCCESS); + } +EOF +cat < EXPECTED +== stdout == +1 +1 +== stderr == +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_begin_subtest "Handle thawing message with closed db" +cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR} + { + notmuch_status_t status; + status = notmuch_message_thaw (message); + printf("%d\n%d\n", message != NULL, status == NOTMUCH_STATUS_UNBALANCED_FREEZE_THAW); + } +EOF +cat < EXPECTED +== stdout == +1 +1 +== stderr == +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_begin_subtest "Handle destroying message with closed db" +cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR} + { + notmuch_message_destroy (message); + printf("%d\n%d\n", message != NULL, 1); + } +EOF +cat < EXPECTED +== stdout == +1 +1 +== stderr == +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_begin_subtest "Handle retrieving closed db from message" +cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR} + { + notmuch_database_t *db2; + db2 = notmuch_message_get_database (message); + printf("%d\n%d\n", message != NULL, db == db2); + } +EOF +cat < EXPECTED +== stdout == +1 +1 +== stderr == +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_begin_subtest "Handle reindexing message with closed db" +cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR} + { + notmuch_status_t status; + status = notmuch_message_reindex (message, NULL); + printf("%d\n%d\n", message != NULL, status == NOTMUCH_STATUS_XAPIAN_EXCEPTION); + } +EOF +cat < EXPECTED +== stdout == +1 +1 +== stderr == +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_done -- 2.43.0