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 As the names depend on the tests' file names, it is safe to
run the tests with this option in parallel. 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 When invoking the test suite via "make test" any of the above options
can be specified as follows: 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 # Ensure that all tests are being run
test_begin_subtest 'Ensure that all available tests will be run by notmuch-test' 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) 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" \ 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 "/^(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" \ -e "/^(emacs.expected-output|smtp-dummy|smtp-dummy.c|test-verbose|symbol-test.cc)/d" \
@ -63,19 +63,19 @@ available=$(ls -1 ../ | \
| sort) | sort)
test_expect_equal "$tests_in_suite" "$available" test_expect_equal "$tests_in_suite" "$available"
EXPECTED=../test.expected-output EXPECTED=$TEST_DIRECTORY/test.expected-output
suppress_diff_date() { suppress_diff_date() {
sed -e 's/\(.*\-\-\- test-verbose\.4\.\expected\).*/\1/' \ sed -e 's/\(.*\-\-\- test-verbose\.4\.\expected\).*/\1/' \
-e 's/\(.*\+\+\+ test-verbose\.4\.\output\).*/\1/' -e 's/\(.*\+\+\+ test-verbose\.4\.\output\).*/\1/'
} }
test_begin_subtest "Ensure that test output is suppressed unless the test fails" 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) expected=$(cat $EXPECTED/test-verbose-no | suppress_diff_date)
test_expect_equal "$output" "$expected" test_expect_equal "$output" "$expected"
test_begin_subtest "Ensure that -v does not suppress test output" 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) expected=$(cat $EXPECTED/test-verbose-yes | suppress_diff_date)
# Do not include the results of test-verbose in totals # Do not include the results of test-verbose in totals
rm $TEST_DIRECTORY/test-results/test-verbose-* rm $TEST_DIRECTORY/test-results/test-verbose-*

View file

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

View file

@ -8,7 +8,7 @@
test_description="emacs interface" test_description="emacs interface"
. test-lib.sh . test-lib.sh
EXPECTED=../emacs.expected-output EXPECTED=$TEST_DIRECTORY/emacs.expected-output
add_email_corpus 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) 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_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 \ emacs_deliver_message \
'Testing message sent via SMTP' \ 'Testing message sent via SMTP' \
'This is a test that messages are sent via SMTP' \ 'This is a test that messages are sent via SMTP' \
'(message-goto-to) '(message-goto-to)
(kill-whole-line) (kill-whole-line)
(insert "To: user@example.com\n")' (insert "To: user@example.com\n")'
sed \ sed \
-e s',^User-Agent: Notmuch/.* Emacs/.*,User-Agent: Notmuch/XXX Emacs/XXX,' \ -e s',^User-Agent: Notmuch/.* Emacs/.*,User-Agent: Notmuch/XXX Emacs/XXX,' \
-e s',^Message-ID: <.*>$,Message-ID: <XXX>,' < sent_message >OUTPUT -e s',^Message-ID: <.*>$,Message-ID: <XXX>,' < sent_message >OUTPUT

View file

@ -12,13 +12,13 @@ test_description='exception symbol hiding'
. ./test-lib.sh . ./test-lib.sh
run_test(){ 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' output="A Xapian exception occurred opening database: Couldn't stat 'fakedb/.notmuch/xapian'
caught No chert database found at path \`./nonexistant'" 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 mkdir -p fakedb/.notmuch
test_expect_success 'running test' run_test test_expect_success 'running test' run_test
test_begin_subtest 'checking output' test_begin_subtest 'checking output'

View file

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