From 337977d216e2759bc5b4dd3cbe223cbf8e6a9eb7 Mon Sep 17 00:00:00 2001 From: Jim Meyering Date: Tue, 22 Nov 2011 14:51:45 +0100 Subject: [PATCH] init.sh: make "compare /dev/null FILE" output more readable * tests/init.sh (compare_): Document the preferred order of arguments. (emit_diff_u_header_): New function. (compare_dev_null_): Emit a simulated diff, rather than just the contents of the unexpected file. Suggestion from Bruno Haible. --- ChangeLog | 8 ++++++++ tests/init.sh | 28 ++++++++++++++++++++-------- 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0fbcf897b..b9e5d5923 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2011-11-22 Jim Meyering + + init.sh: make "compare /dev/null FILE" output more readable + * tests/init.sh (compare_): Document the preferred order of arguments. + (emit_diff_u_header_): New function. + (compare_dev_null_): Emit a simulated diff, rather than just the + contents of the unexpected file. Suggestion from Bruno Haible. + 2011-11-21 Jim Meyering Eric Blake diff --git a/tests/init.sh b/tests/init.sh index 507901024..e2f61190f 100644 --- a/tests/init.sh +++ b/tests/init.sh @@ -221,6 +221,15 @@ export MALLOC_PERTURB_ # a partition, or to undo any other global state changes. cleanup_ () { :; } +# Emit a header similar to that from diff -u; Print the simulated "diff" +# command so that the order of arguments is clear. Don't bother with @@ lines. +emit_diff_u_header_ () +{ + printf '%s\n' "diff -u $*" \ + "--- $1 1970-01-01" \ + "+++ $2 1970-01-01" +} + # Arrange not to let diff or cmp operate on /dev/null, # since on some systems (at least OSF/1 5.1), that doesn't work. # When there are not two arguments, or no argument is /dev/null, return 2. @@ -232,17 +241,18 @@ compare_dev_null_ () test $# = 2 || return 2 if test "x$1" = x/dev/null; then - set dummy "$2" "$1"; shift + test -s "$2" || return 0 + { emit_diff_u_header_ "$@"; sed 's/^/+/' -- "$2"; } >&2 + return 1 fi - test "x$2" = x/dev/null || return 2 - - test -s "$1" || return 0 + if test "x$2" = x/dev/null; then + test -s "$1" || return 0 + { emit_diff_u_header_ "$@"; sed 's/^/-/' -- "$1"; } >&2 + return 1 + fi - cat - "$1" <&2 -Unexpected contents of $1: -EOF - return 1 + return 2 } if diff_out_=`( diff -u "$0" "$0" < /dev/null ) 2>/dev/null`; then @@ -288,6 +298,8 @@ else compare_ () { cmp "$@"; } fi +# Usage: compare EXPECTED ACTUAL +# # Given compare_dev_null_'s preprocessing, defer to compare_ if 2 or more. # Otherwise, propagate $? to caller: any diffs have already been printed. compare () -- 2.11.0