X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=test%2FT400-hooks.sh;h=35bf70c0df4a155fe498fe2976de6bf5bf7deed9;hp=3a2df2f4efabe5c7c097a2d6240ac75f80305c7c;hb=bfcf9a6c102af9232b6d2e720f919ff1c9b431f8;hpb=e3a4abc513d314cf7550d43fdcba458421a2daac diff --git a/test/T400-hooks.sh b/test/T400-hooks.sh index 3a2df2f4..35bf70c0 100755 --- a/test/T400-hooks.sh +++ b/test/T400-hooks.sh @@ -15,6 +15,15 @@ EOF echo "${TOKEN}" > ${2} } +create_printenv_hook () { + mkdir -p ${HOOK_DIR} + cat <"${HOOK_DIR}/${1}" +#!/bin/sh +printenv "${2}" > "${3}" +EOF + chmod +x "${HOOK_DIR}/${1}" +} + create_write_hook () { local TOKEN="${RANDOM}" mkdir -p ${HOOK_DIR} @@ -28,6 +37,16 @@ EOF echo "${TOKEN}" > ${2} } +create_change_hook () { + mkdir -p ${HOOK_DIR} + cat <"${HOOK_DIR}/${1}" +#!/bin/sh +notmuch insert --no-hooks < ${2} > /dev/null +rm -f ${2} +EOF + chmod +x "${HOOK_DIR}/${1}" +} + create_failing_hook () { local HOOK_DIR=${2} mkdir -p ${HOOK_DIR} @@ -43,8 +62,11 @@ add_message # create maildir structure for notmuch-insert mkdir -p "$MAIL_DIR"/{cur,new,tmp} -for config in traditional profile explicit XDG split; do +ORIG_NOTMUCH_CONFIG=${NOTMUCH_CONFIG} +for config in traditional profile explicit relative XDG split; do unset NOTMUCH_PROFILE + export NOTMUCH_CONFIG=${ORIG_NOTMUCH_CONFIG} + EXPECTED_CONFIG=${NOTMUCH_CONFIG} notmuch config set database.hook_dir notmuch config set database.path ${MAIL_DIR} case $config in @@ -55,14 +77,21 @@ for config in traditional profile explicit XDG split; do dir=${HOME}/.config/notmuch/other mkdir -p ${dir} HOOK_DIR=${dir}/hooks - cp ${NOTMUCH_CONFIG} ${dir}/config + EXPECTED_CONFIG=${dir}/config + cp ${NOTMUCH_CONFIG} ${EXPECTED_CONFIG} export NOTMUCH_PROFILE=other + unset NOTMUCH_CONFIG ;; explicit) HOOK_DIR=${HOME}/.notmuch-hooks mkdir -p $HOOK_DIR notmuch config set database.hook_dir $HOOK_DIR ;; + relative) + HOOK_DIR=${HOME}/.notmuch-hooks + mkdir -p $HOOK_DIR + notmuch config set database.hook_dir .notmuch-hooks + ;; XDG) HOOK_DIR=${HOME}/.config/notmuch/default/hooks ;; @@ -171,6 +200,37 @@ EOF NOTMUCH_NEW test_expect_equal_file write.expected write.output + test_begin_subtest "add message in pre-new [${config}]" + rm -rf ${HOOK_DIR} + generate_message '[subject]="add msg in pre-new"' + id1=$gen_msg_id + create_change_hook "pre-new" $gen_msg_filename $HOOK_DIR + generate_message '[subject]="add msg in new"' + NOTMUCH_NEW + notmuch search id:$id1 or id:$gen_msg_id | notmuch_search_sanitize > OUTPUT + cat < EXPECTED + thread:XXX 2001-01-05 [1/1] Notmuch Test Suite; add msg in pre-new (inbox unread) + thread:XXX 2001-01-05 [1/1] Notmuch Test Suite; add msg in new (inbox unread) +EOF + test_expect_equal_file EXPECTED OUTPUT + + test_begin_subtest "NOTMUCH_CONFIG is set" + create_printenv_hook "pre-new" NOTMUCH_CONFIG OUTPUT + NOTMUCH_NEW + cat < EXPECTED +${EXPECTED_CONFIG} +EOF + test_expect_equal_file_nonempty EXPECTED OUTPUT + + test_begin_subtest "NOTMUCH_CONFIG is set by --config" + create_printenv_hook "pre-new" NOTMUCH_CONFIG OUTPUT + cp "${EXPECTED_CONFIG}" "${EXPECTED_CONFIG}.alternate" + notmuch --config "${EXPECTED_CONFIG}.alternate" new + cat < EXPECTED +${EXPECTED_CONFIG}.alternate +EOF + test_expect_equal_file_nonempty EXPECTED OUTPUT + rm -rf ${HOOK_DIR} done test_done