X-Git-Url: https://ruderich.org/simon/gitweb/?p=coloredstderr%2Fcoloredstderr.git;a=blobdiff_plain;f=tests%2Flib.sh;h=b1c8bc0276e22ac23215726fdb086e307ea990bb;hp=3e29a55023816cc539065c20c1b8ce898b00b7db;hb=04ac66863a96d0c80bd00cc02bc3ab1e6aa8a620;hpb=05aefe25bacd1c22bf2d5cc935aa9d3d28f5d841 diff --git a/tests/lib.sh b/tests/lib.sh index 3e29a55..b1c8bc0 100644 --- a/tests/lib.sh +++ b/tests/lib.sh @@ -15,13 +15,27 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . +set -e + # Allow running the script directly without running `make check`. test "x$builddir" = x && builddir=. test "x$EGREP" = x && EGREP='grep -E' -# In case we are called with LD_PRELOAD already set. -unset LD_PRELOAD +# The tests fail if running under coloredstderr because the tests redirect +# stderr to stdout which is detected by coloredstderr :D (and not colored as a +# result). Therefore remove LD_PRELOAD and re-exec the test. +if test -n "$LD_PRELOAD"; then + unset LD_PRELOAD + exec "$0" +fi + +# Use valgrind to run the tests if it's available. +valgrind_cmd= +if type valgrind >/dev/null 2>&1; then + valgrind_cmd='valgrind --quiet --error-exitcode=1' +fi + # Clean locale for reproducible tests. LC_ALL=C unset LANGUAGE @@ -56,6 +70,8 @@ run_test() { shift shift + output="output-$$" + ( # Standard setup. LD_PRELOAD="$library" @@ -74,12 +90,12 @@ run_test() { export COLORED_STDERR_FORCE_WRITE fi - $valgrind_cmd "$@" "$testcase" > output 2>&1 + $valgrind_cmd "$@" "$testcase" > "$output" 2>&1 ) - diff -u "$expected" output \ + diff -u "$expected" "$output" \ || die 'failed!' - rm output + rm "$output" echo 'passed.' }