From 485dba4e32a2dc3c9bbbca9818707033a505717e Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Tue, 11 Aug 2026 21:23:00 +0200 Subject: [PATCH 1/3] gnu: list the tests excluded from the pass/fail percentages --- util/gnu-unfixable-tests.txt | 44 ++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 util/gnu-unfixable-tests.txt diff --git a/util/gnu-unfixable-tests.txt b/util/gnu-unfixable-tests.txt new file mode 100644 index 0000000000..de26aec2e3 --- /dev/null +++ b/util/gnu-unfixable-tests.txt @@ -0,0 +1,44 @@ +# GNU test-suite entries left out of the uutils pass/fail percentages. +# +# They do not check observable behavior, they check that the binary is built +# like GNU's: they place gdb breakpoints in GNU's own C sources, or interpose a +# specific libc entry point with LD_PRELOAD and give up when it is not called. +# Passing them would mean reshaping our internals to match GNU's rather than +# fixing anything a user can see. +# +# The list is consumed by the tracking repo +# (https://github.com/uutils/coreutils-tracking) so the numbers describe the +# tests we can actually influence. Tests that are merely hard, unimplemented or +# intermittent do NOT belong here - they stay counted on purpose. See +# https://github.com/uutils/coreutils/issues/13841 +# +# Format: one "/.log" entry per line, '#' starts a comment. That is +# the log name the results are keyed by; the source in the GNU tree is the same +# path with a .sh (or .pl) extension. + + +# --- Structurally impossible --------------------------------------------- +# Nothing we can write in Rust makes these run. + +# Both grep a line number out of GNU's C source ("^excise" in src/remove.c, +# "^tail_forever_inotify" in src/tail.c) and break there, so the breakpoint can +# only resolve for a binary compiled from those files. +rm/r-root.log +tail/inotify-race.log +tail/inotify-race2.log + +# require_gnu_ is "test $(uname) = GNU"; skipped on Linux for GNU coreutils too. +id/gnu-zero-uids.log + + +# --- Require matching GNU's libc entry points ---------------------------- +# LD_PRELOAD does fire for Rust binaries, but each of these overrides the one +# symbol GNU happens to call and self-skips otherwise. We would have to route +# through that same symbol - in df's case dropping /proc/self/mountinfo for +# getmntent/mtab - purely so the interception lands. + +cp/nfs-removal-race.log # overrides __xstat/stat; std uses statx +dd/fail-ftruncate-fstat.log # overrides ftruncate/fstat +df/skip-duplicates.log # needs HAVE_GETMNTENT, overrides fopen on the mtab +nproc/nproc-quota.log # overrides sched_getscheduler +rm/rm-readdir-fail.log # overrides readdir; std uses readdir64 From 87c096beeb63a3a19d5d6fc358c47278a2969179 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Wed, 12 Aug 2026 13:01:32 +0200 Subject: [PATCH 2/3] Update util/gnu-unfixable-tests.txt Co-authored-by: oech3 <79379754+oech3@users.noreply.github.com> --- util/gnu-unfixable-tests.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/util/gnu-unfixable-tests.txt b/util/gnu-unfixable-tests.txt index de26aec2e3..69bf9d8bbe 100644 --- a/util/gnu-unfixable-tests.txt +++ b/util/gnu-unfixable-tests.txt @@ -40,5 +40,4 @@ id/gnu-zero-uids.log cp/nfs-removal-race.log # overrides __xstat/stat; std uses statx dd/fail-ftruncate-fstat.log # overrides ftruncate/fstat df/skip-duplicates.log # needs HAVE_GETMNTENT, overrides fopen on the mtab -nproc/nproc-quota.log # overrides sched_getscheduler rm/rm-readdir-fail.log # overrides readdir; std uses readdir64 From f5252548110eb83704ea648230d50466a7f04bc2 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Thu, 13 Aug 2026 18:56:33 +0200 Subject: [PATCH 3/3] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- util/gnu-unfixable-tests.txt | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/util/gnu-unfixable-tests.txt b/util/gnu-unfixable-tests.txt index 69bf9d8bbe..6440b8a30b 100644 --- a/util/gnu-unfixable-tests.txt +++ b/util/gnu-unfixable-tests.txt @@ -37,7 +37,11 @@ id/gnu-zero-uids.log # through that same symbol - in df's case dropping /proc/self/mountinfo for # getmntent/mtab - purely so the interception lands. -cp/nfs-removal-race.log # overrides __xstat/stat; std uses statx -dd/fail-ftruncate-fstat.log # overrides ftruncate/fstat -df/skip-duplicates.log # needs HAVE_GETMNTENT, overrides fopen on the mtab -rm/rm-readdir-fail.log # overrides readdir; std uses readdir64 +# overrides __xstat/stat; std uses statx +cp/nfs-removal-race.log +# overrides ftruncate/fstat +dd/fail-ftruncate-fstat.log +# needs HAVE_GETMNTENT, overrides fopen on the mtab +df/skip-duplicates.log +# overrides readdir; std uses readdir64 +rm/rm-readdir-fail.log