test: add functions to count how much times notmuch was called

The patch adds two auxiliary functions and a variable:

  notmuch_counter_reset
  $notmuch_counter_command
  notmuch_counter_value

They allow to count how many times notmuch binary is called.
notmuch_counter_reset() function generates a script that counts how
many times it is called and resets the counter to zero.  The function
sets $notmuch_counter_command variable to the path to the generated
script that should be called instead of notmuch to do the counting.
The notmuch_counter_value() function returns the current counter
value.
This commit is contained in:
Dmitry Kurochkin 2011-11-30 01:19:52 +04:00 committed by David Bremner
parent 2a349d739b
commit e994bb28df
2 changed files with 46 additions and 2 deletions

View file

@ -188,8 +188,8 @@ library for your script to use.
is to summarize successes and failures in the test script and
exit with an appropriate error code.
There are also a number of mail-specific functions which are useful in
writing tests:
There are also a number of notmuch-specific auxiliary functions and
variables which are useful in writing tests:
generate_message
@ -213,3 +213,15 @@ writing tests:
will initialize the mail database to a known state of 50 sample
messages, (culled from the early history of the notmuch mailing
list).
notmuch_counter_reset
$notmuch_counter_command
notmuch_counter_value
These allow to count how many times notmuch binary is called.
notmuch_counter_reset() function generates a script that counts
how many times it is called and resets the counter to zero. The
function sets $notmuch_counter_command variable to the path to the
generated script that should be called instead of notmuch to do
the counting. The notmuch_counter_value() function prints the
current counter value.

View file

@ -919,6 +919,38 @@ test_emacs () {
emacsclient --socket-name="$EMACS_SERVER" --eval "(progn $@)"
}
# Creates a script that counts how much time it is executed and calls
# notmuch. $notmuch_counter_command is set to the path to the
# generated script. Use notmuch_counter_value() function to get the
# current counter value.
notmuch_counter_reset () {
notmuch_counter_command="$TMP_DIRECTORY/notmuch_counter"
if [ ! -x "$notmuch_counter_command" ]; then
notmuch_counter_state_path="$TMP_DIRECTORY/notmuch_counter.state"
cat >"$notmuch_counter_command" <<EOF || return
#!/bin/sh
read count < "$notmuch_counter_state_path"
echo \$((count + 1)) > "$notmuch_counter_state_path"
exec notmuch "\$@"
EOF
chmod +x "$notmuch_counter_command" || return
fi
echo 0 > "$notmuch_counter_state_path"
}
# Returns the current notmuch counter value.
notmuch_counter_value () {
if [ -r "$notmuch_counter_state_path" ]; then
read count < "$notmuch_counter_state_path"
else
count=0
fi
echo $count
}
test_reset_state_ () {
test -z "$test_init_done_" && test_init_