;;
esac
+# Save STDOUT to fd 6 and STDERR to fd 7.
+exec 6>&1 7>&2
+# Make xtrace debugging (when used) use redirected STDERR, with verbose lead:
+BASH_XTRACEFD=7
+export PS4='+(${BASH_SOURCE}:${LINENO}): ${FUNCNAME[0]:+${FUNCNAME[0]}(): }'
+
# Keep the original TERM for say_color and test_emacs
ORIGINAL_TERM=$TERM
print_test_description
fi
-exec 5>&1
-
test_failure=0
test_count=0
test_fixed=0
then
exit $code
else
- exec >&5
+ exec >&6
say_color error '%-6s' FATAL
echo " $test_subtest_name"
echo
die_signal () {
_die_common
- echo >&5 "FATAL: $0: interrupted by signal" $((code - 128))
+ echo >&6 "FATAL: $0: interrupted by signal" $((code - 128))
exit $code
}
else
template[subject]="Test message #${gen_msg_cnt}"
fi
+ elif [ "${template[subject]}" = "@FORCE_EMPTY" ]; then
+ template[subject]=""
fi
if [ -z "${template[date]}" ]; then
# we use decreasing timestamps here for historical reasons;
# the existing test suite when we converted to unique timestamps just
# happened to have signicantly fewer failures with that choice.
- template[date]=$(TZ=UTC printf "%(%a, %d %b %Y %T %z)T\n" \
- $((978709437 - gen_msg_cnt)))
+ local date_secs=$((978709437 - gen_msg_cnt))
+ # printf %(..)T is bash 4.2+ feature. use perl fallback if needed...
+ TZ=UTC printf -v template[date] "%(%a, %d %b %Y %T %z)T" $date_secs 2>/dev/null ||
+ template[date]=`perl -le 'use POSIX "strftime";
+ @time = gmtime '"$date_secs"';
+ print strftime "%a, %d %b %Y %T +0000", @time'`
fi
additional_headers=""
fi
test_subtest_name="$1"
test_reset_state_
- # Remember stdout and stderr file descriptors and redirect test
- # output to the previously prepared file descriptors 3 and 4 (see
- # below)
+ # Redirect test output to the previously prepared file descriptors
+ # 3 and 4 (see below)
if test "$verbose" != "t"; then exec 4>test.output 3>&4; fi
- exec 6>&1 7>&2 >&3 2>&4
+ exec >&3 2>&4
inside_subtest=t
}
test_expect_equal "$output" "$expected" "$@"
}
+# Sort the top-level list of JSON data from stdin.
+test_sort_json () {
+ PYTHONIOENCODING=utf-8 python -c \
+ "import sys, json; json.dump(sorted(json.load(sys.stdin)),sys.stdout)"
+}
+
test_emacs_expect_t () {
test "$#" = 2 && { prereq=$1; shift; } || prereq=
test "$#" = 1 ||
perl -pe 's/("?thread"?: ?)("?)................("?)/\1\2XXX\3/'
}
+notmuch_search_files_sanitize()
+{
+ sed -e "s,$MAIL_DIR,MAIL_DIR,"
+}
+
NOTMUCH_SHOW_FILENAME_SQUELCH='s,filename:.*/mail,filename:/XXX/mail,'
notmuch_show_sanitize ()
{
sed \
-e 's|"id": "[^"]*",|"id": "XXXXX",|g' \
-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'
}
case $this_test.$test_count in
$skp)
to_skip=t
+ break
+ esac
+ case $this_test_bare.$test_count in
+ $skp)
+ to_skip=t
+ break
esac
done
if test -z "$to_skip" && test -n "$prereq" &&
test_external () {
test "$#" = 4 && { prereq=$1; shift; } || prereq=
test "$#" = 3 ||
- error >&5 "bug in the test script: not 3 or 4 parameters to test_external"
+ error >&6 "bug in the test script: not 3 or 4 parameters to test_external"
test_subtest_name="$1"
shift
test_reset_state_
# Here's what we are using here:
#
-# --no-init-file Don't load users ~/.emacs
-#
-# --no-site-file Don't load the site-wide startup stuff
+# --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
#
# --load Force loading of notmuch.el and test-lib.el
-exec ${TEST_EMACS} --no-init-file --no-site-file \
+exec ${TEST_EMACS} --quick \
--directory "$TEST_DIRECTORY/../emacs" --load notmuch.el \
--directory "$TEST_DIRECTORY" --load test-lib.el \
"\$@"
rm -f OUTPUT
touch OUTPUT
- ${TEST_EMACSCLIENT} --socket-name="$EMACS_SERVER" --eval "(progn $@)"
+ ${TEST_EMACSCLIENT} --socket-name="$EMACS_SERVER" --eval "(notmuch-test-progn $@)"
}
test_python() {
case "$this_test" in
$skp)
to_skip=t
+ break
+ esac
+ case "$this_test_bare" in
+ $skp)
+ to_skip=t
+ break
esac
done
case "$to_skip" in