mirror of
https://github.com/uutils/coreutils
synced 2024-12-13 23:02:38 +00:00
Merge pull request #5038 from shinhs0506/ls-version-cmp
ls: fix version cmp
This commit is contained in:
commit
bf30cbf4f6
2 changed files with 49 additions and 6 deletions
|
@ -1932,8 +1932,10 @@ fn sort_entries(entries: &mut [PathData], config: &Config, out: &mut BufWriter<S
|
|||
Sort::Size => entries.sort_by_key(|k| Reverse(k.md(out).map(|md| md.len()).unwrap_or(0))),
|
||||
// The default sort in GNU ls is case insensitive
|
||||
Sort::Name => entries.sort_by(|a, b| a.display_name.cmp(&b.display_name)),
|
||||
Sort::Version => entries
|
||||
.sort_by(|a, b| version_cmp(&a.p_buf.to_string_lossy(), &b.p_buf.to_string_lossy())),
|
||||
Sort::Version => entries.sort_by(|a, b| {
|
||||
version_cmp(&a.p_buf.to_string_lossy(), &b.p_buf.to_string_lossy())
|
||||
.then(a.p_buf.to_string_lossy().cmp(&b.p_buf.to_string_lossy()))
|
||||
}),
|
||||
Sort::Extension => entries.sort_by(|a, b| {
|
||||
a.p_buf
|
||||
.extension()
|
||||
|
|
|
@ -2311,15 +2311,56 @@ fn test_ls_version_sort() {
|
|||
let scene = TestScenario::new(util_name!());
|
||||
let at = &scene.fixtures;
|
||||
for filename in [
|
||||
"a2", "b1", "b20", "a1.4", "b3", "b11", "b20b", "b20a", "a100", "a1.13", "aa", "a1", "aaa",
|
||||
"abab", "ab", "a01.40", "a001.001",
|
||||
"a2",
|
||||
"b1",
|
||||
"b20",
|
||||
"a1.4",
|
||||
"a1.40",
|
||||
"b3",
|
||||
"b11",
|
||||
"b20b",
|
||||
"b20a",
|
||||
"a100",
|
||||
"a1.13",
|
||||
"aa",
|
||||
"a1",
|
||||
"aaa",
|
||||
"a1.00000040",
|
||||
"abab",
|
||||
"ab",
|
||||
"a01.40",
|
||||
"a001.001",
|
||||
"a01.0000001",
|
||||
"a01.001",
|
||||
"a001.01",
|
||||
] {
|
||||
at.touch(filename);
|
||||
}
|
||||
|
||||
let mut expected = vec![
|
||||
"a1", "a001.001", "a1.4", "a1.13", "a01.40", "a2", "a100", "aa", "aaa", "ab", "abab", "b1",
|
||||
"b3", "b11", "b20", "b20a", "b20b", "", // because of '\n' at the end of the output
|
||||
"a1",
|
||||
"a001.001",
|
||||
"a001.01",
|
||||
"a01.0000001",
|
||||
"a01.001",
|
||||
"a1.4",
|
||||
"a1.13",
|
||||
"a01.40",
|
||||
"a1.00000040",
|
||||
"a1.40",
|
||||
"a2",
|
||||
"a100",
|
||||
"aa",
|
||||
"aaa",
|
||||
"ab",
|
||||
"abab",
|
||||
"b1",
|
||||
"b3",
|
||||
"b11",
|
||||
"b20",
|
||||
"b20a",
|
||||
"b20b",
|
||||
"", // because of '\n' at the end of the output
|
||||
];
|
||||
|
||||
let result = scene.ucmd().arg("-1v").succeeds();
|
||||
|
|
Loading…
Reference in a new issue