All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] generic/556: Adequate expected output to touch behavior change
@ 2022-05-18 20:22 Gabriel Krisman Bertazi
  2022-05-18 21:32 ` Eric Biggers
  0 siblings, 1 reply; 4+ messages in thread
From: Gabriel Krisman Bertazi @ 2022-05-18 20:22 UTC (permalink / raw)
  To: zlang; +Cc: fstests, Gabriel Krisman Bertazi

Coreutils commit d435cfc0bc55 ("touch: fix wrong
diagnostic (Bug#48106)"), released in coreutils v9.0, changed the error
reported by the tool when openat() fails with EINVAL.  Instead of
reporting a generic message for the failure of either openat() or the
following utimensat(), it now differentiates both failures with
different messages.

This change breaks generic/556, which relied on the parsing of that
message.  This test was originally developed by me on a Debian
Buster (coreutils v8.x), so I used the generic error message.  Now that
I tried to run it on a more modern distro, it reports a different error
message, which fails the test.

We could do it in a more flexible way to catch future changes.  These
are unlikely, and many other parts of fstests just use this generic
touch message, so don't bother with it here.

There is no change in behavior on the kernel side, just a broken test.
On both older and new distros, the kernel correctly rejects this invalid
sequence with -EINVAL, as shown in the strace hunk below:

...
openat(AT_FDCWD, "/scratch_mnt/strict/corac\314\247\303", ...) = -1 EINVAL
utimensat(AT_FDCWD, "/scratch_mnt/strict/corac\314\247\303", ...) = -1 EINVAL
...

Signed-off-by: Gabriel Krisman Bertazi <krisman@collabora.com>
---
 tests/generic/556.out | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tests/generic/556.out b/tests/generic/556.out
index f9dd9542fb12..12c77a5b0176 100644
--- a/tests/generic/556.out
+++ b/tests/generic/556.out
@@ -12,5 +12,5 @@ user.foo="bar"
 # file: SCRATCH_MNT/xattrs/x/f1
 user.foo="bar"
 
-touch: setting times of 'SCRATCH_MNT/strict/corac'$'\314\247\303': Invalid argument
-touch: setting times of 'SCRATCH_MNT/strict/cora'$'\303\247\303': Invalid argument
+touch: cannot touch 'SCRATCH_MNT/strict/corac'$'\314\247\303': Invalid argument
+touch: cannot touch 'SCRATCH_MNT/strict/cora'$'\303\247\303': Invalid argument
-- 
2.36.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] generic/556: Adequate expected output to touch behavior change
  2022-05-18 20:22 [PATCH] generic/556: Adequate expected output to touch behavior change Gabriel Krisman Bertazi
@ 2022-05-18 21:32 ` Eric Biggers
  2022-05-18 22:11   ` Darrick J. Wong
  2022-05-19 17:31   ` Theodore Ts'o
  0 siblings, 2 replies; 4+ messages in thread
From: Eric Biggers @ 2022-05-18 21:32 UTC (permalink / raw)
  To: Gabriel Krisman Bertazi; +Cc: zlang, fstests

On Wed, May 18, 2022 at 04:22:14PM -0400, Gabriel Krisman Bertazi wrote:
> Coreutils commit d435cfc0bc55 ("touch: fix wrong
> diagnostic (Bug#48106)"), released in coreutils v9.0, changed the error
> reported by the tool when openat() fails with EINVAL.  Instead of
> reporting a generic message for the failure of either openat() or the
> following utimensat(), it now differentiates both failures with
> different messages.
> 
> This change breaks generic/556, which relied on the parsing of that
> message.  This test was originally developed by me on a Debian
> Buster (coreutils v8.x), so I used the generic error message.  Now that
> I tried to run it on a more modern distro, it reports a different error
> message, which fails the test.
> 
> We could do it in a more flexible way to catch future changes.  These
> are unlikely, and many other parts of fstests just use this generic
> touch message, so don't bother with it here.
> 
> There is no change in behavior on the kernel side, just a broken test.
> On both older and new distros, the kernel correctly rejects this invalid
> sequence with -EINVAL, as shown in the strace hunk below:
> 
> ...
> openat(AT_FDCWD, "/scratch_mnt/strict/corac\314\247\303", ...) = -1 EINVAL
> utimensat(AT_FDCWD, "/scratch_mnt/strict/corac\314\247\303", ...) = -1 EINVAL
> ...
> 
> Signed-off-by: Gabriel Krisman Bertazi <krisman@collabora.com>
> ---
>  tests/generic/556.out | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/tests/generic/556.out b/tests/generic/556.out
> index f9dd9542fb12..12c77a5b0176 100644
> --- a/tests/generic/556.out
> +++ b/tests/generic/556.out
> @@ -12,5 +12,5 @@ user.foo="bar"
>  # file: SCRATCH_MNT/xattrs/x/f1
>  user.foo="bar"
>  
> -touch: setting times of 'SCRATCH_MNT/strict/corac'$'\314\247\303': Invalid argument
> -touch: setting times of 'SCRATCH_MNT/strict/cora'$'\303\247\303': Invalid argument
> +touch: cannot touch 'SCRATCH_MNT/strict/corac'$'\314\247\303': Invalid argument
> +touch: cannot touch 'SCRATCH_MNT/strict/cora'$'\303\247\303': Invalid argument

This would break the test on systems that still have an older version of
coreutils, right?  For example, currently kvm-xfstests test appliances are based
on Debian Bullseye by default, which isn't very old, but it has coreutils 8.32.

Can you filter the output to allow the test to pass with both old and new
coreutils versions?  Or, find another way to test the same thing without relying
on a tool that has changed its output.

- Eric

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] generic/556: Adequate expected output to touch behavior change
  2022-05-18 21:32 ` Eric Biggers
@ 2022-05-18 22:11   ` Darrick J. Wong
  2022-05-19 17:31   ` Theodore Ts'o
  1 sibling, 0 replies; 4+ messages in thread
From: Darrick J. Wong @ 2022-05-18 22:11 UTC (permalink / raw)
  To: Eric Biggers; +Cc: Gabriel Krisman Bertazi, zlang, fstests

On Wed, May 18, 2022 at 02:32:28PM -0700, Eric Biggers wrote:
> On Wed, May 18, 2022 at 04:22:14PM -0400, Gabriel Krisman Bertazi wrote:
> > Coreutils commit d435cfc0bc55 ("touch: fix wrong
> > diagnostic (Bug#48106)"), released in coreutils v9.0, changed the error
> > reported by the tool when openat() fails with EINVAL.  Instead of
> > reporting a generic message for the failure of either openat() or the
> > following utimensat(), it now differentiates both failures with
> > different messages.
> > 
> > This change breaks generic/556, which relied on the parsing of that
> > message.  This test was originally developed by me on a Debian
> > Buster (coreutils v8.x), so I used the generic error message.  Now that
> > I tried to run it on a more modern distro, it reports a different error
> > message, which fails the test.
> > 
> > We could do it in a more flexible way to catch future changes.  These
> > are unlikely, and many other parts of fstests just use this generic
> > touch message, so don't bother with it here.
> > 
> > There is no change in behavior on the kernel side, just a broken test.
> > On both older and new distros, the kernel correctly rejects this invalid
> > sequence with -EINVAL, as shown in the strace hunk below:
> > 
> > ...
> > openat(AT_FDCWD, "/scratch_mnt/strict/corac\314\247\303", ...) = -1 EINVAL
> > utimensat(AT_FDCWD, "/scratch_mnt/strict/corac\314\247\303", ...) = -1 EINVAL
> > ...
> > 
> > Signed-off-by: Gabriel Krisman Bertazi <krisman@collabora.com>
> > ---
> >  tests/generic/556.out | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> > 
> > diff --git a/tests/generic/556.out b/tests/generic/556.out
> > index f9dd9542fb12..12c77a5b0176 100644
> > --- a/tests/generic/556.out
> > +++ b/tests/generic/556.out
> > @@ -12,5 +12,5 @@ user.foo="bar"
> >  # file: SCRATCH_MNT/xattrs/x/f1
> >  user.foo="bar"
> >  
> > -touch: setting times of 'SCRATCH_MNT/strict/corac'$'\314\247\303': Invalid argument
> > -touch: setting times of 'SCRATCH_MNT/strict/cora'$'\303\247\303': Invalid argument
> > +touch: cannot touch 'SCRATCH_MNT/strict/corac'$'\314\247\303': Invalid argument
> > +touch: cannot touch 'SCRATCH_MNT/strict/cora'$'\303\247\303': Invalid argument
> 
> This would break the test on systems that still have an older version of
> coreutils, right?  For example, currently kvm-xfstests test appliances are based
> on Debian Bullseye by default, which isn't very old, but it has coreutils 8.32.
> 
> Can you filter the output to allow the test to pass with both old and new
> coreutils versions?  Or, find another way to test the same thing without relying
> on a tool that has changed its output.

Seconded, those of us running ancient distros like Ubuntu 22.04 will
need compatibility with 8.32 for a few years yet... ;)

--D

> - Eric

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] generic/556: Adequate expected output to touch behavior change
  2022-05-18 21:32 ` Eric Biggers
  2022-05-18 22:11   ` Darrick J. Wong
@ 2022-05-19 17:31   ` Theodore Ts'o
  1 sibling, 0 replies; 4+ messages in thread
From: Theodore Ts'o @ 2022-05-19 17:31 UTC (permalink / raw)
  To: Eric Biggers; +Cc: Gabriel Krisman Bertazi, zlang, fstests

On Wed, May 18, 2022 at 02:32:28PM -0700, Eric Biggers wrote:
> 
> This would break the test on systems that still have an older version of
> coreutils, right?  For example, currently kvm-xfstests test appliances are based
> on Debian Bullseye by default, which isn't very old, but it has coreutils 8.32.

Even Debian unstable is still using coreutils 8.32:

   https://packages.debian.org/search?keywords=coreutils&searchon=names&suite=all&section=all

> Can you filter the output to allow the test to pass with both old and new
> coreutils versions?

Gabriel, FYI, the filter functions live in common/filter.  There are a
large number of them see "git log common/filter" to see how they get
added.  For a really simple example, please see commit 90d132ee44b7:

    common/filter: add _filter_bash()
    
    This is needed to account for bash 5.1 adding line number annotation
    when executing a command via the -c option and it fails.  For example,
    "bash -c 'echo foo > /'" will cause bash 5.1 to report:
    
         bash: line 1: /: Is a directory
    
    instead of:
    
         bash: /: Is a directory

Cheers,

						- Ted

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2022-05-19 17:32 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-18 20:22 [PATCH] generic/556: Adequate expected output to touch behavior change Gabriel Krisman Bertazi
2022-05-18 21:32 ` Eric Biggers
2022-05-18 22:11   ` Darrick J. Wong
2022-05-19 17:31   ` Theodore Ts'o

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.