test:Improve test behaviors when --root is used

Change add_email_corpus, emacs_deliver_message and tests to use
$TEST_DIRECTORY instead of '..'.

This improves the behavior of the usage of --root=<dir>, as the
assumption of what '..' means will usually be incorrect.

Document -root option in README and update valgrind to work with
-root.
This commit is contained in:
Mark Anderson 2011-06-28 16:11:32 -06:00 committed by Carl Worth
parent 273d896097
commit eb4cf465a5
6 changed files with 28 additions and 19 deletions

View file

@ -41,6 +41,15 @@ The following command-line options are available when running tests:
As the names depend on the tests' file names, it is safe to
run the tests with this option in parallel.
--root=<dir>::
This runs the testsuites specified under a seperate directory.
However, caution is advised, as not all tests are maintained
with this relocation in mind, so some tests may behave
differently.
Pointing this argument at a tmpfs filesystem can improve the
speed of the test suite for some users.
When invoking the test suite via "make test" any of the above options
can be specified as follows:

View file

@ -51,9 +51,9 @@ test_expect_code 2 'failure to clean up causes the test to fail' '
# Ensure that all tests are being run
test_begin_subtest 'Ensure that all available tests will be run by notmuch-test'
eval $(sed -n -e '/^TESTS="$/,/^"$/p' notmuch-test ../notmuch-test)
eval $(sed -n -e '/^TESTS="$/,/^"$/p' notmuch-test $TEST_DIRECTORY/notmuch-test)
tests_in_suite=$(for i in $TESTS; do echo $i; done | sort)
available=$(ls -1 ../ | \
available=$(ls -1 $TEST_DIRECTORY/ | \
sed -r -e "/^(aggregate-results.sh|Makefile|Makefile.local|notmuch-test)/d" \
-e "/^(README|test-lib.sh|test-lib.el|test-results|tmp.*|valgrind|corpus*)/d" \
-e "/^(emacs.expected-output|smtp-dummy|smtp-dummy.c|test-verbose|symbol-test.cc)/d" \
@ -63,19 +63,19 @@ available=$(ls -1 ../ | \
| sort)
test_expect_equal "$tests_in_suite" "$available"
EXPECTED=../test.expected-output
EXPECTED=$TEST_DIRECTORY/test.expected-output
suppress_diff_date() {
sed -e 's/\(.*\-\-\- test-verbose\.4\.\expected\).*/\1/' \
-e 's/\(.*\+\+\+ test-verbose\.4\.\output\).*/\1/'
}
test_begin_subtest "Ensure that test output is suppressed unless the test fails"
output=$(cd ..; ./test-verbose 2>&1 | suppress_diff_date)
output=$(cd $TEST_DIRECTORY; ./test-verbose 2>&1 | suppress_diff_date)
expected=$(cat $EXPECTED/test-verbose-no | suppress_diff_date)
test_expect_equal "$output" "$expected"
test_begin_subtest "Ensure that -v does not suppress test output"
output=$(cd ..; ./test-verbose -v 2>&1 | suppress_diff_date)
output=$(cd $TEST_DIRECTORY; ./test-verbose -v 2>&1 | suppress_diff_date)
expected=$(cat $EXPECTED/test-verbose-yes | suppress_diff_date)
# Do not include the results of test-verbose in totals
rm $TEST_DIRECTORY/test-results/test-verbose-*

View file

@ -12,7 +12,7 @@ add_gnupg_home ()
local output
[ -d ${GNUPGHOME} ] && return
mkdir -m 0700 "$GNUPGHOME"
gpg --no-tty --import <../gnupg-secret-key.asc >"$GNUPGHOME"/import.log 2>&1
gpg --no-tty --import <$TEST_DIRECTORY/gnupg-secret-key.asc >"$GNUPGHOME"/import.log 2>&1
test_debug "cat $GNUPGHOME/import.log"
if (gpg --quick-random --version >/dev/null 2>&1) ; then
echo quick-random >> "$GNUPGHOME"/gpg.conf

View file

@ -8,7 +8,7 @@
test_description="emacs interface"
. test-lib.sh
EXPECTED=../emacs.expected-output
EXPECTED=$TEST_DIRECTORY/emacs.expected-output
add_email_corpus
@ -123,13 +123,13 @@ test_emacs '(notmuch-search "id:\"123..456@example\"")
output=$(notmuch search 'id:"123..456@example"' | notmuch_search_sanitize)
test_expect_equal "$output" "thread:XXX 2001-01-05 [1/1] Notmuch Test Suite; Message with .. in Message-Id (inbox search-add show-add)"
test_begin_subtest "Sending a message via (fake) SMTP"
emacs_deliver_message \
'Testing message sent via SMTP' \
'This is a test that messages are sent via SMTP' \
'(message-goto-to)
(kill-whole-line)
(insert "To: user@example.com\n")'
sed \
-e s',^User-Agent: Notmuch/.* Emacs/.*,User-Agent: Notmuch/XXX Emacs/XXX,' \
-e s',^Message-ID: <.*>$,Message-ID: <XXX>,' < sent_message >OUTPUT

View file

@ -12,13 +12,13 @@ test_description='exception symbol hiding'
. ./test-lib.sh
run_test(){
result=$(LD_LIBRARY_PATH=../../lib ./symbol-test 2>&1)
result=$(LD_LIBRARY_PATH=$TEST_DIRECTORY/../lib ./symbol-test 2>&1)
}
output="A Xapian exception occurred opening database: Couldn't stat 'fakedb/.notmuch/xapian'
caught No chert database found at path \`./nonexistant'"
g++ -o symbol-test -I../../lib ../symbol-test.cc -L../../lib -lnotmuch -lxapian
g++ -o symbol-test -I$TEST_DIRECTORY/../lib $TEST_DIRECTORY/symbol-test.cc -L$TEST_DIRECTORY/../lib -lnotmuch -lxapian
mkdir -p fakedb/.notmuch
test_expect_success 'running test' run_test
test_begin_subtest 'checking output'

View file

@ -392,7 +392,7 @@ emacs_deliver_message ()
shift 2
# before we can send a message, we have to prepare the FCC maildir
mkdir -p "$MAIL_DIR"/sent/{cur,new,tmp}
../smtp-dummy sent_message &
$TEST_DIRECTORY/smtp-dummy sent_message &
smtp_dummy_pid=$!
test_emacs \
"(let ((message-send-mail-function 'message-smtpmail-send-it)
@ -421,12 +421,12 @@ emacs_deliver_message ()
add_email_corpus ()
{
rm -rf ${MAIL_DIR}
if [ -d ../corpus.mail ]; then
cp -a ../corpus.mail ${MAIL_DIR}
if [ -d $TEST_DIRECTORY/corpus.mail ]; then
cp -a $TEST_DIRECTORY/corpus.mail ${MAIL_DIR}
else
cp -a ../corpus ${MAIL_DIR}
cp -a $TEST_DIRECTORY/corpus ${MAIL_DIR}
notmuch new >/dev/null
cp -a ${MAIL_DIR} ../corpus.mail
cp -a ${MAIL_DIR} $TEST_DIRECTORY/corpus.mail
fi
}
@ -867,8 +867,8 @@ fi
# --load Force loading of notmuch.el and test-lib.el
emacs \$BATCH --no-init-file --no-site-file \
--directory "$TMP_DIRECTORY/../../emacs" --load notmuch.el \
--directory "$TMP_DIRECTORY/.." --load test-lib.el \
--directory "$TEST_DIRECTORY/../emacs" --load notmuch.el \
--directory "$TEST_DIRECTORY" --load test-lib.el \
--eval "(progn \$@)"
EOF
chmod a+x "$TMP_DIRECTORY/run_emacs"
@ -931,11 +931,11 @@ then
test ! -d "$symlink_target" &&
test "#!" != "$(head -c 2 < "$symlink_target")"
then
symlink_target=../valgrind.sh
symlink_target=$TEST_DIRECTORY/valgrind.sh
fi
case "$base" in
*.sh|*.perl)
symlink_target=../unprocessed-script
symlink_target=$TEST_DIRECTORY/unprocessed-script
esac
# create the link, or replace it if it is out of date
make_symlink "$symlink_target" "$GIT_VALGRIND/bin/$base" || exit