mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-24 20:08:10 +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
|
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:
|
||||||
|
|
||||||
|
|
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
|
# 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-*
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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'
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue