This makes the test suite bash-specific, but that's not much of
an issue for me, (if somebody else would prefer some other language
then they can rewrite the test suite and maintain it).
The advantage here is that we'll now be able to easily generate
custom messages for testing operations that depend on the message
content, (such as "notmuch reply", etc.).
set -e
find_notmuch_binary ()
set -e
find_notmuch_binary ()
#
# The filename of the message generated is available as
# $gen_msg_filename
#
# The filename of the message generated is available as
# $gen_msg_filename
+#
+# This function supports named parameters with the bash syntax for
+# assigning a value to an associative array ([name]=value). The
+# supported parameters are:
+#
+# [dir]=directory/of/choice
+#
+# Generate the message in directory 'directory/of/choice' within
+# the mail store. The directory will be created if necessary.
gen_msg_cnt=0
gen_msg_filename=""
generate_message ()
{
gen_msg_cnt=0
gen_msg_filename=""
generate_message ()
{
+ # This is our (bash-specific) magic for doing named parameters
+ local -A template="($@)"
+
gen_msg_cnt=$((gen_msg_cnt + 1))
gen_msg_name=msg-$(printf "%03d" $gen_msg_cnt)
gen_msg_cnt=$((gen_msg_cnt + 1))
gen_msg_name=msg-$(printf "%03d" $gen_msg_cnt)
- if [ "$#" = "0" ]; then
+ if [ -z "${template[dir]}" ]; then
gen_msg_filename="${MAIL_DIR}/$gen_msg_name"
else
gen_msg_filename="${MAIL_DIR}/$gen_msg_name"
else
- gen_msg_filename="${MAIL_DIR}/$1/$gen_msg_name"
+ gen_msg_filename="${MAIL_DIR}/${template[dir]}/$gen_msg_name"
mkdir -p $(dirname $gen_msg_filename)
fi
mkdir -p $(dirname $gen_msg_filename)
fi
rm -rf ${MAIL_DIR}/* ${MAIL_DIR}/.notmuch
mkdir ${MAIL_DIR}/def
mkdir ${MAIL_DIR}/ghi
rm -rf ${MAIL_DIR}/* ${MAIL_DIR}/.notmuch
mkdir ${MAIL_DIR}/def
mkdir ${MAIL_DIR}/ghi
+generate_message [dir]=def
execute_expecting new "Added 1 new message to the database."
execute_expecting new "Added 1 new message to the database."
rm -rf ${MAIL_DIR}/.notmuch
mv ${MAIL_DIR}/ghi ${MAIL_DIR}/abc
rm ${MAIL_DIR}/def/*
rm -rf ${MAIL_DIR}/.notmuch
mv ${MAIL_DIR}/ghi ${MAIL_DIR}/abc
rm ${MAIL_DIR}/def/*
+generate_message [dir]=abc
execute_expecting new "Added 1 new message to the database."
execute_expecting new "Added 1 new message to the database."
printf " Renamed directory...\t\t"
do_sleep
printf " Renamed directory...\t\t"
do_sleep
-generate_message dir
-generate_message dir
-generate_message dir
+generate_message [dir]=dir
+generate_message [dir]=dir
+generate_message [dir]=dir
printf " New directory (at end of list)... "
do_sleep
printf " New directory (at end of list)... "
do_sleep
-generate_message zzz
-generate_message zzz
-generate_message zzz
+generate_message [dir]=zzz
+generate_message [dir]=zzz
+generate_message [dir]=zzz
execute_expecting new "Added 3 new messages to the database."
execute_expecting new "Added 3 new messages to the database."
printf " New two-level directory...\t"
do_sleep
printf " New two-level directory...\t"
do_sleep
-generate_message two/levels
-generate_message two/levels
-generate_message two/levels
+generate_message [dir]=two/levels
+generate_message [dir]=two/levels
+generate_message [dir]=two/levels
execute_expecting new "Added 3 new messages to the database."
execute_expecting new "Added 3 new messages to the database."