mirror of
https://github.com/uutils/coreutils.git
synced 2026-06-10 15:48:22 -07:00
Sort: More small fixes (#2065)
* Various fixes and performance improvements * fix a typo Co-authored-by: Michael Debertol <michael.debertol@gmail.com> * Fix month parse for months with leading whitespace * Implement test for months whitespace fix * Confirm human numeric works as expected with whitespace with a test * Correct arg help value name for --parallel * Fix SemVer non version lines/empty line sorting with a test Co-authored-by: Sylvestre Ledru <sledru@mozilla.com> Co-authored-by: Michael Debertol <michael.debertol@gmail.com>
This commit is contained in:
co-authored by
Sylvestre Ledru
Michael Debertol
parent
279656426b
commit
a76d452f75
Generated
-2
@@ -1,7 +1,5 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 3
|
||||
|
||||
[[package]]
|
||||
name = "advapi32-sys"
|
||||
version = "0.2.0"
|
||||
|
||||
+15
-4
@@ -677,7 +677,7 @@ pub fn uumain(args: impl uucore::Args) -> i32 {
|
||||
.arg(
|
||||
Arg::with_name(OPT_PARALLEL)
|
||||
.long(OPT_PARALLEL)
|
||||
.help("change the number of threads running concurrently to N")
|
||||
.help("change the number of threads running concurrently to NUM_THREADS")
|
||||
.takes_value(true)
|
||||
.value_name("NUM_THREADS"),
|
||||
)
|
||||
@@ -1226,7 +1226,7 @@ fn month_parse(line: &str) -> Month {
|
||||
// GNU splits at any 3 letter match "JUNNNN" is JUN
|
||||
let pattern = if line.trim().len().ge(&3) {
|
||||
// Split a 3 and get first element of tuple ".0"
|
||||
line.split_at(3).0
|
||||
line.trim().split_at(3).0
|
||||
} else {
|
||||
""
|
||||
};
|
||||
@@ -1262,10 +1262,21 @@ fn month_compare(a: &str, b: &str) -> Ordering {
|
||||
}
|
||||
}
|
||||
|
||||
fn version_parse(a: &str) -> Version {
|
||||
let result = Version::parse(a);
|
||||
|
||||
match result {
|
||||
Ok(vers_a) => vers_a,
|
||||
// Non-version lines parse to 0.0.0
|
||||
Err(_e) => Version::parse("0.0.0").unwrap(),
|
||||
}
|
||||
}
|
||||
|
||||
fn version_compare(a: &str, b: &str) -> Ordering {
|
||||
#![allow(clippy::comparison_chain)]
|
||||
let ver_a = Version::parse(a);
|
||||
let ver_b = Version::parse(b);
|
||||
let ver_a = version_parse(a);
|
||||
let ver_b = version_parse(b);
|
||||
|
||||
// Version::cmp is not implemented; implement comparison directly
|
||||
if ver_a > ver_b {
|
||||
Ordering::Greater
|
||||
|
||||
@@ -8,6 +8,25 @@ fn test_helper(file_name: &str, args: &str) {
|
||||
.stdout_is_fixture(format!("{}.expected", file_name));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_months_whitespace() {
|
||||
test_helper("months-whitespace", "-M");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_version_empty_lines() {
|
||||
new_ucmd!()
|
||||
.arg("-V")
|
||||
.arg("version-empty-lines.txt")
|
||||
.succeeds()
|
||||
.stdout_is("\n\n\n\n\n\n\n1.2.3-alpha\n1.2.3-alpha2\n\t\t\t1.12.4\n11.2.3\n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_human_numeric_whitespace() {
|
||||
test_helper("human-numeric-whitespace", "-h");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_multiple_decimals_general() {
|
||||
new_ucmd!()
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
456K
|
||||
4568K
|
||||
456M
|
||||
6.2G
|
||||
@@ -0,0 +1,11 @@
|
||||
|
||||
|
||||
456K
|
||||
|
||||
456M
|
||||
|
||||
|
||||
4568K
|
||||
|
||||
6.2G
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
|
||||
|
||||
JAN
|
||||
FEb
|
||||
apr
|
||||
apr
|
||||
JUNNNN
|
||||
AUG
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
JAN
|
||||
JUNNNN
|
||||
AUG
|
||||
|
||||
apr
|
||||
apr
|
||||
|
||||
FEb
|
||||
@@ -0,0 +1,11 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
1.2.3-alpha
|
||||
1.2.3-alpha2
|
||||
11.2.3
|
||||
1.12.4
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
11.2.3
|
||||
|
||||
|
||||
|
||||
1.2.3-alpha2
|
||||
|
||||
|
||||
1.2.3-alpha
|
||||
|
||||
|
||||
1.12.4
|
||||
Reference in New Issue
Block a user