Subject: bug#8909: tests/ls/stat-free-color: fails on OpenSuSE 11.4

From: Bernhard Voelker <[email-masked]>
Date: Tue, 21 Jun 2011 16:05:55 +0200

On 06/21/2011 03:41 PM, Jim Meyering wrote:
> Bernhard Voelker wrote:
> ...
>> LS_COLORS='rs=0:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=00:su=00:sg=00:ca=00:tw=00:ow=00:st=00:ex=00:mh=00:'
>> ++ export LS_COLORS
>> + strace -o log -e stat,lstat,stat64,lstat64 ls --color=always .
>> color-without-stat
>> dangle-1
>> dangle-2
>> dangle-3
>> log
>> ++ wc -l
>> + n_lines=5
>> + case $n_lines in
>> + fail=1
> ...
>> How can I help?
>
> Thanks for testing and the report.
> If you apply the patch below and rerun the test like this,
>
>      make check -C tests TESTS=ls/stat-free-color VERBOSE=yes
>
> then the offending strace output should help understand where
> the extra stat calls are coming from.
>
> For reference, I get this single call on Fedora 15:
>
>      stat(".", {st_mode=S_IFDIR|0700, st_size=4096, ...}) = 0
>
> diff --git a/tests/ls/stat-free-color b/tests/ls/stat-free-color
> index b1c4744..a1f6418 100755
> --- a/tests/ls/stat-free-color
> +++ b/tests/ls/stat-free-color
> @@ -55,7 +55,7 @@ n_lines=$(wc -l<  log)
>   # Expect one or two stat calls.
>   case $n_lines in
>     1|2) ;;
> -  *) fail=1 ;;
> +  *) fail=1; cat log;;
>   esac
>
>   Exit $fail
>
> --------------------------
>
> It might be useful to see the entire strace output, too.
> To get that, remove the "-e stat,lstat,stat64,lstat64" argument
> from the strace invocation, and rerun the test.

The output of both runs is attached.
stat("/usr/lib64/mpi/gcc/openmpi/lib64") and friends is the culprit.

I can't remember to have anything un-OpenSuSE-11.4-like in my toolchain.

To me it seems that the test should count the difference of the
number of stat,lstat,stat64,lstat64 calls when run
   a) as a dummy:  ls --color=always --help
and
   b) for ".":     ls --color=always .

Have a nice day,
Berny