From e682c8f8f84fe5f7af30280bd8ea437772e154fa Mon Sep 17 00:00:00 2001 From: Jani Nikula Date: Sun, 27 Nov 2016 11:59:34 +0200 Subject: [PATCH] test: check the handling of files vanishing between scandir and indexing Add a file for scandir to find, but use gdb to remove it before it gets indexed. --- test/T050-new.sh | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/test/T050-new.sh b/test/T050-new.sh index beeb574a..2bc799d2 100755 --- a/test/T050-new.sh +++ b/test/T050-new.sh @@ -298,4 +298,38 @@ output=$(NOTMUCH_NEW --debug 2>&1 | sed 's/: .*$//' ) chmod u+w ${MAIL_DIR}/.notmuch/xapian/*.${db_ending} test_expect_equal "$output" "A Xapian exception occurred opening database" + +test_begin_subtest "Handle files vanishing between scandir and add_file" + +# A file for scandir to find. It won't get indexed, so can be empty. +touch ${MAIL_DIR}/vanish + +# Breakpoint to remove the file before indexing +cat < notmuch-new-vanish.gdb +set breakpoint pending on +set logging file notmuch-new-vanish-gdb.log +set logging on +break add_file +commands +shell rm -f ${MAIL_DIR}/vanish +continue +end +run +EOF + +gdb --batch-silent --return-child-result -x notmuch-new-vanish.gdb \ + --args notmuch new 2>OUTPUT 1>/dev/null +echo "exit status: $?" >> OUTPUT + +# Clean up the file in case gdb isn't available. +rm -f ${MAIL_DIR}/vanish + +cat < EXPECTED +Unexpected error with file ${MAIL_DIR}/vanish +add_file: Something went wrong trying to read or write a file +Error opening ${MAIL_DIR}/vanish: No such file or directory +exit status: 75 +EOF +test_expect_equal_file EXPECTED OUTPUT + test_done -- 2.43.0