mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-23 11:28:13 +01:00
test: support testing notmuch as installed
We put some effort into testing the built copy rather than some installed copy. On the other hand for people like packagers, testing the installed copy is also of interest. When NOTMUCH_TEST_INSTALLED is set to a nonempty value, tests do not require a built notmuch tree or running configure. Some of the tests marked as broken when running against installed notmuch are probably fixable.
This commit is contained in:
parent
73f3081160
commit
ec26eeaeec
26 changed files with 139 additions and 16 deletions
17
test/README
17
test/README
|
@ -137,6 +137,23 @@ detection of missing prerequisites. In the future we may treat tests
|
||||||
unable to run because of missing prerequisites, but not explicitly
|
unable to run because of missing prerequisites, but not explicitly
|
||||||
skipped by the user, as failures.
|
skipped by the user, as failures.
|
||||||
|
|
||||||
|
Testing installed notmuch
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
Systems integrators (e.g. Linux distros) may wish to test an installed
|
||||||
|
version of notmuch. This can be done be running
|
||||||
|
|
||||||
|
$ NOTMUCH_TEST_INSTALLED=1 ./test/notmuch-test
|
||||||
|
|
||||||
|
In this scenario the test suite does not assume a built tree, and in
|
||||||
|
particular cannot rely on the output of 'configure'. You may want to
|
||||||
|
set certain feature environment variables ('NOTMUCH_HAVE_*') directly
|
||||||
|
if you know those apply to your installed notmuch). Consider also
|
||||||
|
setting TERM=dumb if the value of TERM cannot be used (e.g. in a
|
||||||
|
chroot with missing terminfo). Note that having a built tree may cause
|
||||||
|
surprising/broken results for NOTMUCH_TEST_INSTALLED, so consider
|
||||||
|
cleaning first.
|
||||||
|
|
||||||
Writing Tests
|
Writing Tests
|
||||||
-------------
|
-------------
|
||||||
The test script is written as a shell script. It is to be named as
|
The test script is written as a shell script. It is to be named as
|
||||||
|
|
|
@ -66,6 +66,7 @@ test_begin_subtest 'NOTMUCH_CONFIG is set and points to an existing file'
|
||||||
test_expect_success 'test -f "${NOTMUCH_CONFIG}"'
|
test_expect_success 'test -f "${NOTMUCH_CONFIG}"'
|
||||||
|
|
||||||
test_begin_subtest 'PATH is set to build directory'
|
test_begin_subtest 'PATH is set to build directory'
|
||||||
|
test_subtest_broken_for_installed
|
||||||
test_expect_equal \
|
test_expect_equal \
|
||||||
"$(dirname ${TEST_DIRECTORY})" \
|
"$(dirname ${TEST_DIRECTORY})" \
|
||||||
"$(echo $PATH|cut -f1 -d: | sed -e 's,/test/valgrind/bin$,,')"
|
"$(echo $PATH|cut -f1 -d: | sed -e 's,/test/valgrind/bin$,,')"
|
||||||
|
|
|
@ -19,6 +19,9 @@ if [ "${NOTMUCH_HAVE_MAN-0}" = "1" ]; then
|
||||||
test_begin_subtest 'notmuch help tag'
|
test_begin_subtest 'notmuch help tag'
|
||||||
test_expect_success 'notmuch help tag'
|
test_expect_success 'notmuch help tag'
|
||||||
else
|
else
|
||||||
|
if [ -n "${NOTMUCH_TEST_INSTALLED-}" ]; then
|
||||||
|
test_done
|
||||||
|
fi
|
||||||
test_begin_subtest 'notmuch --help tag (man pages not available)'
|
test_begin_subtest 'notmuch --help tag (man pages not available)'
|
||||||
test_expect_success 'test_must_fail notmuch --help tag >/dev/null'
|
test_expect_success 'test_must_fail notmuch --help tag >/dev/null'
|
||||||
|
|
||||||
|
|
|
@ -65,6 +65,7 @@ test_expect_equal_json "$output" "[{\"thread\": \"XXX\",
|
||||||
\"tags\": [\"inbox\",
|
\"tags\": [\"inbox\",
|
||||||
\"unread\"]}]"
|
\"unread\"]}]"
|
||||||
|
|
||||||
|
if [ -z "${NOTMUCH_TEST_INSTALLED-}" ]; then
|
||||||
test_begin_subtest "Search message: json, 64-bit timestamp"
|
test_begin_subtest "Search message: json, 64-bit timestamp"
|
||||||
if [ "${NOTMUCH_HAVE_64BIT_TIME_T-0}" != "1" ]; then
|
if [ "${NOTMUCH_HAVE_64BIT_TIME_T-0}" != "1" ]; then
|
||||||
test_subtest_known_broken
|
test_subtest_known_broken
|
||||||
|
@ -81,6 +82,7 @@ test_expect_equal_json "$output" "[{\"thread\": \"XXX\",
|
||||||
\"query\": [\"id:$gen_msg_id\", null],
|
\"query\": [\"id:$gen_msg_id\", null],
|
||||||
\"tags\": [\"inbox\",
|
\"tags\": [\"inbox\",
|
||||||
\"unread\"]}]"
|
\"unread\"]}]"
|
||||||
|
fi # NOTMUCH_TEST_INSTALLED undefined / empty
|
||||||
|
|
||||||
test_begin_subtest "Format version: too low"
|
test_begin_subtest "Format version: too low"
|
||||||
test_expect_code 20 "notmuch search --format-version=0 \\*"
|
test_expect_code 20 "notmuch search --format-version=0 \\*"
|
||||||
|
|
|
@ -139,6 +139,7 @@ notmuch dump --output=dump-outfile-dash-inbox.actual -- from:cworth
|
||||||
test_expect_equal_file dump-cworth.expected dump-outfile-dash-inbox.actual
|
test_expect_equal_file dump-cworth.expected dump-outfile-dash-inbox.actual
|
||||||
|
|
||||||
test_begin_subtest "Check for a safe set of message-ids"
|
test_begin_subtest "Check for a safe set of message-ids"
|
||||||
|
test_subtest_broken_for_installed
|
||||||
notmuch search --output=messages from:cworth | sed s/^id:// > EXPECTED
|
notmuch search --output=messages from:cworth | sed s/^id:// > EXPECTED
|
||||||
notmuch search --output=messages from:cworth | sed s/^id:// |\
|
notmuch search --output=messages from:cworth | sed s/^id:// |\
|
||||||
$TEST_DIRECTORY/hex-xcode --direction=encode > OUTPUT
|
$TEST_DIRECTORY/hex-xcode --direction=encode > OUTPUT
|
||||||
|
@ -246,6 +247,7 @@ notmuch dump --format=batch-tag > OUTPUT.$test_count
|
||||||
test_expect_equal_file EXPECTED.$test_count OUTPUT.$test_count
|
test_expect_equal_file EXPECTED.$test_count OUTPUT.$test_count
|
||||||
|
|
||||||
test_begin_subtest 'format=batch-tag, checking encoded output'
|
test_begin_subtest 'format=batch-tag, checking encoded output'
|
||||||
|
test_subtest_broken_for_installed
|
||||||
NOTMUCH_DUMP_TAGS --format=batch-tag -- from:cworth |\
|
NOTMUCH_DUMP_TAGS --format=batch-tag -- from:cworth |\
|
||||||
awk "{ print \"+$enc1 +$enc2 +$enc3 -- \" \$5 }" > EXPECTED.$test_count
|
awk "{ print \"+$enc1 +$enc2 +$enc3 -- \" \$5 }" > EXPECTED.$test_count
|
||||||
NOTMUCH_DUMP_TAGS --format=batch-tag -- from:cworth > OUTPUT.$test_count
|
NOTMUCH_DUMP_TAGS --format=batch-tag -- from:cworth > OUTPUT.$test_count
|
||||||
|
|
|
@ -258,6 +258,7 @@ EOF
|
||||||
test_expect_equal_file EXPECTED OUTPUT
|
test_expect_equal_file EXPECTED OUTPUT
|
||||||
|
|
||||||
test_begin_subtest "Verify that sent messages are saved/searchable (via FCC)"
|
test_begin_subtest "Verify that sent messages are saved/searchable (via FCC)"
|
||||||
|
test_subtest_broken_for_installed
|
||||||
notmuch new > /dev/null
|
notmuch new > /dev/null
|
||||||
output=$(notmuch search 'subject:"testing message sent via SMTP"' | notmuch_search_sanitize)
|
output=$(notmuch search 'subject:"testing message sent via SMTP"' | notmuch_search_sanitize)
|
||||||
test_expect_equal "$output" "thread:XXX 2000-01-01 [1/1] Notmuch Test Suite; Testing message sent via SMTP (inbox)"
|
test_expect_equal "$output" "thread:XXX 2000-01-01 [1/1] Notmuch Test Suite; Testing message sent via SMTP (inbox)"
|
||||||
|
@ -350,6 +351,7 @@ EOF
|
||||||
test_expect_equal_file EXPECTED OUTPUT
|
test_expect_equal_file EXPECTED OUTPUT
|
||||||
|
|
||||||
test_begin_subtest "Reply within emacs"
|
test_begin_subtest "Reply within emacs"
|
||||||
|
test_subtest_broken_for_installed
|
||||||
test_emacs '(let ((message-hidden-headers ''()))
|
test_emacs '(let ((message-hidden-headers ''()))
|
||||||
(notmuch-search "subject:\"testing message sent via SMTP\"")
|
(notmuch-search "subject:\"testing message sent via SMTP\"")
|
||||||
(notmuch-test-wait)
|
(notmuch-test-wait)
|
||||||
|
|
|
@ -30,6 +30,7 @@ msg_file=$(notmuch search --output=files subject:signed-message-sent-via-SMTP)
|
||||||
test_expect_equal_message_body sent_message "$msg_file"
|
test_expect_equal_message_body sent_message "$msg_file"
|
||||||
|
|
||||||
test_begin_subtest "signed part content-type indexing"
|
test_begin_subtest "signed part content-type indexing"
|
||||||
|
test_subtest_broken_for_installed
|
||||||
notmuch search mimetype:multipart/signed and mimetype:application/pgp-signature | notmuch_search_sanitize > OUTPUT
|
notmuch search mimetype:multipart/signed and mimetype:application/pgp-signature | notmuch_search_sanitize > OUTPUT
|
||||||
cat <<EOF >EXPECTED
|
cat <<EOF >EXPECTED
|
||||||
thread:XXX 2000-01-01 [1/1] Notmuch Test Suite; test signed message 001 (inbox signed)
|
thread:XXX 2000-01-01 [1/1] Notmuch Test Suite; test signed message 001 (inbox signed)
|
||||||
|
|
|
@ -183,6 +183,7 @@ test_begin_subtest "show PKCS#7 SignedData outputs valid JSON"
|
||||||
output=$(notmuch show --format=json id:smime-onepart-signed@protected-headers.example)
|
output=$(notmuch show --format=json id:smime-onepart-signed@protected-headers.example)
|
||||||
test_valid_json "$output"
|
test_valid_json "$output"
|
||||||
|
|
||||||
|
if [ -z "${NOTMUCH_TEST_INSTALLED-}" ]; then
|
||||||
test_begin_subtest "Verify signature on PKCS#7 SignedData message"
|
test_begin_subtest "Verify signature on PKCS#7 SignedData message"
|
||||||
if [ "${NOTMUCH_HAVE_64BIT_TIME_T-0}" != "1" ]; then
|
if [ "${NOTMUCH_HAVE_64BIT_TIME_T-0}" != "1" ]; then
|
||||||
test_subtest_known_broken
|
test_subtest_known_broken
|
||||||
|
@ -194,6 +195,7 @@ test_json_nodes <<<"$output" \
|
||||||
'expires:[0][0][0]["crypto"]["signed"]["status"][0]["expires"]=2611032858' \
|
'expires:[0][0][0]["crypto"]["signed"]["status"][0]["expires"]=2611032858' \
|
||||||
'fingerprint:[0][0][0]["crypto"]["signed"]["status"][0]["fingerprint"]="702BA4B157F1E2B7D16B0C6A5FFC8A7DE2057DEB"' \
|
'fingerprint:[0][0][0]["crypto"]["signed"]["status"][0]["fingerprint"]="702BA4B157F1E2B7D16B0C6A5FFC8A7DE2057DEB"' \
|
||||||
'status:[0][0][0]["crypto"]["signed"]["status"][0]["status"]="good"'
|
'status:[0][0][0]["crypto"]["signed"]["status"][0]["status"]="good"'
|
||||||
|
fi # NOTMUCH_TEST_INSTALLED undefined / empty
|
||||||
|
|
||||||
test_begin_subtest "Verify signature on PKCS#7 SignedData message signer User ID"
|
test_begin_subtest "Verify signature on PKCS#7 SignedData message signer User ID"
|
||||||
if [ $NOTMUCH_GMIME_X509_CERT_VALIDITY -ne 1 ]; then
|
if [ $NOTMUCH_GMIME_X509_CERT_VALIDITY -ne 1 ]; then
|
||||||
|
|
|
@ -11,6 +11,10 @@ test_description='exception symbol hiding'
|
||||||
|
|
||||||
. $(dirname "$0")/test-lib.sh || exit 1
|
. $(dirname "$0")/test-lib.sh || exit 1
|
||||||
|
|
||||||
|
if [ -n "${NOTMUCH_TEST_INSTALLED-}" ]; then
|
||||||
|
test_done
|
||||||
|
fi
|
||||||
|
|
||||||
test_begin_subtest 'running test' run_test
|
test_begin_subtest 'running test' run_test
|
||||||
mkdir -p ${PWD}/fakedb/.notmuch
|
mkdir -p ${PWD}/fakedb/.notmuch
|
||||||
$TEST_DIRECTORY/symbol-test ${PWD}/fakedb ${PWD}/nonexistent 2>&1 \
|
$TEST_DIRECTORY/symbol-test ${PWD}/fakedb ${PWD}/nonexistent 2>&1 \
|
||||||
|
|
|
@ -4,6 +4,10 @@ test_description="python bindings"
|
||||||
|
|
||||||
test_require_external_prereq ${NOTMUCH_PYTHON}
|
test_require_external_prereq ${NOTMUCH_PYTHON}
|
||||||
|
|
||||||
|
if [ -n "${NOTMUCH_TEST_INSTALLED-}" ]; then
|
||||||
|
test_done
|
||||||
|
fi
|
||||||
|
|
||||||
add_email_corpus
|
add_email_corpus
|
||||||
add_gnupg_home
|
add_gnupg_home
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,10 @@
|
||||||
test_description="python bindings (pytest)"
|
test_description="python bindings (pytest)"
|
||||||
. $(dirname "$0")/test-lib.sh || exit 1
|
. $(dirname "$0")/test-lib.sh || exit 1
|
||||||
|
|
||||||
|
if [ -n "${NOTMUCH_TEST_INSTALLED-}" ]; then
|
||||||
|
test_done
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "${NOTMUCH_HAVE_PYTHON3_CFFI-0}" = "0" -o "${NOTMUCH_HAVE_PYTHON3_PYTEST-0}" = "0" ]; then
|
if [ "${NOTMUCH_HAVE_PYTHON3_CFFI-0}" = "0" -o "${NOTMUCH_HAVE_PYTHON3_PYTEST-0}" = "0" ]; then
|
||||||
test_done
|
test_done
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
test_description="ruby bindings"
|
test_description="ruby bindings"
|
||||||
. $(dirname "$0")/test-lib.sh || exit 1
|
. $(dirname "$0")/test-lib.sh || exit 1
|
||||||
|
|
||||||
if [ "${NOTMUCH_HAVE_RUBY_DEV}" = "0" ]; then
|
if [ -z "${NOTMUCH_TEST_INSTALLED-}" -a "${NOTMUCH_HAVE_RUBY_DEV-0}" = "0" ]; then
|
||||||
test_subtest_missing_external_prereq_["ruby development files"]=t
|
test_subtest_missing_external_prereq_["ruby development files"]=t
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -15,7 +15,11 @@ test_ruby() {
|
||||||
db = Notmuch::Database.new()
|
db = Notmuch::Database.new()
|
||||||
EOF
|
EOF
|
||||||
cat
|
cat
|
||||||
) | $NOTMUCH_RUBY -I "$NOTMUCH_BUILDDIR/bindings/ruby"> OUTPUT
|
) | if [ -n "${NOTMUCH_TEST_INSTALLED-}" ]; then
|
||||||
|
ruby
|
||||||
|
else
|
||||||
|
$NOTMUCH_RUBY -I "$NOTMUCH_BUILDDIR/bindings/ruby"
|
||||||
|
fi> OUTPUT
|
||||||
test_expect_equal_file EXPECTED OUTPUT
|
test_expect_equal_file EXPECTED OUTPUT
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,10 @@
|
||||||
test_description="argument parsing"
|
test_description="argument parsing"
|
||||||
. $(dirname "$0")/test-lib.sh || exit 1
|
. $(dirname "$0")/test-lib.sh || exit 1
|
||||||
|
|
||||||
|
if [ -n "${NOTMUCH_TEST_INSTALLED-}" ]; then
|
||||||
|
test_done
|
||||||
|
fi
|
||||||
|
|
||||||
test_begin_subtest "sanity check"
|
test_begin_subtest "sanity check"
|
||||||
$TEST_DIRECTORY/arg-test pos1 --keyword=one --boolean --string=foo pos2 --int=7 --flag=one --flag=three > OUTPUT
|
$TEST_DIRECTORY/arg-test pos1 --keyword=one --boolean --string=foo pos2 --int=7 --flag=one --flag=three > OUTPUT
|
||||||
cat <<EOF > EXPECTED
|
cat <<EOF > EXPECTED
|
||||||
|
|
|
@ -2,6 +2,10 @@
|
||||||
test_description="hex encoding and decoding"
|
test_description="hex encoding and decoding"
|
||||||
. $(dirname "$0")/test-lib.sh || exit 1
|
. $(dirname "$0")/test-lib.sh || exit 1
|
||||||
|
|
||||||
|
if [ -n "${NOTMUCH_TEST_INSTALLED-}" ]; then
|
||||||
|
test_done
|
||||||
|
fi
|
||||||
|
|
||||||
test_begin_subtest "round trip"
|
test_begin_subtest "round trip"
|
||||||
find $NOTMUCH_SRCDIR/test/corpora/default -type f -print | sort | xargs cat > EXPECTED
|
find $NOTMUCH_SRCDIR/test/corpora/default -type f -print | sort | xargs cat > EXPECTED
|
||||||
$TEST_DIRECTORY/hex-xcode --direction=encode < EXPECTED | $TEST_DIRECTORY/hex-xcode --direction=decode > OUTPUT
|
$TEST_DIRECTORY/hex-xcode --direction=encode < EXPECTED | $TEST_DIRECTORY/hex-xcode --direction=decode > OUTPUT
|
||||||
|
|
|
@ -2,6 +2,10 @@
|
||||||
test_description="date/time parser module"
|
test_description="date/time parser module"
|
||||||
. $(dirname "$0")/test-lib.sh || exit 1
|
. $(dirname "$0")/test-lib.sh || exit 1
|
||||||
|
|
||||||
|
if [ -n "${NOTMUCH_TEST_INSTALLED-}" ]; then
|
||||||
|
test_done
|
||||||
|
fi
|
||||||
|
|
||||||
# Sanity/smoke tests for the date/time parser independent of notmuch
|
# Sanity/smoke tests for the date/time parser independent of notmuch
|
||||||
|
|
||||||
_date () {
|
_date () {
|
||||||
|
|
|
@ -3,6 +3,10 @@ test_description="database version and feature compatibility"
|
||||||
|
|
||||||
. $(dirname "$0")/test-lib.sh || exit 1
|
. $(dirname "$0")/test-lib.sh || exit 1
|
||||||
|
|
||||||
|
if [ -n "${NOTMUCH_TEST_INSTALLED-}" ]; then
|
||||||
|
test_done
|
||||||
|
fi
|
||||||
|
|
||||||
test_begin_subtest "future database versions abort open"
|
test_begin_subtest "future database versions abort open"
|
||||||
${TEST_DIRECTORY}/make-db-version ${MAIL_DIR} 9999 ""
|
${TEST_DIRECTORY}/make-db-version ${MAIL_DIR} 9999 ""
|
||||||
output=$(notmuch search x 2>&1 | sed 's/\(database at\) .*/\1 FILENAME/')
|
output=$(notmuch search x 2>&1 | sed 's/\(database at\) .*/\1 FILENAME/')
|
||||||
|
|
|
@ -3,6 +3,10 @@ test_description="API tests for notmuch_message_*"
|
||||||
|
|
||||||
. $(dirname "$0")/test-lib.sh || exit 1
|
. $(dirname "$0")/test-lib.sh || exit 1
|
||||||
|
|
||||||
|
if [ -n "${NOTMUCH_TEST_INSTALLED}" ]; then
|
||||||
|
test_done
|
||||||
|
fi
|
||||||
|
|
||||||
add_email_corpus
|
add_email_corpus
|
||||||
|
|
||||||
test_begin_subtest "building database"
|
test_begin_subtest "building database"
|
||||||
|
|
|
@ -21,6 +21,10 @@ test_description='thread breakage during reindexing'
|
||||||
|
|
||||||
. $(dirname "$0")/test-lib.sh || exit 1
|
. $(dirname "$0")/test-lib.sh || exit 1
|
||||||
|
|
||||||
|
if [ -n "${NOTMUCH_TEST_INSTALLED-}" ]; then
|
||||||
|
test_done
|
||||||
|
fi
|
||||||
|
|
||||||
message_a () {
|
message_a () {
|
||||||
mkdir -p ${MAIL_DIR}/cur
|
mkdir -p ${MAIL_DIR}/cur
|
||||||
cat > ${MAIL_DIR}/cur/a <<EOF
|
cat > ${MAIL_DIR}/cur/a <<EOF
|
||||||
|
|
|
@ -3,6 +3,10 @@ test_description="message id parsing"
|
||||||
|
|
||||||
. $(dirname "$0")/test-lib.sh || exit 1
|
. $(dirname "$0")/test-lib.sh || exit 1
|
||||||
|
|
||||||
|
if [ -n "${NOTMUCH_TEST_INSTALLED-}" ]; then
|
||||||
|
test_done
|
||||||
|
fi
|
||||||
|
|
||||||
test_begin_subtest "good message ids"
|
test_begin_subtest "good message ids"
|
||||||
${TEST_DIRECTORY}/message-id-parse <<EOF >OUTPUT
|
${TEST_DIRECTORY}/message-id-parse <<EOF >OUTPUT
|
||||||
<018b1a8f2d1df62e804ce88b65401304832dfbbf.1346614915.git.jani@nikula.org>
|
<018b1a8f2d1df62e804ce88b65401304832dfbbf.1346614915.git.jani@nikula.org>
|
||||||
|
|
|
@ -7,6 +7,11 @@ if [ "${NOTMUCH_HAVE_ASAN-0}" != "1" ]; then
|
||||||
test_done
|
test_done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ -n "${LD_PRELOAD-}" ]; then
|
||||||
|
printf "Skipping due to ASAN LD_PRELOAD restrictions\n"
|
||||||
|
test_done
|
||||||
|
fi
|
||||||
|
|
||||||
add_email_corpus
|
add_email_corpus
|
||||||
|
|
||||||
TEST_CFLAGS="${TEST_CFLAGS:-} -fsanitize=address"
|
TEST_CFLAGS="${TEST_CFLAGS:-} -fsanitize=address"
|
||||||
|
|
|
@ -233,6 +233,7 @@ EOF
|
||||||
test_expect_equal_file EXPECTED OUTPUT
|
test_expect_equal_file EXPECTED OUTPUT
|
||||||
|
|
||||||
test_begin_subtest "invoke as nmbug sets defaults"
|
test_begin_subtest "invoke as nmbug sets defaults"
|
||||||
|
test_subtest_broken_for_installed
|
||||||
"$NOTMUCH_BUILDDIR"/nmbug -ldebug status |& grep '^\(prefix\|repository\)' | notmuch_dir_sanitize > OUTPUT
|
"$NOTMUCH_BUILDDIR"/nmbug -ldebug status |& grep '^\(prefix\|repository\)' | notmuch_dir_sanitize > OUTPUT
|
||||||
cat <<EOF > EXPECTED
|
cat <<EOF > EXPECTED
|
||||||
prefix = notmuch::
|
prefix = notmuch::
|
||||||
|
@ -241,6 +242,7 @@ EOF
|
||||||
test_expect_equal_file EXPECTED OUTPUT
|
test_expect_equal_file EXPECTED OUTPUT
|
||||||
|
|
||||||
test_begin_subtest "env variable NOTMUCH_GIT_DIR works when invoked as nmbug"
|
test_begin_subtest "env variable NOTMUCH_GIT_DIR works when invoked as nmbug"
|
||||||
|
test_subtest_broken_for_installed
|
||||||
NOTMUCH_GIT_DIR=`pwd`/foo "$NOTMUCH_BUILDDIR"/nmbug -ldebug status |& grep '^repository' | notmuch_dir_sanitize > OUTPUT
|
NOTMUCH_GIT_DIR=`pwd`/foo "$NOTMUCH_BUILDDIR"/nmbug -ldebug status |& grep '^repository' | notmuch_dir_sanitize > OUTPUT
|
||||||
cat <<EOF > EXPECTED
|
cat <<EOF > EXPECTED
|
||||||
repository = CWD/foo
|
repository = CWD/foo
|
||||||
|
@ -256,6 +258,7 @@ test_expect_equal_file EXPECTED OUTPUT
|
||||||
|
|
||||||
|
|
||||||
test_begin_subtest "env variable NOTMUCH_GIT_DIR overrides config when invoked as 'nmbug'"
|
test_begin_subtest "env variable NOTMUCH_GIT_DIR overrides config when invoked as 'nmbug'"
|
||||||
|
test_subtest_broken_for_installed
|
||||||
notmuch config set git.path `pwd`/bar
|
notmuch config set git.path `pwd`/bar
|
||||||
NOTMUCH_GIT_DIR=`pwd`/remote.git "$NOTMUCH_BUILDDIR"/nmbug -ldebug status |& grep '^repository' | notmuch_dir_sanitize > OUTPUT
|
NOTMUCH_GIT_DIR=`pwd`/remote.git "$NOTMUCH_BUILDDIR"/nmbug -ldebug status |& grep '^repository' | notmuch_dir_sanitize > OUTPUT
|
||||||
notmuch config set git.path
|
notmuch config set git.path
|
||||||
|
@ -274,6 +277,7 @@ EOF
|
||||||
test_expect_equal_file EXPECTED OUTPUT
|
test_expect_equal_file EXPECTED OUTPUT
|
||||||
|
|
||||||
test_begin_subtest "env variable NOTMUCH_GIT_PREFIX works when invoked as 'nmbug'"
|
test_begin_subtest "env variable NOTMUCH_GIT_PREFIX works when invoked as 'nmbug'"
|
||||||
|
test_subtest_broken_for_installed
|
||||||
NOTMUCH_GIT_PREFIX=env:: "$NOTMUCH_BUILDDIR"/nmbug -ldebug status |& grep '^prefix' | notmuch_dir_sanitize > OUTPUT
|
NOTMUCH_GIT_PREFIX=env:: "$NOTMUCH_BUILDDIR"/nmbug -ldebug status |& grep '^prefix' | notmuch_dir_sanitize > OUTPUT
|
||||||
cat <<EOF > EXPECTED
|
cat <<EOF > EXPECTED
|
||||||
prefix = env::
|
prefix = env::
|
||||||
|
@ -281,6 +285,7 @@ EOF
|
||||||
test_expect_equal_file EXPECTED OUTPUT
|
test_expect_equal_file EXPECTED OUTPUT
|
||||||
|
|
||||||
test_begin_subtest "env variable NOTMUCH_GIT_PREFIX works when invoked as nmbug"
|
test_begin_subtest "env variable NOTMUCH_GIT_PREFIX works when invoked as nmbug"
|
||||||
|
test_subtest_broken_for_installed
|
||||||
NOTMUCH_GIT_PREFIX=foo:: "$NOTMUCH_BUILDDIR"/nmbug -ldebug status |& grep '^prefix' | notmuch_dir_sanitize > OUTPUT
|
NOTMUCH_GIT_PREFIX=foo:: "$NOTMUCH_BUILDDIR"/nmbug -ldebug status |& grep '^prefix' | notmuch_dir_sanitize > OUTPUT
|
||||||
cat <<EOF > EXPECTED
|
cat <<EOF > EXPECTED
|
||||||
prefix = foo::
|
prefix = foo::
|
||||||
|
@ -288,6 +293,7 @@ EOF
|
||||||
test_expect_equal_file EXPECTED OUTPUT
|
test_expect_equal_file EXPECTED OUTPUT
|
||||||
|
|
||||||
test_begin_subtest "env variable NOTMUCH_GIT_PREFIX overrides config when invoked as 'nmbug'"
|
test_begin_subtest "env variable NOTMUCH_GIT_PREFIX overrides config when invoked as 'nmbug'"
|
||||||
|
test_subtest_broken_for_installed
|
||||||
notmuch config set git.tag_prefix config::
|
notmuch config set git.tag_prefix config::
|
||||||
NOTMUCH_GIT_PREFIX=env:: "$NOTMUCH_BUILDDIR"/nmbug -ldebug status |& grep '^prefix' | notmuch_dir_sanitize > OUTPUT
|
NOTMUCH_GIT_PREFIX=env:: "$NOTMUCH_BUILDDIR"/nmbug -ldebug status |& grep '^prefix' | notmuch_dir_sanitize > OUTPUT
|
||||||
notmuch config set git.path
|
notmuch config set git.path
|
||||||
|
|
|
@ -24,7 +24,7 @@ find_builddir () {
|
||||||
if [[ -z "${NOTMUCH_BUILDDIR}" ]]; then
|
if [[ -z "${NOTMUCH_BUILDDIR}" ]]; then
|
||||||
export NOTMUCH_BUILDDIR="$(find_builddir "$(pwd)")"
|
export NOTMUCH_BUILDDIR="$(find_builddir "$(pwd)")"
|
||||||
|
|
||||||
if [[ -z "${NOTMUCH_BUILDDIR}" ]]; then
|
if [ -z "${NOTMUCH_BUILDDIR}" -a "${NOTMUCH_TEST_INSTALLED-0}" = "0" ]; then
|
||||||
echo "Run tests in a subdir of built notmuch tree." >&2
|
echo "Run tests in a subdir of built notmuch tree." >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -20,6 +20,14 @@ fi
|
||||||
|
|
||||||
set -eu
|
set -eu
|
||||||
|
|
||||||
|
# Where to run the tests
|
||||||
|
# XXX FIXME this code is duplicated with test-lib.sh
|
||||||
|
if [[ -n "${NOTMUCH_BUILDDIR}" ]]; then
|
||||||
|
TEST_DIRECTORY=$NOTMUCH_BUILDDIR/test
|
||||||
|
else
|
||||||
|
TEST_DIRECTORY=$NOTMUCH_SRCDIR/test
|
||||||
|
fi
|
||||||
|
|
||||||
TESTS=
|
TESTS=
|
||||||
for test in ${NOTMUCH_TESTS-}; do
|
for test in ${NOTMUCH_TESTS-}; do
|
||||||
TESTS="$TESTS $NOTMUCH_SRCDIR/test/$test"
|
TESTS="$TESTS $NOTMUCH_SRCDIR/test/$test"
|
||||||
|
@ -80,7 +88,7 @@ for file in $TESTS
|
||||||
do
|
do
|
||||||
file=${file##*/} # drop leading path components
|
file=${file##*/} # drop leading path components
|
||||||
file=${file%.sh} # drop trailing '.sh'
|
file=${file%.sh} # drop trailing '.sh'
|
||||||
RESULT_FILES="$RESULT_FILES $NOTMUCH_BUILDDIR/test/test-results/$file"
|
RESULT_FILES="$RESULT_FILES $TEST_DIRECTORY/test-results/$file"
|
||||||
done
|
done
|
||||||
|
|
||||||
echo
|
echo
|
||||||
|
@ -94,6 +102,6 @@ if [ -n "$META_FAILURE" ]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Clean up
|
# Clean up
|
||||||
rm -rf $NOTMUCH_BUILDDIR/test/test-results
|
rm -rf $TEST_DIRECTORY/test-results
|
||||||
|
|
||||||
exit $ev
|
exit $ev
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
#
|
#
|
||||||
type die >/dev/null 2>&1 || die () { echo "$@" >&2; exit 1; }
|
type die >/dev/null 2>&1 || die () { echo "$@" >&2; exit 1; }
|
||||||
|
|
||||||
if [[ -z "$NOTMUCH_SRCDIR" ]] || [[ -z "$NOTMUCH_BUILDDIR" ]]; then
|
if [[ -z "$NOTMUCH_SRCDIR" ]] || [ -z "${NOTMUCH_TEST_INSTALLED-}" -a -z "$NOTMUCH_BUILDDIR" ]; then
|
||||||
echo "internal: srcdir or builddir not set" >&2
|
echo "internal: srcdir or builddir not set" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
@ -61,7 +61,9 @@ LD_LIBRARY_PATH=${TEST_DIRECTORY%/*}/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
|
||||||
export LD_LIBRARY_PATH
|
export LD_LIBRARY_PATH
|
||||||
|
|
||||||
# configure output
|
# configure output
|
||||||
. "$NOTMUCH_BUILDDIR/sh.config" || exit 1
|
if [ -z "${NOTMUCH_TEST_INSTALLED-}" ]; then
|
||||||
|
. "$NOTMUCH_BUILDDIR/sh.config" || exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
# load OS specifics
|
# load OS specifics
|
||||||
if [[ -e "$NOTMUCH_SRCDIR/test/test-lib-$PLATFORM.sh" ]]; then
|
if [[ -e "$NOTMUCH_SRCDIR/test/test-lib-$PLATFORM.sh" ]]; then
|
||||||
|
@ -315,7 +317,12 @@ export PATH MANPATH
|
||||||
|
|
||||||
# Test repository
|
# Test repository
|
||||||
test="tmp.$(basename "$0" .sh)"
|
test="tmp.$(basename "$0" .sh)"
|
||||||
TMP_DIRECTORY="$TEST_DIRECTORY/$test"
|
if [ -z "${NOTMUCH_TEST_INSTALLED-}" ]; then
|
||||||
|
TMP_DIRECTORY="$TEST_DIRECTORY/$test"
|
||||||
|
else
|
||||||
|
TMP_DIRECTORY=$(mktemp -d "${TMPDIR:-/tmp}/notmuch-$test.XXXXXX")
|
||||||
|
fi
|
||||||
|
|
||||||
test ! -z "$debug" || remove_tmp=$TMP_DIRECTORY
|
test ! -z "$debug" || remove_tmp=$TMP_DIRECTORY
|
||||||
rm -rf "$TMP_DIRECTORY" || {
|
rm -rf "$TMP_DIRECTORY" || {
|
||||||
GIT_EXIT_OK=t
|
GIT_EXIT_OK=t
|
||||||
|
|
|
@ -30,6 +30,7 @@ test_require_emacs () {
|
||||||
# to the message and encrypting/signing.
|
# to the message and encrypting/signing.
|
||||||
emacs_deliver_message () {
|
emacs_deliver_message () {
|
||||||
local subject body smtp_dummy_pid smtp_dummy_port
|
local subject body smtp_dummy_pid smtp_dummy_port
|
||||||
|
test_subtest_broken_for_installed
|
||||||
subject="$1"
|
subject="$1"
|
||||||
body="$2"
|
body="$2"
|
||||||
shift 2
|
shift 2
|
||||||
|
@ -144,6 +145,13 @@ emacs_generate_script () {
|
||||||
# Construct a little test script here for the benefit of the user,
|
# Construct a little test script here for the benefit of the user,
|
||||||
# (who can easily run "run_emacs" to get the same emacs environment
|
# (who can easily run "run_emacs" to get the same emacs environment
|
||||||
# for investigating any failures).
|
# for investigating any failures).
|
||||||
|
if [ -z "${NOTMUCH_TEST_INSTALLED-}" ]; then
|
||||||
|
find_notmuch_el='--directory "$NOTMUCH_BUILDDIR/emacs"'
|
||||||
|
else
|
||||||
|
### XXX FIXME: this should really use the installed emacs lisp files
|
||||||
|
find_notmuch_el='--directory "$NOTMUCH_SRCDIR/emacs"'
|
||||||
|
fi
|
||||||
|
|
||||||
cat <<EOF >"$TMP_DIRECTORY/run_emacs"
|
cat <<EOF >"$TMP_DIRECTORY/run_emacs"
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
export PATH=$PATH
|
export PATH=$PATH
|
||||||
|
@ -158,8 +166,8 @@ export NOTMUCH_CONFIG=$NOTMUCH_CONFIG
|
||||||
#
|
#
|
||||||
# --load Force loading of notmuch.el and test-lib.el
|
# --load Force loading of notmuch.el and test-lib.el
|
||||||
|
|
||||||
exec ${TEST_EMACS} --quick \
|
exec ${TEST_EMACS} ${find_notmuch_el} --quick \
|
||||||
--directory "$NOTMUCH_BUILDDIR/emacs" --load notmuch.el \
|
${EXTRA_DIR} --load notmuch.el \
|
||||||
--directory "$NOTMUCH_SRCDIR/test" --load test-lib.el \
|
--directory "$NOTMUCH_SRCDIR/test" --load test-lib.el \
|
||||||
"\$@"
|
"\$@"
|
||||||
EOF
|
EOF
|
||||||
|
|
|
@ -29,8 +29,8 @@ shopt -u xpg_echo
|
||||||
# Ensure NOTMUCH_SRCDIR and NOTMUCH_BUILDDIR are set.
|
# Ensure NOTMUCH_SRCDIR and NOTMUCH_BUILDDIR are set.
|
||||||
. $(dirname "$0")/export-dirs.sh || exit 1
|
. $(dirname "$0")/export-dirs.sh || exit 1
|
||||||
|
|
||||||
# It appears that people try to run tests without building...
|
# We need either a built tree, or a promise of an installed notmuch
|
||||||
if [[ ! -x "$NOTMUCH_BUILDDIR/notmuch" ]]; then
|
if [ -z "${NOTMUCH_TEST_INSTALLED-}" -a ! -x "$NOTMUCH_BUILDDIR/notmuch" ]; then
|
||||||
echo >&2 'You do not seem to have built notmuch yet.'
|
echo >&2 'You do not seem to have built notmuch yet.'
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
@ -748,6 +748,12 @@ test_subtest_known_broken () {
|
||||||
test_subtest_known_broken_=t
|
test_subtest_known_broken_=t
|
||||||
}
|
}
|
||||||
|
|
||||||
|
test_subtest_broken_for_installed () {
|
||||||
|
if [ -n "${NOTMUCH_TEST_INSTALLED-}" ]; then
|
||||||
|
test_subtest_known_broken_=t
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
test_subtest_broken_for_root () {
|
test_subtest_broken_for_root () {
|
||||||
if [ "$EUID" = "0" ]; then
|
if [ "$EUID" = "0" ]; then
|
||||||
test_subtest_known_broken_=t
|
test_subtest_known_broken_=t
|
||||||
|
@ -929,11 +935,16 @@ make_shim () {
|
||||||
}
|
}
|
||||||
|
|
||||||
notmuch_with_shim () {
|
notmuch_with_shim () {
|
||||||
local base_name shim_file
|
local base_name shim_file notmuch_cmd
|
||||||
base_name="$1"
|
if [ -n "${NOTMUCH_TEST_INSTALLED-}" ]; then
|
||||||
|
notmuch_cmd="notmuch"
|
||||||
|
else
|
||||||
|
notmuch_cmd="notmuch-shared"
|
||||||
|
fi
|
||||||
|
base_name=$1
|
||||||
shift
|
shift
|
||||||
shim_file="${base_name}.so"
|
shim_file="${base_name}.so"
|
||||||
LD_PRELOAD=${LD_PRELOAD:+:$LD_PRELOAD}:./${shim_file} notmuch-shared "$@"
|
LD_PRELOAD=${LD_PRELOAD:+:$LD_PRELOAD}:./${shim_file} $notmuch_cmd "$@"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Creates a script that counts how much time it is executed and calls
|
# Creates a script that counts how much time it is executed and calls
|
||||||
|
@ -985,7 +996,11 @@ test_init_ () {
|
||||||
|
|
||||||
|
|
||||||
# Where to run the tests
|
# Where to run the tests
|
||||||
TEST_DIRECTORY=$NOTMUCH_BUILDDIR/test
|
if [[ -n "${NOTMUCH_BUILDDIR}" ]]; then
|
||||||
|
TEST_DIRECTORY=$NOTMUCH_BUILDDIR/test
|
||||||
|
else
|
||||||
|
TEST_DIRECTORY=$NOTMUCH_SRCDIR/test
|
||||||
|
fi
|
||||||
|
|
||||||
. "$NOTMUCH_SRCDIR/test/test-lib-common.sh" || exit 1
|
. "$NOTMUCH_SRCDIR/test/test-lib-common.sh" || exit 1
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue