mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-12-22 09:24:54 +01:00
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:
parent
273d896097
commit
eb4cf465a5
6 changed files with 28 additions and 19 deletions
|
@ -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:
|
||||
|
||||
|
|
10
test/basic
10
test/basic
|
@ -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-*
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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'
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue