-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Description
GNU coreutils Test Coverage Tracking
Failing GNU tests as of 2025-12-19 | Test Coverage Dashboard
Overview
With the number of failing tests now small enough to track individually, this document provides detailed descriptions of each remaining test failure and the next steps needed to achieve full GNU compatibility. Theres a bunch of duplicate PR's for the same tests in the PR queue now and I'm hoping this will allow us to consolidate our efforts.
I am also hoping to separate the tests that are incompatible because they either intercept glibc calls or call gdb on specific lines of source code since we are unable to fix those tests and it wouldn't be good to track compatibility of those tests.
FAILED
[ ] cp/cp-a-selinux.sh
GNU Test | SELinux context preservation with cp -a
[ ] cp/link-heap.sh - PR #9805
GNU Test | Reduce memory usage for cp -al by skipping unnecessary tracking
[ ] cp/preserve-gid.sh - PR #9803
GNU Test | Fix preserve-gid when canonicalize fails due to inaccessible parent dirs
[ ] date/date-debug.sh
GNU Test | Debug output for date parsing
[ ] date/date-ethiopia.sh
GNU Test | Ethiopian calendar translation support
Note: PR #9661 was an attempt but has been closed.
[ ] date/date-iran.sh
GNU Test | Iranian/Persian calendar translation support
Note: PR #9661 was an attempt but has been closed.
[x] date/date-locale-hour.sh - PR #9654 ✓
GNU Test | Locale-aware 12h vs 24h format detection via nl_langinfo() - MERGED
[ ] date/date-thailand.sh
GNU Test | Thai calendar translation support
Note: PR #9661 was an attempt but has been closed.
[ ] date/date.pl
GNU Test | Comprehensive date parsing tests
[ ] dd/no-allocate.sh - PR #9806
GNU Test | Use ibs/obs-sized buffer for skip/seek on non-seekable files (ulimit -v tests)
[ ] dd/nocache_eof.sh - PR #9818
GNU Test | Fix nocache flag handling at EOF (use len=0 for posix_fadvise)
[x] dd/nocache_fail.sh - PR #9820 ✓
GNU Test | Use actual filename in nocache error messages - MERGED
[x] env/env-signal-handler.sh - PR #9465 ✓
GNU Test | --default-signal, --block-signal, --list-signal-handling flags - MERGED
[ ] fmt/non-space.sh - PR #9329
GNU Test | Handle invalid UTF-8 input by replacing malformed sequences
[ ] ls/ls-misc.pl - PR #9262
GNU Test | Align symlink coloring with GNU semantics (or=, mi=, ln=target)
[ ] ls/stat-free-symlinks.sh - PR #8728
GNU Test | Iterative loop for ls recursive directory search (prevents stack overflow)
[ ] misc/close-stdout.sh
GNU Test | Proper handling of closed stdout
[ ] misc/stdbuf.sh
GNU Test | Line/block buffering with fifos
[ ] misc/write-errors.sh
GNU Test | Write error handling and reporting
[ ] mv/i-3.sh - PR #9599
GNU Test | TTY prompting for non-writable destination files (last failing mv test!)
[ ] numfmt/numfmt.pl
GNU Test | Number formatting comprehensive tests
[ ] ptx/ptx-overrun.sh
GNU Test | Buffer overrun prevention in ptx
[ ] rm/one-file-system.sh - PR #7569
GNU Test | --one-file-system and --preserve-root=all implementation
[ ] runcon/runcon-no-reorder.sh
GNU Test | SELinux context argument ordering
[x] shred/shred-passes.sh - PR #9317 ✓
GNU Test | Deterministic pass sequence + stop on write errors - MERGED
[x] sort/sort-continue.sh - PR #9107 ✓
GNU Test | Respect soft fd limit for merge batch sizes - MERGED
[ ] sort/sort-debug-warn.sh
GNU Test | Debug warning message formatting
[ ] sort/sort-h-thousands-sep.sh - PR #9848
GNU Test | Human-readable sort with thousands separators
[ ] sort/sort-month.sh - PR #9722
GNU Test | Locale-aware month parsing (ICU), handles "janv." and Latin-1
[ ] tac/tac-2-non-seekable.sh - PR #9664
GNU Test | Detect closed stdin before Rust sanitizes to /dev/null
[ ] tail/follow-name.sh
GNU Test | Follow renamed/recreated files
[ ] tail/follow-stdin.sh - PR #9664
GNU Test | Detect closed stdin before Rust sanitizes to /dev/null
[ ] tail/inotify-rotate-resources.sh
GNU Test | Inotify resource handling during log rotation
[ ] tail/pipe-f.sh
GNU Test | Following pipes
[ ] tail/symlink.sh
GNU Test | Symlink following behavior
[ ] tail/tail.pl
GNU Test | Comprehensive tail tests
SKIPPED
[ ] df/skip-rootfs.sh
GNU Test | Skip rootfs in output
[ ] id/gnu-zero-uids.sh
GNU Test | Handling of UID 0
[ ] id/smack.sh - PR #9866
GNU Test | SMACK security labels - adds --context flag and SMACK label display
[ ] mkdir/smack-no-root.sh - PR #9866
GNU Test | SMACK labels without root - adds --context flag for setting SMACK labels
[ ] mkdir/smack-root.sh - PR #9866
GNU Test | SMACK labels with root - adds --context flag for setting SMACK labels
[x] mkdir/writable-under-readonly.sh - PR #9530 ✓
GNU Test | Creating writable dir under readonly parent - TEST ENABLED
[ ] numfmt/mb-non-utf8.sh - PR #9807 (moves to FAIL)
GNU Test | Multibyte non-UTF8 handling - adds non-UTF8 locale to CI
[ ] pr/pr-tests.pl
GNU Test | Page formatting tests
[x] rm/fail-eperm.xpl - PR #9525, PR #9531 ✓
GNU Test | EPERM error on files not owned by user - MERGED/FIXED
[ ] tac/tac-continue.sh
GNU Test | Detect closed stdin before Rust sanitizes to /dev/null
[ ] tail/inotify-dir-recreate.sh
GNU Test | Directory recreation with inotify
[ ] timeout/timeout-group.sh
GNU Test | sigtimedwait() instead of 100ms polling (100ms → 1ms)
INCOMPATIBLE
Tests that use LD_PRELOAD to intercept glibc calls or gdb breakpoints. If we don't use the same internal calls, we will have to patch these tests.
cp/nfs-removal-race.sh (LD_PRELOAD)
GNU Test | Intercepts glibc to simulate NFS race condition
csplit/csplit-io-err.sh (LD_PRELOAD) - PR #9855, GNU PR #148
GNU Test | Intercepts glibc to simulate I/O errors
PR #9855 detects and reports write errors. GNU PR #148 removes LD_PRELOAD from test.
df/no-mtab-status.sh (LD_PRELOAD) - PR #9759 (test enabled)
GNU Test | Intercepts glibc to simulate missing mtab
df/skip-duplicates.sh (LD_PRELOAD)
GNU Test | Intercepts glibc to inject duplicate mount entries
nproc/nproc-quota.sh (LD_PRELOAD)
GNU Test | Intercepts glibc to simulate CPU quota
rm/r-root.sh (LD_PRELOAD + gdb)
GNU Test | Uses gdb breakpoints and LD_PRELOAD for safety net
rm/rm-readdir-fail.sh (LD_PRELOAD) - PR #9604
GNU Test | Intercepts readdir to simulate failures
PR #9604 wraps libc calls to handle LD_PRELOAD tests.
stty/bad-speed.sh (LD_PRELOAD) - PR #9517
GNU Test | Intercepts cfsetispeed to simulate failures
PR #9517 implements input/output baud rate setting so cfsetispeed is called.
tail/inotify-race.sh (gdb)
GNU Test | Uses gdb breakpoints to trigger race conditions
tail/inotify-race2.sh (gdb)
GNU Test | Uses gdb breakpoints to trigger race conditions
ERROR
[ ] misc/usage_vs_getopt.sh - PR #9869
GNU Test | Usage message consistency with getopt
The coreutils multicall binary doesn't use clap for argument parsing, so unrecognized options like --unknown were outputting "function/utility not found" instead of "unrecognized option". PR #9869 fixes this by detecting option-like arguments.