bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: exclude tests refactoring


From: Jim Meyering
Subject: Re: exclude tests refactoring
Date: Sat, 12 Nov 2011 21:36:47 +0100

Bruno Haible wrote:
> The Solaris 'diff' program understands option '-u', the AIX and HP-UX 'diff'
> programs don't. So here's a proposed patch. It removes the spurious output
> on all 3 platforms.
>
> 2011-11-12  Bruno Haible  <address@hidden>
>
>       Silence successful tests that use 'compare' on AIX, HP-UX, Solaris.
>       * tests/init.sh (compare): Remove "No differences encountered" or
>       synonymous output from the 'diff' program.

Hi Bruno,

Thanks for testing and noticing that.
However, I would like to avoid using a temporary file when using GNU diff.
How about something like this instead?

diff_=$(diff -u "$0" "$0" < /dev/null 2> /dev/null)
if test $? = 0; then
  if test -z "$diff_"; then
    compare () { diff -u "$@"; }
  else
    ...
  fi
elif ...

> --- tests/init.sh.orig        Sat Nov 12 21:10:28 2011
> +++ tests/init.sh     Sat Nov 12 21:10:27 2011
> @@ -222,9 +222,34 @@
>  cleanup_ () { :; }
>
>  if ( diff -u "$0" "$0" < /dev/null ) > /dev/null 2>&1; then
> -  compare () { diff -u "$@"; }
> +  compare ()
> +  {
> +    if diff -u "$@" > diff.out; then
> +      # No differences were found, but Solaris 'diff' produces output
> +      # "No differences encountered". Hide this output.
> +      rm -f diff.out
> +      true
> +    else
> +      cat diff.out
> +      rm -f diff.out
> +      false
> +    fi
> +  }
>  elif ( diff -c "$0" "$0" < /dev/null ) > /dev/null 2>&1; then
> -  compare () { diff -c "$@"; }
> +  compare ()
> +  {
> +    if diff -c "$@" > diff.out; then
> +      # No differences were found, but AIX and HP-UX 'diff' produce output
> +      # "No differences encountered" or "There are no differences between the
> +      # files.". Hide this output.
> +      rm -f diff.out
> +      true
> +    else
> +      cat diff.out
> +      rm -f diff.out
> +      false
> +    fi
> +  }
>  elif ( cmp --version < /dev/null 2>&1 | grep GNU ) > /dev/null 2>&1; then
>    compare () { cmp -s "$@"; }
>  else



reply via email to

[Prev in Thread] Current Thread [Next in Thread]