test: add known broken tests for setting NOTMUCH_CONFIG in hooks

Setting this according to --config was requested by Uwe
Kleine-König. There are some other ways that the configuration file
might be found in current notmuch, so check those as well.

As a bonus, fix a bug in the hook tests that left NOTMUCH_CONFIG set
even though a config file was provided via NOTMUCH_PROFILE.

[1]: id:8baa58c3-7ab9-ec03-1bbd-28aa5be838f2@kleine-koenig.org
This commit is contained in:
David Bremner 2022-05-30 08:38:19 -03:00
parent 8d3d98991d
commit e167825bca

View file

@ -15,6 +15,15 @@ EOF
echo "${TOKEN}" > ${2} echo "${TOKEN}" > ${2}
} }
create_printenv_hook () {
mkdir -p ${HOOK_DIR}
cat <<EOF >"${HOOK_DIR}/${1}"
#!/bin/sh
printenv "${2}" > "${3}"
EOF
chmod +x "${HOOK_DIR}/${1}"
}
create_write_hook () { create_write_hook () {
local TOKEN="${RANDOM}" local TOKEN="${RANDOM}"
mkdir -p ${HOOK_DIR} mkdir -p ${HOOK_DIR}
@ -53,8 +62,11 @@ add_message
# create maildir structure for notmuch-insert # create maildir structure for notmuch-insert
mkdir -p "$MAIL_DIR"/{cur,new,tmp} mkdir -p "$MAIL_DIR"/{cur,new,tmp}
ORIG_NOTMUCH_CONFIG=${NOTMUCH_CONFIG}
for config in traditional profile explicit relative XDG split; do for config in traditional profile explicit relative XDG split; do
unset NOTMUCH_PROFILE unset NOTMUCH_PROFILE
export NOTMUCH_CONFIG=${ORIG_NOTMUCH_CONFIG}
EXPECTED_CONFIG=${NOTMUCH_CONFIG}
notmuch config set database.hook_dir notmuch config set database.hook_dir
notmuch config set database.path ${MAIL_DIR} notmuch config set database.path ${MAIL_DIR}
case $config in case $config in
@ -65,8 +77,10 @@ for config in traditional profile explicit relative XDG split; do
dir=${HOME}/.config/notmuch/other dir=${HOME}/.config/notmuch/other
mkdir -p ${dir} mkdir -p ${dir}
HOOK_DIR=${dir}/hooks HOOK_DIR=${dir}/hooks
cp ${NOTMUCH_CONFIG} ${dir}/config EXPECTED_CONFIG=${dir}/config
cp ${NOTMUCH_CONFIG} ${EXPECTED_CONFIG}
export NOTMUCH_PROFILE=other export NOTMUCH_PROFILE=other
unset NOTMUCH_CONFIG
;; ;;
explicit) explicit)
HOOK_DIR=${HOME}/.notmuch-hooks HOOK_DIR=${HOME}/.notmuch-hooks
@ -200,6 +214,27 @@ EOF
EOF EOF
test_expect_equal_file EXPECTED OUTPUT test_expect_equal_file EXPECTED OUTPUT
test_begin_subtest "NOTMUCH_CONFIG is set"
if [ "${config}" = "profile" ]; then
test_subtest_known_broken
fi
create_printenv_hook "pre-new" NOTMUCH_CONFIG OUTPUT
NOTMUCH_NEW
cat <<EOF > EXPECTED
${EXPECTED_CONFIG}
EOF
test_expect_equal_file_nonempty EXPECTED OUTPUT
test_begin_subtest "NOTMUCH_CONFIG is set by --config"
test_subtest_known_broken
create_printenv_hook "pre-new" NOTMUCH_CONFIG OUTPUT
cp "${EXPECTED_CONFIG}" "${EXPECTED_CONFIG}.alternate"
notmuch --config "${EXPECTED_CONFIG}.alternate" new
cat <<EOF > EXPECTED
${EXPECTED_CONFIG}.alternate
EOF
test_expect_equal_file_nonempty EXPECTED OUTPUT
rm -rf ${HOOK_DIR} rm -rf ${HOOK_DIR}
done done
test_done test_done