Compare commits

...

4 Commits

Author SHA1 Message Date
andy.boot
4e83421da6 version: increment version 2025-07-31 22:33:44 +01:00
andy.boot
901bc3895a feat: Return 1 if no dirs are found
A better error code
2025-07-31 22:33:44 +01:00
andy.boot
3cce61f854 tests: add test for d0
Test to stop bug in previous commit occuring
Also cargo clippy
2025-07-28 22:35:40 +01:00
Yip Coekjan
222cd83ff3 Fix multi-paths output when depth is 0 2025-07-28 22:15:34 +01:00
6 changed files with 45 additions and 32 deletions

2
Cargo.lock generated
View File

@@ -322,7 +322,7 @@ checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10"
[[package]]
name = "du-dust"
version = "1.2.2"
version = "1.2.3"
dependencies = [
"ansi_term",
"assert_cmd",

View File

@@ -1,7 +1,7 @@
[package]
name = "du-dust"
description = "A more intuitive version of du"
version = "1.2.2"
version = "1.2.3"
authors = ["bootandy <bootandy@gmail.com>", "nebkor <code@ardent.nebcorp.com>"]
edition = "2024"
readme = "README.md"

View File

@@ -1,6 +1,6 @@
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.TH Dust 1 "Dust 1.2.2"
.TH Dust 1 "Dust 1.2.3"
.SH NAME
Dust \- Like du but more intuitive
.SH SYNOPSIS
@@ -167,4 +167,4 @@ Print version
[\fIPATH\fR]
Input files or directories
.SH VERSION
v1.2.2
v1.2.3

View File

@@ -32,23 +32,22 @@ pub fn get_biggest(
if number_top_level_nodes == 0 {
root = total_node_builder(0, vec![])
} else {
if number_top_level_nodes > 1 {
let size = if by_filetime.is_some() {
top_level_nodes
.iter()
.map(|node| node.size)
.max()
.unwrap_or(0)
} else {
top_level_nodes.iter().map(|node| node.size).sum()
};
let nodes = handle_duplicate_top_level_names(top_level_nodes, display_data.short_paths);
root = total_node_builder(size, nodes);
} else if number_top_level_nodes > 1 {
let size = if by_filetime.is_some() {
top_level_nodes
.iter()
.map(|node| node.size)
.max()
.unwrap_or(0)
} else {
root = top_level_nodes.into_iter().next().unwrap();
}
top_level_nodes.iter().map(|node| node.size).sum()
};
let nodes = handle_duplicate_top_level_names(top_level_nodes, display_data.short_paths);
root = total_node_builder(size, nodes);
heap = always_add_children(&display_data, &root, heap);
} else {
root = top_level_nodes.into_iter().next().unwrap();
heap = add_children(&display_data, &root, heap);
}

View File

@@ -307,16 +307,21 @@ fn main() {
indicator.stop();
let print_errors = config.get_print_errors(&options);
print_any_errors(print_errors, walk_data.errors);
let final_errors = walk_data.errors.lock().unwrap();
print_any_errors(print_errors, &final_errors);
print_output(
config,
options,
tree,
walk_data.by_filecount,
is_colors,
terminal_width,
)
if tree.children.is_empty() && !final_errors.file_not_found.is_empty() {
std::process::exit(1)
} else {
print_output(
config,
options,
tree,
walk_data.by_filecount,
is_colors,
terminal_width,
)
}
});
}
@@ -357,8 +362,7 @@ fn print_output(
}
}
fn print_any_errors(print_errors: bool, errors: Arc<Mutex<RuntimeErrors>>) {
let final_errors = errors.lock().unwrap();
fn print_any_errors(print_errors: bool, final_errors: &RuntimeErrors) {
if !final_errors.file_not_found.is_empty() {
let err = final_errors
.file_not_found

View File

@@ -62,6 +62,14 @@ pub fn test_d_flag_works() {
assert!(!output.contains("hello_file"));
}
#[test]
pub fn test_d0_works_on_multiple() {
// We should see the top level directory but not the sub dirs / files:
let output = build_command(vec!["-d", "0", "tests/test_dir/", "tests/test_dir2"]);
assert!(output.contains("test_dir "));
assert!(output.contains("test_dir2"));
}
#[test]
pub fn test_threads_flag_works() {
let output = build_command(vec!["-T", "1", "tests/test_dir/"]);
@@ -99,7 +107,9 @@ pub fn test_ignore_all_in_file() {
#[test]
pub fn test_with_bad_param() {
let mut cmd = Command::cargo_bin("dust").unwrap();
let result = cmd.arg("bad_place").unwrap();
cmd.arg("-P").arg("bad_place");
let output_error = cmd.unwrap_err();
let result = output_error.as_output().unwrap();
let stderr = str::from_utf8(&result.stderr).unwrap();
assert!(stderr.contains("No such file or directory"));
}