aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Bremner <david@tethera.net>2016-12-07 07:28:46 -0400
committerDavid Bremner <david@tethera.net>2016-12-07 07:30:12 -0400
commit71f1228a518f08e94dc1ea4e2147f80d3484c615 (patch)
treecfc88070f6c172511d51134045101b38fcda1b65
parente682c8f8f84fe5f7af30280bd8ea437772e154fa (diff)
parentd74c5345704136611f993ca38e0d035b1da798b6 (diff)
Merge branch 'release'
Merge changes for notmuch-insert error handling, debian bugfix release
-rw-r--r--debian/changelog6
-rw-r--r--debian/control2
-rw-r--r--notmuch-client.h3
-rw-r--r--notmuch-insert.c17
-rw-r--r--status.c16
-rwxr-xr-xtest/T070-insert.sh32
6 files changed, 58 insertions, 18 deletions
diff --git a/debian/changelog b/debian/changelog
index 7c1a5303..9c2ebf75 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -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
* Add missing depends to notmuch-emacs. Thanks to micah for the
diff --git a/debian/control b/debian/control
index ba8642b4..e71a6716 100644
--- a/debian/control
+++ b/debian/control
@@ -22,7 +22,7 @@ Build-Depends:
ruby, ruby-dev (>>1:1.9.3~),
emacs24-nox | emacs24 (>=24~) | emacs24-lucid (>=24~) |
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),
gpgsm <!nocheck>,
gnupg <!nocheck>,
diff --git a/notmuch-client.h b/notmuch-client.h
index 793f32ec..d026e600 100644
--- a/notmuch-client.h
+++ b/notmuch-client.h
@@ -489,6 +489,9 @@ print_status_database (const char *loc,
const notmuch_database_t *database,
notmuch_status_t status);
+int
+status_to_exit (notmuch_status_t status);
+
#include "command-line-arguments.h"
extern char *notmuch_requested_db_uuid;
diff --git a/notmuch-insert.c b/notmuch-insert.c
index 131f09e2..bc96af0e 100644
--- a/notmuch-insert.c
+++ b/notmuch-insert.c
@@ -532,19 +532,20 @@ notmuch_insert_command (notmuch_config_t *config, int argc, char *argv[])
action.sa_flags = 0;
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. */
newpath = maildir_write_new (config, STDIN_FILENO, maildir);
if (! newpath) {
- notmuch_database_destroy (notmuch);
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. */
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");
}
- return status ? EXIT_FAILURE : EXIT_SUCCESS;
+ return status_to_exit (status);
}
diff --git a/status.c b/status.c
index 45d3fb4e..8bc2fe4b 100644
--- a/status.c
+++ b/status.c
@@ -36,3 +36,19 @@ print_status_database (const char *loc,
}
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;
+ }
+}
diff --git a/test/T070-insert.sh b/test/T070-insert.sh
index c2485bb2..57472b91 100755
--- a/test/T070-insert.sh
+++ b/test/T070-insert.sh
@@ -189,7 +189,6 @@ notmuch config set new.tags $OLDCONFIG
for code in OUT_OF_MEMORY XAPIAN_EXCEPTION FILE_NOT_EMAIL \
READ_ONLY_DATABASE UPGRADE_REQUIRED PATH_ERROR; do
-gen_insert_msg
cat <<EOF > index-file-$code.gdb
set breakpoint pending on
set logging file index-file-$code.log
@@ -201,15 +200,30 @@ continue
end
run
EOF
-test_begin_subtest "error exit when add_message returns $code"
-gdb --batch-silent --return-child-result -x index-file-$code.gdb \
- --args notmuch insert < $gen_msg_filename
-test_expect_equal $? 1
+done
+
+gen_insert_msg
+
+for code in FILE_NOT_EMAIL READ_ONLY_DATABASE UPGRADE_REQUIRED PATH_ERROR; do
+ 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
-test_begin_subtest "success exit with --keep when add_message returns $code"
-gdb --batch-silent --return-child-result -x index-file-$code.gdb \
- --args notmuch insert --keep < $gen_msg_filename
-test_expect_equal $? 0
+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
test_done