mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-29 06:04:11 +01:00
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:
parent
13efbd0e1c
commit
7d286f0272
2 changed files with 29 additions and 0 deletions
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue