X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=test%2Ftest-lib.sh;h=098d69da347cffc689cb986761421f3ad2444250;hp=8c331b882d2f02786679dcbdbbf0121c4762e476;hb=5248f55d5f11c6ed6c2344b2ed13e6ff16fc6dde;hpb=1a8060b81f2fbba324d4156f4733a7f1deb14d60 diff --git a/test/test-lib.sh b/test/test-lib.sh index 8c331b88..098d69da 100644 --- a/test/test-lib.sh +++ b/test/test-lib.sh @@ -107,6 +107,9 @@ unset GREP_OPTIONS # For emacsclient unset ALTERNATE_EDITOR +# for reproducibility +unset EMAIL + add_gnupg_home () { [ -e "${GNUPGHOME}/gpg.conf" ] && return @@ -136,16 +139,16 @@ add_gpgsm_home () at_exit_function _gnupg_exit mkdir -p -m 0700 "$GNUPGHOME" openssl pkcs12 -export -passout pass: -inkey "$NOTMUCH_SRCDIR/test/smime/key+cert.pem" \ - < "$NOTMUCH_SRCDIR/test/smime/test.crt" | \ - gpgsm --batch --no-tty --no-common-certs-import --pinentry-mode=loopback --passphrase-fd 3 \ - --disable-dirmngr --import >"$GNUPGHOME"/import.log 2>&1 3<<<'' + < "$NOTMUCH_SRCDIR/test/smime/test.crt" | \ + gpgsm --batch --no-tty --no-common-certs-import --pinentry-mode=loopback --passphrase-fd 3 \ + --disable-dirmngr --import >"$GNUPGHOME"/import.log 2>&1 3<<<'' fpr=$(gpgsm --batch --list-key test_suite@notmuchmail.org | sed -n 's/.*fingerprint: //p') echo "$fpr S relax" >> "$GNUPGHOME/trustlist.txt" gpgsm --quiet --batch --no-tty --no-common-certs-import --disable-dirmngr --import < $NOTMUCH_SRCDIR/test/smime/ca.crt echo "4D:E0:FF:63:C0:E9:EC:01:29:11:C8:7A:EE:DA:3A:9A:7F:6E:C1:0D S" >> "$GNUPGHOME/trustlist.txt" printf '%s::1\n' include-certs disable-crl-checks | gpgconf --output /dev/null --change-options gpgsm gpgsm --batch --no-tty --no-common-certs-import --pinentry-mode=loopback --passphrase-fd 3 \ - --disable-dirmngr --import "$NOTMUCH_SRCDIR/test/smime/bob.p12" >>"$GNUPGHOME"/import.log 2>&1 3<<<'' + --disable-dirmngr --import "$NOTMUCH_SRCDIR/test/smime/bob.p12" >>"$GNUPGHOME"/import.log 2>&1 3<<<'' test_debug "cat $GNUPGHOME/import.log" } @@ -394,8 +397,8 @@ emacs_fcc_message () local nmn_args subject body nmn_args='' while [[ "$1" =~ ^-- ]]; do - nmn_args="$nmn_args $1" - shift + nmn_args="$nmn_args $1" + shift done subject="$1" body="$2" @@ -405,7 +408,7 @@ emacs_fcc_message () test_emacs \ "(let ((message-send-mail-function (lambda () t)) - (mail-host-address \"example.com\")) + (mail-host-address \"example.com\")) (notmuch-mua-mail) (message-goto-to) (insert \"test_suite@notmuchmail.org\nDate: 01 Jan 2000 12:00:00 -0000\") @@ -414,7 +417,9 @@ emacs_fcc_message () (message-goto-body) (insert \"${body}\") $* - (notmuch-mua-send-and-exit))" || return 1 + (let ((mml-secure-smime-sign-with-sender t) + (mml-secure-openpgp-sign-with-sender t)) + (notmuch-mua-send-and-exit)))" || return 1 notmuch new $nmn_args >/dev/null } @@ -522,9 +527,9 @@ test_expect_equal_json () { # override Python's stdio encoding defaults. script='import json, sys; json.dump(json.load(sys.stdin), sys.stdout, sort_keys=True, indent=4)' output=$(echo "$1" | PYTHONIOENCODING=utf-8 $NOTMUCH_PYTHON -c "$script" \ - || echo "$1") + || echo "$1") expected=$(echo "$2" | PYTHONIOENCODING=utf-8 $NOTMUCH_PYTHON -c "$script" \ - || echo "$2") + || echo "$2") shift 2 test_expect_equal "$output" "$expected" "$@" } @@ -538,15 +543,15 @@ test_valid_json () { # Sort the top-level list of JSON data from stdin. test_sort_json () { PYTHONIOENCODING=utf-8 $NOTMUCH_PYTHON -c \ - "import sys, json; json.dump(sorted(json.load(sys.stdin)),sys.stdout)" + "import sys, json; json.dump(sorted(json.load(sys.stdin)),sys.stdout)" } # test for json objects: # read the source of test/json_check_nodes.py (or the output when # invoking it without arguments) for an explanation of the syntax. test_json_nodes () { - local output - exec 1>&6 2>&7 # Restore stdout and stderr + local output + exec 1>&6 2>&7 # Restore stdout and stderr if [ -z "$inside_subtest" ]; then error "bug in the test script: test_json_eval without test_begin_subtest" fi @@ -660,7 +665,7 @@ notmuch_json_show_sanitize () -e 's|"filename": "signature.asc",||g' \ -e 's|"filename": \["/[^"]*"\],|"filename": \["YYYYY"\],|g' \ -e 's|"timestamp": 97.......|"timestamp": 42|g' \ - -e 's|"content-length": [1-9][0-9]*|"content-length": "NONZERO"|g' + -e 's|"content-length": [1-9][0-9]*|"content-length": "NONZERO"|g' } notmuch_emacs_error_sanitize () @@ -671,7 +676,7 @@ notmuch_emacs_error_sanitize () for file in "$@"; do echo "=== $file ===" cat "$file" - done | sed \ + done | sed \ -e 's/^\[.*\]$/[XXX]/' \ -e "s|^\(command: \)\{0,1\}/.*/$command|\1YYY/$command|" } @@ -692,6 +697,14 @@ notmuch_built_with_sanitize () sed 's/^built_with[.]\(.*\)=.*$/built_with.\1=something/' } +notmuch_passwd_sanitize () +{ + local user=$(id -un) + local fqdn=$(hostname -f) + local full_name=$(getent passwd $user | cut -d: -f 5 | cut -d, -f1) + sed -e "s/$user/USERNAME/" -e "s/$fqdn/FQDN/" -e "s/$full_name/USER_FULL_NAME/" +} + notmuch_config_sanitize () { notmuch_dir_sanitize | notmuch_built_with_sanitize @@ -927,8 +940,8 @@ test_expect_code () { # but is a prefix that can be used in the test script, like: # # test_expect_success 'complain and die' ' -# do something && -# do something else && +# do something && +# do something else && # test_must_fail git checkout ../outerspace # ' # @@ -1018,8 +1031,8 @@ export NOTMUCH_CONFIG=$NOTMUCH_CONFIG # Here's what we are using here: # -# --quick Use minimal customization. This implies --no-init-file, -# --no-site-file and (emacs 24) --no-site-lisp +# --quick Use minimal customization. This implies --no-init-file, +# --no-site-file and (emacs 24) --no-site-lisp # # --directory Ensure that the local elisp sources are found # @@ -1115,7 +1128,7 @@ notmuch_with_shim () { base_name="$1" shift shim_file="${base_name}.so" - LD_PRELOAD=./${shim_file}${LD_PRELOAD:+:$LD_PRELOAD} notmuch-shared "$@" + LD_PRELOAD=${LD_PRELOAD:+:$LD_PRELOAD}:./${shim_file} notmuch-shared "$@" } # Creates a script that counts how much time it is executed and calls @@ -1259,17 +1272,6 @@ test -z "$NO_PYTHON" && test_set_prereq PYTHON ln -s x y 2>/dev/null && test -h y 2>/dev/null && test_set_prereq SYMLINKS rm -f y -# convert variable from configure to more convenient form -case "$NOTMUCH_DEFAULT_XAPIAN_BACKEND" in - glass) - db_ending=glass - ;; - chert) - db_ending=DB - ;; - *) - error "Unknown Xapian backend $NOTMUCH_DEFAULT_XAPIAN_BACKEND" -esac # declare prerequisites for external binaries used in tests test_declare_external_prereq dtach test_declare_external_prereq emacs @@ -1279,3 +1281,5 @@ test_declare_external_prereq gpg test_declare_external_prereq openssl test_declare_external_prereq gpgsm test_declare_external_prereq ${NOTMUCH_PYTHON} +test_declare_external_prereq xapian-metadata +test_declare_external_prereq xapian-delve