Merge branch 'release'

Merge changes for notmuch-insert error handling, debian bugfix release
This commit is contained in:
David Bremner 2016-12-07 07:28:46 -04:00
commit 71f1228a51
6 changed files with 58 additions and 18 deletions

6
debian/changelog vendored
View file

@ -1,3 +1,9 @@
notmuch (0.23.3-3) unstable; urgency=medium
* Disable gdb using tests on kfreebsd-*, due to apparent gdb breakage
-- David Bremner <bremner@debian.org> Mon, 05 Dec 2016 08:25:32 -0400
notmuch (0.23.3-2) unstable; urgency=medium notmuch (0.23.3-2) unstable; urgency=medium
* Add missing depends to notmuch-emacs. Thanks to micah for the * Add missing depends to notmuch-emacs. Thanks to micah for the

2
debian/control vendored
View file

@ -22,7 +22,7 @@ Build-Depends:
ruby, ruby-dev (>>1:1.9.3~), ruby, ruby-dev (>>1:1.9.3~),
emacs24-nox | emacs24 (>=24~) | emacs24-lucid (>=24~) | emacs24-nox | emacs24 (>=24~) | emacs24-lucid (>=24~) |
emacs23-nox | emacs23 (>=23~) | emacs23-lucid (>=23~), emacs23-nox | emacs23 (>=23~) | emacs23-lucid (>=23~),
gdb [!s390x !ia64 !armel !ppc64el !mips !mipsel !mips64el], gdb [!s390x !ia64 !armel !ppc64el !mips !mipsel !mips64el !kfreebsd-any],
dtach (>= 0.8), dtach (>= 0.8),
gpgsm <!nocheck>, gpgsm <!nocheck>,
gnupg <!nocheck>, gnupg <!nocheck>,

View file

@ -489,6 +489,9 @@ print_status_database (const char *loc,
const notmuch_database_t *database, const notmuch_database_t *database,
notmuch_status_t status); notmuch_status_t status);
int
status_to_exit (notmuch_status_t status);
#include "command-line-arguments.h" #include "command-line-arguments.h"
extern char *notmuch_requested_db_uuid; extern char *notmuch_requested_db_uuid;

View file

@ -532,19 +532,20 @@ notmuch_insert_command (notmuch_config_t *config, int argc, char *argv[])
action.sa_flags = 0; action.sa_flags = 0;
sigaction (SIGINT, &action, NULL); sigaction (SIGINT, &action, NULL);
if (notmuch_database_open (notmuch_config_get_database_path (config),
NOTMUCH_DATABASE_MODE_READ_WRITE, &notmuch))
return EXIT_FAILURE;
notmuch_exit_if_unmatched_db_uuid (notmuch);
/* Write the message to the Maildir new directory. */ /* Write the message to the Maildir new directory. */
newpath = maildir_write_new (config, STDIN_FILENO, maildir); newpath = maildir_write_new (config, STDIN_FILENO, maildir);
if (! newpath) { if (! newpath) {
notmuch_database_destroy (notmuch);
return EXIT_FAILURE; return EXIT_FAILURE;
} }
status = notmuch_database_open (notmuch_config_get_database_path (config),
NOTMUCH_DATABASE_MODE_READ_WRITE, &notmuch);
if (status)
return keep ? NOTMUCH_STATUS_SUCCESS : status_to_exit (status);
notmuch_exit_if_unmatched_db_uuid (notmuch);
/* Index the message. */ /* Index the message. */
status = add_file (notmuch, newpath, tag_ops, synchronize_flags, keep); status = add_file (notmuch, newpath, tag_ops, synchronize_flags, keep);
@ -577,5 +578,5 @@ notmuch_insert_command (notmuch_config_t *config, int argc, char *argv[])
notmuch_run_hook (db_path, "post-insert"); notmuch_run_hook (db_path, "post-insert");
} }
return status ? EXIT_FAILURE : EXIT_SUCCESS; return status_to_exit (status);
} }

View file

@ -36,3 +36,19 @@ print_status_database (const char *loc,
} }
return status; return status;
} }
int
status_to_exit (notmuch_status_t status)
{
switch (status) {
case NOTMUCH_STATUS_SUCCESS:
return EXIT_SUCCESS;
case NOTMUCH_STATUS_OUT_OF_MEMORY:
case NOTMUCH_STATUS_XAPIAN_EXCEPTION:
case NOTMUCH_STATUS_DUPLICATE_MESSAGE_ID:
case NOTMUCH_STATUS_FILE_ERROR:
return EX_TEMPFAIL;
default:
return EXIT_FAILURE;
}
}

View file

@ -189,7 +189,6 @@ notmuch config set new.tags $OLDCONFIG
for code in OUT_OF_MEMORY XAPIAN_EXCEPTION FILE_NOT_EMAIL \ for code in OUT_OF_MEMORY XAPIAN_EXCEPTION FILE_NOT_EMAIL \
READ_ONLY_DATABASE UPGRADE_REQUIRED PATH_ERROR; do READ_ONLY_DATABASE UPGRADE_REQUIRED PATH_ERROR; do
gen_insert_msg
cat <<EOF > index-file-$code.gdb cat <<EOF > index-file-$code.gdb
set breakpoint pending on set breakpoint pending on
set logging file index-file-$code.log set logging file index-file-$code.log
@ -201,15 +200,30 @@ continue
end end
run run
EOF EOF
test_begin_subtest "error exit when add_message returns $code" done
gdb --batch-silent --return-child-result -x index-file-$code.gdb \
--args notmuch insert < $gen_msg_filename
test_expect_equal $? 1
test_begin_subtest "success exit with --keep when add_message returns $code" gen_insert_msg
gdb --batch-silent --return-child-result -x index-file-$code.gdb \
--args notmuch insert --keep < $gen_msg_filename for code in FILE_NOT_EMAIL READ_ONLY_DATABASE UPGRADE_REQUIRED PATH_ERROR; do
test_expect_equal $? 0 test_expect_code 1 "EXIT_FAILURE when add_message returns $code" \
"gdb --batch-silent --return-child-result \
-ex 'set args insert < $gen_msg_filename' \
-x index-file-$code.gdb notmuch"
test_expect_code 0 "success exit with --keep when add_message returns $code" \
"gdb --batch-silent --return-child-result \
-ex 'set args insert --keep < $gen_msg_filename' \
-x index-file-$code.gdb notmuch"
done
for code in OUT_OF_MEMORY XAPIAN_EXCEPTION ; do
test_expect_code 75 "EX_TEMPFAIL when add_message returns $code" \
"gdb --batch-silent --return-child-result \
-ex 'set args insert < $gen_msg_filename' \
-x index-file-$code.gdb notmuch"
test_expect_code 0 "success exit with --keep when add_message returns $code" \
"gdb --batch-silent --return-child-result \
-ex 'set args insert --keep < $gen_msg_filename' \
-x index-file-$code.gdb notmuch"
done done
test_done test_done