bug-coreutils
[Top][All Lists]
Advanced

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

Re: 'make check' fails


From: Jim Meyering
Subject: Re: 'make check' fails
Date: Sat, 05 Dec 2009 11:03:28 +0100

Pádraig Brady wrote:
> Sergei Steshenko wrote:
>> Hello,
>>
>> I've been running 'make check' on freshly installed SUSE-11.1, and it
>> was in VirtualBox. The disk was a VirtualBox one - not a shared folder, and
>> it was attached to virtual IDE controller (not SATA).
>>
>> Screen output of 'make check' is attached, the failure is:
>>
>> "
>> FAIL: ls/readdir-mountpoint-inode (exit: 1)
>
>> +++ dirname /file_exchange
>> ++ parent_dir=/
>> ++ eval 'ls -i  ...
>> + readdir_inode='?'
>> ++ env stat --format=%i /file_exchange
>> + stat_inode=0
>> + test '?' = 0
>> + fail=1
>
> Thanks for the report. It looks like this test failure was triggered by:
> http://git.savannah.gnu.org/gitweb/?p=coreutils.git;a=commit;h=36edf7ba
>
> I.E. there is now a mismatch between `ls -i` and `stat --format=%i`,
> as ls is now doing extra validation and outputting '?' for invalid inodes,
> whereas stat is blindly printing the st_ino.

Thanks for investigating.

> Should I convert '?' to '0' in the test?
> Should I modify the output from stat to match ls?

Maybe neither.
The "?" makes me think /file_exchange is a dangling symlink.
If that's the case, selecting only directories may be enough:

diff --git a/tests/ls/readdir-mountpoint-inode 
b/tests/ls/readdir-mountpoint-inode
index c021473..de563d7 100755
--- a/tests/ls/readdir-mountpoint-inode
+++ b/tests/ls/readdir-mountpoint-inode
@@ -65,6 +65,8 @@ inode_via_readdir()
 for dir in $mount_points; do
   readdir_inode=$(inode_via_readdir $dir)
   stat_inode=$(env stat --format=%i $dir)
+  # skip non-directories (i.e., dangling symlinks)
+  test -d $dir || continue
   test "$readdir_inode" = "$stat_inode" || fail=1
 done

If that doesn't do it, then we can skip $dir when stat_inode is 0.

Sergei, what do these print for you?

  env ls -li  / |grep file_exchange
  env ls -lidL /file_exchange




reply via email to

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