X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=test%2Ftest-lib.sh;h=bb32e97b2af747b35a2db1d82b44d6cc8333d244;hp=bda8a80a54988c9b80c8e8be71185591cef98aa0;hb=2c5eed16b3b0bff9b6f488d3949ebdb62e8d1c35;hpb=b57426a43549ac5434c0f793e184f1b0b955f7e0 diff --git a/test/test-lib.sh b/test/test-lib.sh index bda8a80a..bb32e97b 100644 --- a/test/test-lib.sh +++ b/test/test-lib.sh @@ -55,9 +55,15 @@ export PS4='+(${BASH_SOURCE}:${LINENO}): ${FUNCNAME[0]:+${FUNCNAME[0]}(): }' # Keep the original TERM for say_color and test_emacs ORIGINAL_TERM=$TERM -# dtach(1) provides more capable terminal environment to anything -# that requires more than dumb terminal... -[ x"${TERM:-dumb}" = xdumb ] && DTACH_TERM=vt100 || DTACH_TERM=$TERM +# Set SMART_TERM to vt100 for known dumb/unknown terminal. +# Otherwise use whatever TERM is currently used so that +# users' actual TERM environments are being used in tests. +case ${TERM-} in + '' | dumb | unknown ) + SMART_TERM=vt100 ;; + *) + SMART_TERM=$TERM ;; +esac # For repeatability, reset the environment to known value. LANG=C @@ -74,6 +80,7 @@ if [[ ( -n "$TEST_EMACS" && -z "$TEST_EMACSCLIENT" ) || \ fi TEST_EMACS=${TEST_EMACS:-${EMACS:-emacs}} TEST_EMACSCLIENT=${TEST_EMACSCLIENT:-emacsclient} +TEST_GDB=${TEST_GDB:-gdb} TEST_CC=${TEST_CC:-cc} TEST_CFLAGS=${TEST_CFLAGS:-"-g -O0"} @@ -223,10 +230,19 @@ test_fixed=0 test_broken=0 test_success=0 + +_shutdown_gpg_agent () { + if [ ${NOTMUCH_HAVE_GPGCONF_SOCKETDIR} = 1 ]; then + gpgconf --kill gpg-agent + gpgconf --remove-socketdir + fi +} + _exit_common () { code=$? trap - EXIT set +ex + _shutdown_gpg_agent rm -rf "$TEST_TMPDIR" } @@ -618,15 +634,15 @@ test_expect_equal_file () error "bug in the test script: not 2 or 3 parameters to test_expect_equal" file1="$1" - basename1=`basename "$file1"` file2="$2" - basename2=`basename "$file2"` if ! test_skip "$test_subtest_name" then if diff -q "$file1" "$file2" >/dev/null ; then test_ok_ else testname=$this_test.$test_count + basename1=`basename "$file1"` + basename2=`basename "$file2"` cp "$file1" "$testname.$basename1" cp "$file2" "$testname.$basename2" test_failure_ "$(diff -u "$testname.$basename1" "$testname.$basename2")" @@ -651,7 +667,7 @@ test_expect_equal_json () { # Sort the top-level list of JSON data from stdin. test_sort_json () { - PYTHONIOENCODING=utf-8 python -c \ + PYTHONIOENCODING=utf-8 $NOTMUCH_PYTHON -c \ "import sys, json; json.dump(sorted(json.load(sys.stdin)),sys.stdout)" } @@ -730,7 +746,8 @@ notmuch_json_show_sanitize () -e 's|"Date": "Fri, 05 Jan 2001 [^"]*0000"|"Date": "GENERATED_DATE"|g' \ -e 's|"filename": "signature.asc",||g' \ -e 's|"filename": "/[^"]*",|"filename": "YYYYY",|g' \ - -e 's|"timestamp": 97.......|"timestamp": 42|g' + -e 's|"timestamp": 97.......|"timestamp": 42|g' \ + -e 's|"content-length": [1-9][0-9]*|"content-length": "NONZERO"|g' } notmuch_emacs_error_sanitize () @@ -1168,10 +1185,10 @@ test_emacs () { fi server_name="notmuch-test-suite-$$" # start a detached session with an emacs server - # user's TERM (or 'vt100' in case user's TERM is unset, empty - # or 'dumb') is given to dtach which assumes a minimally + # user's TERM (or 'vt100' in case user's TERM is known dumb + # or unknown) is given to dtach which assumes a minimally # VT100-compatible terminal -- and emacs inherits that - TERM=$DTACH_TERM dtach -n "$TEST_TMPDIR/emacs-dtach-socket.$$" \ + TERM=$SMART_TERM dtach -n "$TEST_TMPDIR/emacs-dtach-socket.$$" \ sh -c "stty rows 24 cols 80; exec '$TMP_DIRECTORY/run_emacs' \ --no-window-system \ $load_emacs_tests \ @@ -1269,6 +1286,11 @@ test_init_ () { . ./test-lib-common.sh || exit 1 +# we need the setting of GNUPGHOME in test-lib-common.sh +if [ ${NOTMUCH_HAVE_GPGCONF_SOCKETDIR} = 1 ]; then + gpgconf --create-socketdir +fi + emacs_generate_script @@ -1372,7 +1394,7 @@ esac test_declare_external_prereq dtach test_declare_external_prereq emacs test_declare_external_prereq ${TEST_EMACSCLIENT} -test_declare_external_prereq gdb +test_declare_external_prereq ${TEST_GDB} test_declare_external_prereq gpg test_declare_external_prereq openssl test_declare_external_prereq gpgsm