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 is to summarize successes and failures in the test script and
exit with an appropriate error code. exit with an appropriate error code.
There are also a number of mail-specific functions which are useful in There are also a number of notmuch-specific auxiliary functions and
writing tests: variables which are useful in writing tests:
generate_message generate_message
@ -213,3 +213,15 @@ writing tests:
will initialize the mail database to a known state of 50 sample will initialize the mail database to a known state of 50 sample
messages, (culled from the early history of the notmuch mailing messages, (culled from the early history of the notmuch mailing
list). 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 $@)" 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_reset_state_ () {
test -z "$test_init_done_" && test_init_ test -z "$test_init_done_" && test_init_