Skip to content

GNU coreutils 9.9: Detailed Test report 12/19 #9729

@ChrisDryden

Description

@ChrisDryden

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 - PR #9661

GNU Test | Ethiopian calendar translation support

[ ] date/date-iran.sh - PR #9661

GNU Test | Iranian/Persian calendar translation support

[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 - PR #9661

GNU Test | Thai calendar translation support

[ ] 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

GNU Test | nocache flag handling at EOF

[ ] dd/nocache_fail.sh

GNU Test | nocache failure handling

[ ] dd/skip-seek-past-file.sh

GNU Test | Skip/seek past end of file behavior

[ ] dd/stderr.sh

GNU Test | Stderr output formatting

[ ] env/env-signal-handler.sh - PR #9465, PR #9658

GNU Test | --default-signal, --block-signal, --list-signal-handling flags

[ ] fmt/non-space.sh - PR #9329

GNU Test | Handle invalid UTF-8 input by replacing malformed sequences

[ ] fold/fold-zero-width.sh - PR #9274

GNU Test | Zero-width character handling in fold

[ ] ls/ls-misc.pl

GNU Test | Miscellaneous ls tests

[ ] ls/stat-free-symlinks.sh

GNU Test | Symlink handling without stat calls

[ ] misc/close-stdout.sh

GNU Test | Proper handling of closed stdout

[ ] misc/stdbuf.sh

GNU Test | Line/block buffering with fifos

[ ] misc/tsort.pl

GNU Test | Topological sort tests

[ ] misc/unexpand.pl - PR #9265

GNU Test | Tab unexpansion edge cases

[ ] 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

[ ] ptx/ptx.pl - PR #9681, PR #9682

GNU Test | Permuted index generation tests

[ ] rm/one-file-system.sh - PR #7569

GNU Test | --one-file-system and --preserve-root=all implementation

[ ] rm/rm1.sh

GNU Test | Basic rm functionality tests

[ ] runcon/runcon-no-reorder.sh

GNU Test | SELinux context argument ordering

[ ] seq/seq-epipe.sh - PR #9657

GNU Test | SIGPIPE handling macro for proper exit codes

[ ] shred/shred-passes.sh - PR #9317, PR #9649

GNU Test | Deterministic pass sequence + stop on write errors

[ ] sort/sort-continue.sh - PR #9107

GNU Test | Continue after SIGPIPE/write errors

[ ] sort/sort-debug-keys.sh - PR #9468

GNU Test | Debug key annotation alignment

[ ] sort/sort-debug-warn.sh - PR #9468

GNU Test | Debug warning message formatting

[ ] sort/sort-float.sh

GNU Test | Floating point number sorting

[ ] sort/sort-h-thousands-sep.sh

GNU Test | Human-readable sort with thousands separators

[ ] sort/sort-merge-fdlimit.sh

GNU Test | Merge sort file descriptor limits

[ ] sort/sort-month.sh - PR #9722

GNU Test | Locale-aware month parsing (ICU), handles "janv." and Latin-1

[ ] sort/sort.pl

GNU Test | Comprehensive sort tests

[ ] stty/stty-row-col.sh - PR #9516

GNU Test | Hex/octal parsing for rows and columns

[ ] stty/stty.sh - PR #9432, PR #9490, PR #9517

GNU Test | --all output formatting, COLUMNS env, baud rate settings

[ ] tac/tac-2-non-seekable.sh - PR #9664

GNU Test | Detect closed stdin before Rust sanitizes to /dev/null

[ ] tail/follow-name.sh - PR #9664

GNU Test | Follow renamed/recreated files

[ ] tail/follow-stdin.sh - PR #9630

GNU Test | Skip events for untracked files in follow mode

[ ] tail/inotify-rotate-resources.sh

GNU Test | Inotify resource handling during log rotation

[ ] tail/pid-pipe.sh - PR #9663

GNU Test | --pid with FIFO using non-blocking open

[ ] tail/pipe-f.sh

GNU Test | Following pipes

[ ] tail/symlink.sh - PR #9664

GNU Test | Symlink following behavior

[ ] tail/tail.pl - PR #9305

GNU Test | Fix "couldn't allocate absolute path" under pseudo

[ ] wc/wc-cpu.sh - PR #9144

GNU Test | Respect GLIBC_TUNABLES to disable AVX/AVX512 SIMD

SKIPPED

[x] cp/cp-mv-enotsup-xattr.sh - PR #9530

GNU Test | xattr ENOTSUP handling - TEST ENABLED

[ ] df/skip-rootfs.sh

GNU Test | Skip rootfs in output

[ ] id/gnu-zero-uids.sh

GNU Test | Handling of UID 0

[ ] id/smack.sh

GNU Test | SMACK security labels

[ ] mkdir/smack-no-root.sh

GNU Test | SMACK labels without root

[ ] mkdir/smack-root.sh

GNU Test | SMACK labels with root

[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 - PR #9664

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 - PR #9173

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)

GNU Test | Intercepts glibc to simulate I/O errors

df/no-mtab-status.sh (LD_PRELOAD)

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)

GNU Test | Intercepts readdir to simulate failures

stty/bad-speed.sh (LD_PRELOAD)

GNU Test | Intercepts cfsetispeed to simulate failures

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

GNU Test | Usage message consistency with getopt

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions