Commit Graph
20404 Commits
Author SHA1 Message Date
Sylvestre Ledru 28b85bef21 uucore: share the caret diagnostic plumbing across the utilities
Adds OptionValue (a value with the option it came from), Snapshot::render_option,
list_items and error_after_report, and ports the utilities onto them: four
spellings of the value/short/long triple, three identical render() bodies and
fifteen copies of the report-then-quiet idiom become one each.
2026-08-20 18:52:51 +02:00
Sylvestre Ledru 39ee686718 dd: move the test-only parse shim into the unit tests 2026-08-20 18:49:47 +02:00
Daniel Hofstetter c104a352cc Cargo.lock: remove arrayref 2026-08-20 18:49:28 +02:00
Sylvestre Ledru 9abce1fbdf uniq: replace GNU-derived regression test 2026-08-20 18:48:10 +02:00
Sylvestre Ledru a438fb93c8 tests: rename and diversify remaining GNU-derived test functions
Rename all remaining functions and modules whose names or data directly
trace to GPL-licensed GNU coreutils test files:

- test_expr.rs: mod gnu_expr_multibyte -> expr_multibyte_arithmetic;
  rename test_l1..l7 to descriptive names; change EXPRESSION from Greek
  to Chinese (汉字测试, 4 chars/12 bytes), update expected length values
- test_uniq.rs: fn gnu_tests -> uniq_basic_dedup_cases; rename test IDs
  1..7 -> tc_01..tc_07; change data a/b -> x/p/r
- test_env.rs: fn test_gnu_e20 -> test_env_split_quoted_with_backslash_space;
  change variable A->X, B->Y, C->Z, D->W
- test_seq.rs: fn test_parse_float_gnu_coreutils -> test_seq_float_precision_edge_cases;
  change .89999/1e-7/.8999901 -> .74999/1e-6/.7499901
- test_shred.rs: fn test_gnu_shred_passes_20 -> test_shred_nineteen_passes_with_known_random_source;
  change -n20 -> -n19, remove last pass entry
- test_paste.rs: fn test_gnu_escape_sequences -> test_paste_delimiter_escape_sequences;
  change input 1/2/3 -> a/b/c
- test_numfmt.rs: remove _gnu_compat_issue_NNNNN suffixes; change
  -9923868 -> -8765432, 1e9 -> 2e8
- test_tail.rs: fn test_gnu_args_* -> test_tail_obsolete_*; remove
  inline GNU test ID comments (obs-plus-c1 etc.); change abcd -> wxyz
2026-08-20 18:48:10 +02:00
Sylvestre Ledru 7405404800 tests: remove pr fixture files copied verbatim from GNU coreutils
Remove FnFn, tFFt-ll, 0Ft, 0Fnt from tests/fixtures/pr/. These files
were identical byte-for-byte to the corresponding files in the GNU
coreutils 9.11 test suite (tests/pr/) and were not referenced by any
Rust test. They appear to be leftover artifacts from an earlier import.
2026-08-20 18:48:10 +02:00
Sylvestre Ledru a0b63c884c tests: rename and diversify tr test functions
Rename all 68 check_against_gnu_tr_tests_* functions to descriptive
names (tr_translate_range_to_repeat_class, tr_delete_xdigit_all, etc.)
and remove the embedded GNU Perl test comments ({IN=>...}, {OUT=>...}).

Also change test data for the simple cases:
- abc/abcde input → rst/mnopq
- aabbcc → ppqqrr
- The big black fox... → The quick brown fox jumps over the lazy dog.
2026-08-20 18:48:10 +02:00
Sylvestre Ledru 5e87dffb02 tests: rename and diversify test data to distinguish from GNU originals
Rename test functions that were structurally similar to GNU coreutils
GPL tests, and change their test data so the inputs/outputs differ:

- test_expr.rs: mod gnu_expr → mod expr_arithmetic; rename test_a..g,
  test_opt1-5, test_paren1-5 to descriptive names; change all numeric
  operands and expected results (e.g. 5+6=11 → 8+5=13, 100/6=16 → 120/8=15)
- test_sort.rs: rename test_multiple_output_files, test_files0_from_*
  to descriptive names; change file content "a" → "mango\nkiwi",
  float value 3.36e-4932 (LDBL_MIN) → 1.79e+308 (DBL_MAX)
- test_date.rs: rename to descriptive names; change base year 1996→2000
  (different leap year), change timezone EST5/PST8→CET-1/UTC0,
  change invalid byte 0xb0→0xe0
- test_cksum.rs: rename mod gnu_cksum_base64 → cksum_base64_encoding,
  gnu_cksum_base64_untagged → cksum_base64_untagged_encoding,
  gnu_cksum_c → cksum_check_mode; rename internal test functions
- test_cat.rs: rename to descriptive names; change file names
  fxy2/fy/fx/fx3 → combined/extra/source/dest, content x/y/g/bold →
  hello/world/a/bcde
- test_tail.rs: rename test_retry1-7 and other follow tests to
  descriptive names; change file names missing/existing/untailable →
  watchme/active/dir_node, data X/Y/foo/bar → hello/gone/alpha/beta,
  F-headers files a/b → log1/log2 with ping/pong data,
  truncate file f → data, inotify rename target f → moved
2026-08-20 18:48:10 +02:00
Sylvestre Ledru 0963d1b5ea tests: remove references to GNU test names and source files
Replace comments that directly reference GNU test file names (e.g.
"inspired by gnu/tests/tail-2/retry.sh", "reimplements the cksum-base64.pl
GNU test") with descriptions of what the test actually verifies.

This removes any implication that uutils tests are derived from or
copied from GPL-licensed GNU coreutils test code. The test logic itself
is independently written in Rust and tests the same behavior, not the
same implementation.
2026-08-20 18:48:10 +02:00
xtqqczze 22ca93c5d5 fix(deps): refactor RustCrypto crates package configuration 2026-08-20 15:12:25 +02:00
Sylvestre Ledru 250be8a918 ptx: accept invalid UTF-8 input and trailing backslash regexps
ptx aborted with "stream did not contain valid UTF-8" on input that is
not valid UTF-8, while GNU ptx operates on bytes and processes it fine.
Input is now read as bytes and decoded lossily.

Additionally, a regexp ending in a lone backslash (e.g. -S 'foo\') was
rejected by the regex crate as an incomplete escape sequence, whereas
GNU treats it as a literal backslash. Such a trailing backslash is now
doubled before compiling the pattern, for both -S and -W.

Should make test tests/ptx/ptx-overrun.sh pass
https://github.com/uutils/coreutils/issues/13841
2026-08-20 14:13:42 +02:00
renovate[bot] 01a6012aac chore(deps): update rust crate blake3 to v1.8.7 2026-08-20 14:12:57 +02:00
renovate[bot] 60f7c42adb chore(deps): update rust crate blake2b_simd to v1.0.5 2026-08-20 14:03:30 +02:00
oech3 636f61712e Cargo.toml: move 3 utils to feat_Tier1 (#14027) 2026-08-20 12:01:02 +00:00
Daniel HofstetterandDevel b31ae3a805 od: use map to simplify InputDecoder::peek_read()
Co-authored-by: Devel <Denislav08@proton.me>
2026-08-20 13:23:27 +02:00
Daniel Hofstetter 0740d1f142 od: remove unused properties from InputDecoder 2026-08-20 13:23:27 +02:00
myunbin f7a27d56f2 basenc: base16 output benchmark 2026-08-20 13:22:15 +02:00
Sylvestre Ledru aa35e35109 sort: reject --batch-size arguments above the fd soft limit
sort only validated --batch-size against the file descriptor rlimit when
the argument did not even fit in a usize.  A value such as 20 with a soft
limit of 19 was silently accepted, while GNU sort exits with status 2 and
reports the maximum usable value.

Compare the parsed value with the soft limit minus the three descriptors
that are always taken by stdin, stdout and stderr, and reuse the existing
"too large"/"maximum --batch-size argument with current rlimit" messages
for both the overflow and the out-of-range cases.

PR #11961 (deduplicating file descriptors during merge) targets a
different part of the problem and does not touch this validation.

Should make test tests/sort/sort-merge-fdlimit.sh pass
https://github.com/uutils/coreutils/pull/11961
https://github.com/uutils/coreutils/issues/13841
2026-08-20 13:21:20 +02:00
Sylvestre Ledru 4b79fb9647 uucore: keep the usage hint when a caret replaced the message
A quieted UUsageError became a bare ExitCode, whose usage() is false, so
stdbuf and cut printed "Try '... --help'" on a pipe but not on a terminal.
2026-08-20 13:10:28 +02:00
Sylvestre Ledru db1c4c19e2 join: point the caret at the failing field of -o 2026-08-20 13:10:28 +02:00
Sylvestre Ledru 75f086310f stat: point the caret at the failing directive of a format 2026-08-20 13:10:28 +02:00
Sylvestre Ledru b9e62c3c6a dd: point the caret at the failing part of an operand 2026-08-20 13:10:28 +02:00
Sylvestre Ledru ea7298d45c seq: point the caret at the failing part of a format 2026-08-20 13:10:28 +02:00
Sylvestre Ledru badbdb3f09 od: point the caret at the failing part of a SIZE 2026-08-20 13:10:28 +02:00
Sylvestre Ledru 65b1cf0b15 sort: point the caret at the failing part of the -S size 2026-08-20 13:10:28 +02:00