GNU bug report logs - #33097
test has filetest -a but man page doesn't list it

Previous Next

Package: coreutils;

Reported by: Martin Schulte <gnu <at> schrader-schulte.de>

Date: Fri, 19 Oct 2018 21:00:02 UTC

Severity: normal

Tags: confirmed, fixed

Merged with 15278

Done: Bernhard Voelker <mail <at> bernhard-voelker.de>

Bug is archived. No further changes may be made.

Full log


Message #32 received at 33097 <at> debbugs.gnu.org (full text, mbox):

From: Bernhard Voelker <mail <at> bernhard-voelker.de>
To: Pádraig Brady <P <at> draigBrady.com>,
 Paul Eggert <eggert <at> cs.ucla.edu>, Martin Schulte <gnu <at> schrader-schulte.de>,
 33097 <at> debbugs.gnu.org
Subject: Re: bug#33097: test has filetest -a but man page doesn't list it
Date: Mon, 22 Oct 2018 22:18:21 +0200
On 10/22/18 2:11 PM, Pádraig Brady wrote:
> On 21/10/18 16:06, Bernhard Voelker wrote:
>> On 10/21/18 2:09 AM, Paul Eggert wrote:
>>> I have the opposite impression. Any scripts using this confusing -a operator are 
>>> already broken, and we should phase it out. Not that anybody actually *uses* 
>>> coreutils "test -a".
>>
>> Done with the attached 1st patch.
>>
>> The 2nd patch is a cleanup avoiding the redundant checking of unary operators
>> in test_unop and unary_operator.
>>
>> The 3rd patch adds support for 'test -N FILE' as in bash.
>> Please check (on various platforms / file systems if possible).
> 
> Very nice.
> atime has 24 hour resolution on vfat I think,
> though I think your test should handle that.

Thanks for the review - indeed, see:

  https://en.wikipedia.org/wiki/File_Allocation_Table#Directory_table
  Date resolution
    2 seconds for last modified time,
    10 ms for creation time,
    1 day for access date,
    2 seconds for deletion time

Although I think it's unlikely that someone will dare to run the coreutils
test-suite on vfat, I'd change the atime/mtime to set back in the test
to 2 resp. 4 days:

--- a/tests/misc/test-N.sh
+++ b/tests/misc/test-N.sh
@@ -24,13 +24,13 @@ touch file || framework_failure_
 stat file
 returns_ 1 env test -N file || fail=1

-# Set access time to yesterday at noon: 'test -N' returns 0.
-touch -a -d "12:00 today -1 days" file || framework_failure_
+# Set access time to 2 days ago: 'test -N' returns 0.
+touch -a -d "12:00 today -2 days" file || framework_failure_
 stat file
 env test -N file || fail=1

-# Set mtime to the day before yesterday: 'test -N' returns 1;
-touch -m -d "12:00 today -2 days" file || framework_failure_
+# Set mtime to 2 days before atime: 'test -N' returns 1;
+touch -m -d "12:00 today -4 days" file || framework_failure_
 stat file
 returns_ 1 env test -N file || fail=1

> Also -N should work with common relatime mount option.

What do you mean exactly? I mean, -N just reads what is stored in the
file system, so there's nothing 'test' could do about it.
Well, we could include a note to the texinfo page that -N
heavily relies on the underlying file system and mount option.

Thanks & have a nice day,
Berny




This bug report was last modified 6 years and 267 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.