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

From: [email-masked] (GNU bug Tracking System)
Date: Wed, 22 Jun 2011 14:11:02 +0000

Your bug report

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

which was filed against the coreutils package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
8909: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=8909
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#8909: tests/ls/stat-free-color: fails on OpenSuSE 11.4
From: Jim Meyering <[email-masked]>
To: Bernhard Voelker <[email-masked]>
Cc: [email-masked]
Date: Wed, 22 Jun 2011 16:09:54 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Bernhard Voelker wrote:
> On 06/21/2011 04:16 PM, Jim Meyering wrote:
>> Bernhard Voelker wrote:
>>> On 06/21/2011 03:41 PM, Jim Meyering wrote:
>>>> 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.
>>
>> Thanks.
>>
>>> 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 .
>>
>> That would be more robust.
>> Do you feel like writing the patch?
>
> Attached try #1 and the log.
>
> I'm not sure about x-platform calculation, but I guess
>   n_lines=$(expr $n_lines - $n_lines_help)
> is okay - actually I saw it somewhere else in tests/.
>
> Have a nice day,
> Berny
>
>>>From 3a6e0abab8eaa92922ce4cb1cfdfda278ccde8a6 Mon Sep 17 00:00:00 2001
> From: Bernhard Voelker <[email-masked]>
> Date: Tue, 21 Jun 2011 16:26:50 +0200
> Subject: [PATCH] tests: ls/stat-free-color: count only the number of stat calls compared to --help
>
> * tests/ls/stat-free-color: The system may do additional stat calls upon loading
> (seen on OpenSuSE-11.4). Count only the number of stat calls compared to --help.
> ---
>  tests/ls/stat-free-color |    6 ++++++
>  1 files changed, 6 insertions(+), 0 deletions(-)
>
> diff --git a/tests/ls/stat-free-color b/tests/ls/stat-free-color
> index b1c4744..03ef6e1 100755
> --- a/tests/ls/stat-free-color
> +++ b/tests/ls/stat-free-color
> @@ -49,9 +49,15 @@ MULTIHARDLINK 00
>  EOF
>  eval $(dircolors -b color-without-stat)
>
> +# The system may do additional *stat*()s upon loading.
> +# Count the difference compared to a dummy "--help" call.
> +strace -o log -e stat,lstat,stat64,lstat64 ls --color=always --help >/dev/null 2>&1 || fail=1
> +n_lines_help=$(wc -l < log)
>  strace -o log -e stat,lstat,stat64,lstat64 ls --color=always . || fail=1
>  n_lines=$(wc -l < log)
>
> +n_lines=$(expr $n_lines - $n_lines_help)
> +
>  # Expect one or two stat calls.
>  case $n_lines in
>    1|2) ;;

Thank you.
I've made some small adjustments including file name and variable name changes.
Also, I've tightened up the test to expect exactly one stat-like call:
(Since I've changed your commit, I'll wait for an ACK before pushing it)
And I've marked this issue as "done".

>From 376b19410eb57f36f711750ca75ed30dc1ebddce Mon Sep 17 00:00:00 2001
From: Bernhard Voelker <[email-masked]>
Date: Tue, 21 Jun 2011 16:26:50 +0200
Subject: [PATCH] tests: stat-free-color: do not count stat calls before main

* tests/ls/stat-free-color: The system may perform additional stat
calls upon loading (seen on OpenSuSE-11.4).  Count only the number
of stat calls compared to --help.
This also reduces back to "1" the number of expected calls,
effectively reverting part of 2011-06-01 commit, ccf2d9a4.
---
 tests/ls/stat-free-color |   15 ++++++++++++---
 1 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/tests/ls/stat-free-color b/tests/ls/stat-free-color
index b1c4744..1288560 100755
--- a/tests/ls/stat-free-color
+++ b/tests/ls/stat-free-color
@@ -49,13 +49,22 @@ MULTIHARDLINK 00
 EOF
 eval $(dircolors -b color-without-stat)

+# The system may perform additional stat-like calls before main.
+# To avoid counting those, first get a baseline count by running
+# ls with only the --help option.  Then, compare that with the
+# invocation under test.
+strace -o log-help -e stat,lstat,stat64,lstat64 ls --help >/dev/null || fail=1
+n_lines_help=$(wc -l < log-help)
+
 strace -o log -e stat,lstat,stat64,lstat64 ls --color=always . || fail=1
 n_lines=$(wc -l < log)

+n_stat=$(expr $n_lines - $n_lines_help)
+
 # Expect one or two stat calls.
-case $n_lines in
-  1|2) ;;
-  *) fail=1 ;;
+case $n_stat in
+  1) ;;
+  *) fail=1; head -n30 log* ;;
 esac

 Exit $fail
--
1.7.6.rc2.302.gc2115

Subject: tests/ls/stat-free-color: fails on OpenSuSE 11.4
From: Bernhard Voelker <[email-masked]>
To: [email-masked]
Date: Tue, 21 Jun 2011 09:46:29 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi,

`make check` of coreutils.git (latest commit  is 
18bd9ce40ae05d52543fc9c5a5fdf4f82d13068d) on an OpenSuSE 11.4
host fails (everything else was ok/skipped):

FAIL: ls/stat-free-color (exit: 1)
==================================

++ initial_cwd_=/home/berny/coreutils/tests
++ fail=0
+++ testdir_prefix_
+++ printf gt
++ pfx_=gt
+++ mktempd_ /home/berny/coreutils/tests gt-stat-free-color.XXXX
+++ case $# in
+++ destdir_=/home/berny/coreutils/tests
+++ template_=gt-stat-free-color.XXXX
+++ MAX_TRIES_=4
+++ case $destdir_ in
+++ case $template_ in
++++ unset TMPDIR
++++ mktemp -d -t -p /home/berny/coreutils/tests gt-stat-free-color.XXXX
+++ d=/home/berny/coreutils/tests/gt-stat-free-color.07ux
+++ case $d in
+++ test -d /home/berny/coreutils/tests/gt-stat-free-color.07ux
++++ ls -dgo /home/berny/coreutils/tests/gt-stat-free-color.07ux
++++ tr S -
+++ perms='drwx------ 2 4096 Jun 21 09:24 
/home/berny/coreutils/tests/gt-stat-free-color.07ux'
+++ case $perms in
+++ test 0 = 0
+++ echo /home/berny/coreutils/tests/gt-stat-free-color.07ux
+++ return
++ test_dir_=/home/berny/coreutils/tests/gt-stat-free-color.07ux
++ cd /home/berny/coreutils/tests/gt-stat-free-color.07ux
++ gl_init_sh_nl_='
'
++ IFS='
'
++ for sig_ in 1 2 3 13 15
+++ expr 1 + 128
++ eval 'trap '\''Exit 129'\'' 1'
+++ trap 'Exit 129' 1
++ for sig_ in 1 2 3 13 15
+++ expr 2 + 128
++ eval 'trap '\''Exit 130'\'' 2'
+++ trap 'Exit 130' 2
++ for sig_ in 1 2 3 13 15
+++ expr 3 + 128
++ eval 'trap '\''Exit 131'\'' 3'
+++ trap 'Exit 131' 3
++ for sig_ in 1 2 3 13 15
+++ expr 13 + 128
++ eval 'trap '\''Exit 141'\'' 13'
+++ trap 'Exit 141' 13
++ for sig_ in 1 2 3 13 15
+++ expr 15 + 128
++ eval 'trap '\''Exit 143'\'' 15'
+++ trap 'Exit 143' 15
++ trap remove_tmp_ 0
+ path_prepend_ ../src
+ test 1 '!=' 0
+ path_dir_=../src
+ case $path_dir_ in
++ cd /home/berny/coreutils/tests/../src
++ echo /home/berny/coreutils/src
+ abs_path_dir_=/home/berny/coreutils/src
+ case $abs_path_dir_ in
+ 
PATH=/home/berny/coreutils/src:/home/berny/coreutils/src:/usr/lib64/mpi/gcc/openmpi/bin:/home/berny/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/usr/lib64/jvm/jre/bin
+ create_exe_shims_ /home/berny/coreutils/src
+ case $EXEEXT in
+ return 0
+ shift
+ test 0 '!=' 0
+ export PATH
+ print_ver_ ls
+ test yes = yes
+ local i
+ for i in '$*'
+ env ls --version
ls (GNU coreutils) 8.12.99-18bd
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later 
<http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Richard M. Stallman and David MacKenzie.
+ require_strace_ stat
+ test 1 = 1
+ strace -V
+ strace -qe stat echo
+ require_dirent_d_type_
+ python
+ python /home/berny/coreutils/tests/d_type-check
+ for i in 1 2 3
+ ln -s nowhere dangle-1
+ for i in 1 2 3
+ ln -s nowhere dangle-2
+ for i in 1 2 3
+ ln -s nowhere dangle-3
+ cat
++ dircolors -b color-without-stat
+ eval 
'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
++ 
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
+ Exit 1
+ set +e
+ exit 1
+ exit 1
+ remove_tmp_
+ __st=1
+ cleanup_
+ :
+ cd /home/berny/coreutils/tests
+ chmod -R u+rwx /home/berny/coreutils/tests/gt-stat-free-color.07ux
+ rm -rf /home/berny/coreutils/tests/gt-stat-free-color.07ux
+ exit 1

How can I help?

Have a nice day,
Berny