test: Add tests for write access to database from hooks.

Recent changes to configuration handling meant the pre-new hook was
run while the database was open read only, limiting what could be done
in the hook. Add some known broken tests for this problem, as well as
a regression test for write access from the post-new hook.
This commit is contained in:
David Bremner 2021-03-18 22:54:13 -03:00
parent 13efbd0e1c
commit 7d286f0272
2 changed files with 29 additions and 0 deletions

View file

@ -2,6 +2,8 @@
test_description='hooks' test_description='hooks'
. $(dirname "$0")/test-lib.sh || exit 1 . $(dirname "$0")/test-lib.sh || exit 1
test_require_external_prereq xapian-delve
create_echo_hook () { create_echo_hook () {
local TOKEN="${RANDOM}" local TOKEN="${RANDOM}"
mkdir -p ${HOOK_DIR} mkdir -p ${HOOK_DIR}
@ -13,6 +15,19 @@ EOF
echo "${TOKEN}" > ${2} echo "${TOKEN}" > ${2}
} }
create_write_hook () {
local TOKEN="${RANDOM}"
mkdir -p ${HOOK_DIR}
cat <<EOF >"${HOOK_DIR}/${1}"
#!/bin/sh
if xapian-delve ${MAIL_DIR}/.notmuch/xapian | grep -q "writing = false"; then
echo "${TOKEN}" > ${3}
fi
EOF
chmod +x "${HOOK_DIR}/${1}"
echo "${TOKEN}" > ${2}
}
create_failing_hook () { create_failing_hook () {
local HOOK_DIR=${2} local HOOK_DIR=${2}
mkdir -p ${HOOK_DIR} mkdir -p ${HOOK_DIR}
@ -137,6 +152,19 @@ EOF
chmod +x "${HOOK_DIR}/pre-new" chmod +x "${HOOK_DIR}/pre-new"
test_expect_code 1 "notmuch new" test_expect_code 1 "notmuch new"
test_begin_subtest "post-new with write access [${config}]"
rm -rf ${HOOK_DIR}
create_write_hook "post-new" write.expected write.output $HOOK_DIR
NOTMUCH_NEW
test_expect_equal_file write.expected write.output
test_begin_subtest "pre-new with write access [${config}]"
test_subtest_known_broken
rm -rf ${HOOK_DIR}
create_write_hook "pre-new" write.expected write.output $HOOK_DIR
NOTMUCH_NEW
test_expect_equal_file write.expected write.output
rm -rf ${HOOK_DIR} rm -rf ${HOOK_DIR}
done done
test_done test_done

View file

@ -1271,3 +1271,4 @@ test_declare_external_prereq openssl
test_declare_external_prereq gpgsm test_declare_external_prereq gpgsm
test_declare_external_prereq ${NOTMUCH_PYTHON} test_declare_external_prereq ${NOTMUCH_PYTHON}
test_declare_external_prereq xapian-metadata test_declare_external_prereq xapian-metadata
test_declare_external_prereq xapian-delve