mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-28 13:44:12 +01:00
627d752501
This adds a new "crypto" test script to the test suite to test PGP/MIME signature verification and message decryption. Included here is a test GNUPGHOME with a test secret key (passwordless), and test for: * signing/verification * signing/verification with full owner trust * verification with signer key unavailable * encryption/decryption * decryption failure with missing key * encryption/decryption + signing/verfifying * reply to encrypted message * verification of signature from revoked key These tests are not expected to pass now, but will as crypto functionality is included.
107 lines
3.1 KiB
Bash
Executable file
107 lines
3.1 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
#
|
|
# Copyright (c) 2005 Junio C Hamano
|
|
#
|
|
|
|
test_description='the test framework itself.'
|
|
|
|
################################################################
|
|
# It appears that people try to run tests without building...
|
|
|
|
if ! test -x ../notmuch
|
|
then
|
|
echo >&2 'You do not seem to have built notmuch yet.'
|
|
exit 1
|
|
fi
|
|
|
|
. ./test-lib.sh
|
|
|
|
################################################################
|
|
# Test harness
|
|
test_expect_success 'success is reported like this' '
|
|
:
|
|
'
|
|
test_set_prereq HAVEIT
|
|
haveit=no
|
|
test_expect_success HAVEIT 'test runs if prerequisite is satisfied' '
|
|
test_have_prereq HAVEIT &&
|
|
haveit=yes
|
|
'
|
|
|
|
clean=no
|
|
test_expect_success 'tests clean up after themselves' '
|
|
test_when_finished clean=yes
|
|
'
|
|
|
|
cleaner=no
|
|
test_expect_code 1 'tests clean up even after a failure' '
|
|
test_when_finished cleaner=yes &&
|
|
(exit 1)
|
|
'
|
|
|
|
if test $clean$cleaner != yesyes
|
|
then
|
|
say "bug in test framework: cleanup commands do not work reliably"
|
|
exit 1
|
|
fi
|
|
|
|
test_expect_code 2 'failure to clean up causes the test to fail' '
|
|
test_when_finished "(exit 2)"
|
|
'
|
|
|
|
# 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)
|
|
tests_in_suite=$(for i in $TESTS; do echo $i; done | sort)
|
|
available=$(ls -1 ../ | \
|
|
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)/d" \
|
|
-e "/^(test.expected-output|.*~)/d" \
|
|
-e "/^(gnupg-secret-key.asc)/d" \
|
|
-e "/^(gnupg-secret-key.NOTE)/d" \
|
|
| sort)
|
|
test_expect_equal "$tests_in_suite" "$available"
|
|
|
|
EXPECTED=../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)
|
|
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)
|
|
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-*
|
|
rm -r $TEST_DIRECTORY/tmp.test-verbose
|
|
test_expect_equal "$output" "$expected"
|
|
|
|
|
|
################################################################
|
|
# Test mail store prepared in test-lib.sh
|
|
|
|
test_expect_success \
|
|
'test that mail store was created' \
|
|
'test -d "${MAIL_DIR}"'
|
|
|
|
|
|
find "${MAIL_DIR}" -type f -print >should-be-empty
|
|
test_expect_success \
|
|
'mail store should be empty' \
|
|
'cmp -s /dev/null should-be-empty'
|
|
|
|
test_expect_success \
|
|
'NOTMUCH_CONFIG is set and points to an existing file' \
|
|
'test -f "${NOTMUCH_CONFIG}"'
|
|
|
|
test_expect_success \
|
|
'PATH is set to this repository' \
|
|
'test "`echo $PATH|cut -f1 -d: | sed -e 's,/test/valgrind/bin$,,'`" = "`dirname ${TEST_DIRECTORY}`"'
|
|
|
|
test_done
|