Nicolas Boichat
27efb9eff4
seq: Parse integral and fractional number of digits in the same function
...
A lot of the code can be shared, and parsing is quite straightforward
as we know that the digit is somewhat valid.
2025-04-03 17:26:38 +02:00
Nicolas Boichat
77d66bab47
seq: Refactor to actually use PreciseNumber::num_fractional_digits
...
The field was unused, and actually redundant with the precision
computed separatedly.
This simplifies the code, reintroduces testing.
2025-04-03 17:26:38 +02:00
Nicolas Boichat
84e5ee4b86
seq: Accept underflow in parameters
...
Also, add a test to check that a very, very, small number is
treated as 0. That's probably undefined behaviour, but it does
make some sense.
2025-04-03 17:26:38 +02:00
Nicolas Boichat
686f1c7841
seq: Remove custom number parsing
...
Just use the format provided function.
2025-04-03 17:26:38 +02:00
Daniel Hofstetter
293554e358
yes: fix error from manual_repeat_n lint
2025-04-03 15:38:06 +02:00
Karl McDowall
a4b621ad8a
cat: bugfix when running with -T option
...
Fixes an crash seen when running with -T option if no newline
is found in a buffer.
Added unit test to validate.
2025-04-02 18:59:27 -06:00
Chandra Kiran G
3a0b43bdf7
df: add thiserror ( #7545 )
...
* refactor: Add thiserror to df
* fix: Try fixing tests
* refactor(df): Move `df` to `thiserror`
* chore(df): Add back comment
* chore: Refactor column.rs correctly
2025-04-02 10:19:19 +02:00
Daniel Hofstetter
60ebace7f2
uucore/format: remove TODOs related to bigdecimal
2025-04-01 17:29:28 +02:00
Daniel Hofstetter
636e4a777b
uucore/format: remove Display impl
...
of ExtendedBigDecimal
2025-04-01 17:08:04 +02:00
Dorian Péron
17d81bb9a1
Merge pull request #7623 from drinkcat/parse-bigdecimal-smallfixes
...
uucore: format: Collection of small parser fixes
2025-04-01 12:36:28 +02:00
Dorian Péron
fb165850a4
Merge pull request #7567 from MoSal/faster_sort_n
...
sort: immediately compare whole lines if they parse as numbers
2025-04-01 12:14:29 +02:00
Nicolas Boichat
bdc8cd12a1
uucore: format: Remove TODO
...
Not much more that can be easily simplified now.
2025-04-01 11:20:17 +02:00
Nicolas Boichat
a46da8d0b9
uucore: format: num_parser: Allow uppercase exponent
...
1E3 and 0x1P3 are acceptable numbers.
Sprinkle uppercase values in the tests.
2025-04-01 11:20:17 +02:00
Nicolas Boichat
16131b8d7b
uucore: format: num_parser: underflow/overflow check
...
When parsing floating point numbers, return errors if we end up
overflowing/underflowing BigDecimal (e.g. with large/small exponents).
2025-04-01 11:20:17 +02:00
Nicolas Boichat
1e104b7ef9
uucore: format: num_parser: Add value to Overflow error
...
When parsing integers, we should still return the min/max value
of the type (depending on the type), and wrap that in the error.
We need to refactor the map function to handle this case better,
and add an extract function to get the value out of an error
(if any).
This fixes the integer part of #7508 .
2025-04-01 11:20:17 +02:00
Nicolas Boichat
9872263a96
uucore: format: Fix i64::MIN printing
...
-i64::MIN overflows i64, so cast to i128 first.
2025-04-01 11:20:17 +02:00
Nicolas Boichat
5bea6ff013
uucore: format: num_parser: Carve out part of parse function
...
We'll need more logic in there.
2025-04-01 11:20:17 +02:00
Nicolas Boichat
0cb37c83b9
uucore: format: num_parser: "infinity" string parsing
...
Not just "inf" is allowed, also "infinity".
2025-04-01 11:20:17 +02:00
Nicolas Boichat
5c06dd580b
uucore: format: extendedbigdecimal: Implement Neg trait
...
This is useful and will simplify some of the parsing logic later.
2025-04-01 11:20:17 +02:00
Dorian Péron
ace92dcca1
Merge pull request #7556 from drinkcat/parse-bigdecimal
...
uucore: format: num_parser: Use ExtendedBigDecimal
2025-04-01 10:52:50 +02:00
GTimothy
09a9dc72b9
checksum/cksum: fix: filename that include separator should parse + add tests
...
fixes this non-regex implementation's flaw with file_names containing
the separator's pattern:
- replaces left-to-right greedy separator match with right-to-left one.
- added bugfix tests
fixes secondary bug: positive match on hybrid posix-openssl format
adds secondary bugfix tests
Co-authored-by: Dorian Péron
<72708393+RenjiSann@users.noreply.github.com>
2025-03-31 17:18:18 +02:00
GTimothy
04ad55510b
checksum/cksum: update tests to test new parsers not regex
2025-03-31 17:18:18 +02:00
GTimothy
621f2b5c7a
checksum/cksum: rewrite lineformat parsing without regex
...
removes dependency on the regex crate for LineFormat detection and
parsing, resulting in a faster and lighter cksum binary.
2025-03-31 17:18:18 +02:00
Nicolas Boichat
30c89af9ac
uucore: format: num_parser: Make it clear that scale can only be positive
...
After scratching my head a bit about why the hexadecimal code works,
seems better to do make scale an u64 to clarify.
Note that this may u64 may exceed i64 capacity, but that can only
happen if the number of digits provided > 2**63 (impossible).
2025-03-31 10:04:08 +02:00
Nicolas Boichat
bd68eb8beb
uucore: format: num_parser: Parse exponent part of floating point numbers
...
Parse numbers like 123.15e15 and 0xfp-2, and add some tests
for that.
`parse` is becoming more and more of a monster: we should consider
splitting it into multiple parts.
Fixes #7474 .
2025-03-31 10:04:08 +02:00
Nicolas Boichat
55773e9d35
uucore: format: num_parser: Fix large hexadecimal float parsing
...
Large numbers can overflow u64 when doing 16u64.pow(scale):
do the operation on BigInt/BigDecimal instead.
Also, add a test. Wolfram Alpha can help confirm the decimal number
is correct (16-16**-21).
2025-03-31 10:04:08 +02:00
Nicolas Boichat
b5a658528b
uucore: format: Use ExtendedBigDecimal in argument code
...
Provides arbitrary precision for float parsing in printf.
Also add a printf test for that.
2025-03-31 10:04:08 +02:00
Nicolas Boichat
71a285468b
uucore: format: num_parser: Add parser for ExtendedBigDecimal
...
Very simple as the f64 parser actually uses that as intermediary
value.
Add a few tests too.
2025-03-31 10:04:08 +02:00
Nicolas Boichat
d7502e4b2e
uucore: format: num_parser: Disallow binary number parsing for floats
...
Fixes #7487 .
Also, add more tests for leading zeros not getting parsed as octal
when dealing with floats.
2025-03-31 10:04:08 +02:00
Nicolas Boichat
97e333c6d9
uucore: format: num_parser: allow leading + sign when parsing
...
Leading plus signs are allowed for all formats.
Add tests (including some tests for negative i64 values, and mixed
case special values that springed to mind).
Fixes #7473 .
2025-03-31 10:04:08 +02:00
Nicolas Boichat
40a7c65980
uucore: format: num_parser: Turn parser into a trait
...
We call the function extended_parse, so that we do not clash
with other parsing functions in other traits.
- Also implement parser for ExtendedBigDecimal (straightforward).
- Base doesn't need to be public anymore.
- Rename the error to ExtendedParserError.
2025-03-31 10:04:08 +02:00
Nicolas Boichat
8bbec16115
uucore: format: num_parser: Fold special value parsing in main parsing function
2025-03-31 10:04:08 +02:00
Nicolas Boichat
20add88afc
uucore: format: num_parser: Use ExtendedBigDecimal for internal representation
...
ExtendedBigDecimal already provides everything we need, use that
instead of a custom representation.
2025-03-31 10:04:08 +02:00
Solomon Victorino
e20500d1e5
numfmt: move to thiserror
2025-03-30 21:15:21 +02:00
Solomon Victorino
4f1d33fec3
dd: move to thiserror
2025-03-30 21:15:21 +02:00
Solomon Victorino
047d9a930b
wc/BufReadDecoderError: move to thiserror
2025-03-30 21:15:21 +02:00
Solomon Victorino
9099f342e0
unexpand: move to thiserror
2025-03-30 21:15:21 +02:00
Solomon Victorino
899c118f3f
tac: move to thiserror
2025-03-30 21:15:21 +02:00
Solomon Victorino
9db51ec828
split: move to thiserror
2025-03-30 21:15:21 +02:00
Solomon Victorino
4aba193c9c
expand: move to thiserror
2025-03-30 21:15:21 +02:00
Solomon Victorino
4cb23dd840
ptx: move to thiserror
2025-03-30 21:15:21 +02:00
ValentinBoudevin
aea23408fd
env: Move to "thiserror" + added errors test case ( #7584 )
...
Solved Issue #7535 : Removed parse_errors to follow other commands standard with thiserror
2025-03-30 11:21:57 +02:00
Sylvestre Ledru
903fa6ae88
Merge pull request #7514 from drinkcat/format-bigdecimal-tests
...
uucore: format: num_format: add `fmt` function tests, and workaround 0e10 printing.
2025-03-29 15:43:14 +01:00
Sylvestre Ledru
f5241e9d7a
Merge pull request #7605 from karlmcdowall/sum_error_handling
...
sum: Rework some error handling
2025-03-29 09:16:47 +01:00
Karl McDowall
912dc47bef
sum: Rework some error handling
...
Update sum to properly propagate errors from file-reads,
including implementing a retry on ErrorKind::Interrupted.
Also switch to using writeln! rather than println! to prevent
crashes if stdout is directed to /dev/full
2025-03-28 19:22:31 -06:00
cerdelen
8c8beb96e4
echo: fixed double hyphen as argument ( #7581 )
...
* Fixes #7558 Added check to only insert addition double hyphen if at start of arguments to correctly prepend addition hyphens for clap as well as additional test case
* additional comment
* fixes issue where flags precedes "--" as arguments
2025-03-28 13:31:48 +01:00
Sylvestre Ledru
1c75854d2f
Merge pull request #7576 from drinkcat/ci-macos
...
Test workspace CI on macos
2025-03-28 11:54:58 +01:00
Nicolas Boichat
4cecad3e35
uucore: format: num_format: add fmt function tests
...
All the other tests directly called format_float_* functions,
bypassing the additional logic in `fmt` (negative numbers, padding,
etc.).
This also tests the `parse` function in `mod.rs`, which calls back
into `try_from_spec` here. This also makes it easier to test a lot
of different format combinations without having to do end-to-end
tests in `test_printf.rs`.
Also add broken tests for the issues in #7509 and #7510 .
2025-03-27 14:41:26 +01:00
Nicolas Boichat
afbab45350
uucore: format: Workaround BigDecimal printing bug with 0
...
This is a bigdecimal issue, see
https://github.com/akubera/bigdecimal-rs/issues/144 .
Also add a few tests, including a disabled one (our workaround
is _before_ the call to format_float_decimal).
2025-03-27 14:41:26 +01:00
Nicolas Boichat
59396e32bc
chcon/runcon: Only build on Linux
...
chcon/runcon rely on the selinux crate, that is empty on
non-Linux platforms.
This doesn't matter for normal builds that use the default features
for the platform (explicitly trying to build them will fail though).
This is a problem when using `cargo test --workspace` though,
as that tries to build all packages, including uu_chcon/uu_runcon.
Just prevent compilation of these source files when target_os != linux.
2025-03-27 10:29:46 +01:00