+2011-11-22 Jim Meyering <meyering@redhat.com>
+
+ 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 <meyering@redhat.com>
Eric Blake <eblake@redhat.com>
# 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.
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" <<EOF >&2
-Unexpected contents of $1:
-EOF
- return 1
+ return 2
}
if diff_out_=`( diff -u "$0" "$0" < /dev/null ) 2>/dev/null`; then
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 ()