X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/c5515a353e7316cb1c2ba3d4dce2979d5779ce37..d6e398f9c:/test/common.sh.in?ds=sidebyside diff --git a/test/common.sh.in b/test/common.sh.in index 8f5d576c..67b18a82 100644 --- a/test/common.sh.in +++ b/test/common.sh.in @@ -14,6 +14,7 @@ test -z "$bindir" && bindir="@bindir@" test -z "$mandir" && mandir="@mandir@" test -z "$sysconfdir" && sysconfdir="@sysconfdir@" test -z "$supported_locks" && supported_locks="@supported_locks@" +test -z "$default_locking" && default_locking="@default_locking@" test -z "$MULTIBYTE_ENABLED" && MULTIBYTE_ENABLED="@MULTIBYTE_ENABLED@" test -z "$ICONV_ENABLED" && ICONV_ENABLED="@ICONV_ENABLED@" export MH_TEST_DIR auxexecdir bindir mandir sysconfdir @@ -23,7 +24,10 @@ test -z "$MH_INST_DIR" && MH_INST_DIR="${MH_TEST_DIR}/inst" export MH_INST_DIR unset MHBUILD MHCONTEXT MHMTSUSERCONF MHN MHSHOW MHSTORE -unset MHLDEBUG MHPDEBUG MHWDEBUG MM_CHARSET PAGER +unset MHLDEBUG MHPDEBUG MHWDEBUG PAGER +#### Set LC_ALL in individual tests as needed. Unset these so +#### that we don't depend on user's settings in other tests. +unset LANG LC_ALL LC_TYPE #### Use a test dir for tmp files when MHTMPDIR applies. MHTMPDIR=$MH_TEST_DIR/Mail @@ -133,17 +137,16 @@ squeeze_lines() { sed '/^$/N;/\n$/D' } -#### Filter that inserts initial whitespace and converts non-breakable -#### space U+00A0 to an ASCII space. +#### Filter that converts non-breakable space U+00A0 to an ASCII space. prepare_space() { - sed 's/^/ /; s/'"`printf '\\302\\240'`"'/ /g' + sed 's/'"`printf '\\302\\240'`"'/ /g' } #### check() requires two arguments, each the name of a file to be #### diff'ed. -#### If the same, the second file is removed. And the first file is -#### removed unless there's an optional argument with a value of -#### 'keep first'. +#### If the contents are same, the second file is removed. And the +#### first file is removed unless there's an optional argument with +#### a value of 'keep first'. #### If different, global variable "failed" is incremented. #### If there's an optional 'ignore space' argument, spacing differences #### will not be considered signficant, emulating GNU diff -w. It @@ -186,6 +189,26 @@ check() { fi } + +#### Shortcut to enable use of valgrind: set NMH_VALGRIND environment +#### variable (to anything) so run_* will use valgrind. +if [ "${NMH_VALGRIND}" -a -z "${NMH_TEST_PREFIX}" ]; then + #### Need absolute path to valgrind.supp in case the test does a cd. + NMH_TEST_PREFIX="valgrind --quiet --error-exitcode=1 \ + --suppressions=`cd ${srcdir} && pwd`/test/valgrind.supp" +fi + +#### Run test under another program by setting NMH_TEST_PREFIX +#### environment variable to, e.g., 'valgrind --quiet'. +run_prog() { + case $1 in + #### Don't run valgrind on shell built-in. + eval\ *) "$@" ;; + *) ${NMH_TEST_PREFIX} "$@" ;; + esac +} + + #### run_test() requires two arguments, the first is a program and #### arguments, the second is its expected one-line output string. #### If the actual output does not match that string: @@ -193,7 +216,11 @@ check() { #### if there is an optional third argument, it is used in the error message. run_test() { set +e - actual_output=`$1 2>&1` + case $1 in + #### Don't run valgrind on shell built-in. + eval\ *) actual_output=`$1 2>&1` ;; + *) actual_output=`${NMH_TEST_PREFIX} $1 2>&1` ;; + esac set -e if test x"$actual_output" != x"$2"; then echo "$0: ${3:-\"$1\"} expected:" 1>&2 @@ -239,7 +266,7 @@ setup_test () export PATH # clean old test data - trap "rm -rf '$MH_TEST_DIR/Mail'" 0 + trap "cd $MH_TEST_DIR; rm -rf '$MH_TEST_DIR/Mail'" 0 # setup test data mkdir -p "$MH_TEST_DIR/Mail" || exit 1 cat > "$MH" <