On 05/03/19 13:17, Assaf Gordon wrote:
> Hello Pádraig,
> 
> On 2019-03-04 3:18 a.m., Pádraig Brady wrote:
>> We plan to release coreutils-8.31 in the coming week
> 
> Thanks for all the hard work, and for cleaning up and finalizing the 
> 'env' patch.
> 
> 
> Some test results:
> 
> No failures on the following:
>    Debian unstable (sparc64)
>    CentOS 7 (ppc64le)
>    CentOS 7 (ppc64)
>    CentOS 7 (x86_64)
>    OpenBSD 6.2 (amd64)
>    Raspbian 9.6 (armv7l)
>    Ubuntu 14.04 (aarch64)
> 
> few failures:

> On Mac OS X:
>    FAIL: tests/misc/test-N

> On Debian 8.11 / mips64:
>    FAIL: tests/misc/test-N

Hopefully the attached should avoid these false failures in test-N

cheers,
Pádraig

>From 1a02a3add05b9a2a46d87c660f58cdfc0fa5640e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?P=C3=A1draig=20Brady?= <[email protected]>
Date: Wed, 6 Mar 2019 20:09:16 -0800
Subject: [PATCH] tests: test-N: fix false positives on some systems

Testing by Assaf Gordon on OSX showed the atime wasn't
being updated when explicitly set back in time.
Also Debian 8.11 / mips64 was seen to not update the
mtime when truncating an empty file.

* tests/misc/test-N.sh: Isolate from different timestamping
behaviors of various (file) systems, by correlating
the timestamps with stat(1) before using `test -N`.
---
 tests/misc/test-N.sh | 22 ++++++++++++++++------
 1 file changed, 16 insertions(+), 6 deletions(-)

diff --git a/tests/misc/test-N.sh b/tests/misc/test-N.sh
index 348139b..0b1ccfe 100755
--- a/tests/misc/test-N.sh
+++ b/tests/misc/test-N.sh
@@ -17,26 +17,36 @@
 # along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 . "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
-print_ver_ test
+print_ver_ test stat
+
+stat_test_N() { env test "$(stat -c '%Y' "$1")" -gt "$(stat -c '%X' "$1")"; }
 
 # For a freshly touched file, atime should equal mtime: 'test -N' returns 1.
 touch file || framework_failure_
 stat file
-returns_ 1 env test -N file || fail=1
+if ! stat_test_N file; then
+  returns_ 1 env test -N file || fail=1
+fi
 
 # 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
+if stat_test_N file; then
+  env test -N file || fail=1
+fi
 
 # 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
+if ! stat_test_N file; then
+  returns_ 1 env test -N file || fail=1
+fi
 
 # Now modify the file: 'test -N' returns 0.
-> file || framework_failure_
+echo 'data' > file || framework_failure_
 stat file
-env test -N file || fail=1
+if stat_test_N file; then
+  env test -N file || fail=1
+fi
 
 Exit $fail
-- 
2.9.3

Reply via email to