Display: No padding if no bars drawn

If not drawing the percent bars do not add padding to the filenames
https://github.com/bootandy/dust/issues/89
This commit is contained in:
andy.boot
2020-06-02 13:57:46 +01:00
parent 34be81c216
commit b3d446bfef
2 changed files with 18 additions and 7 deletions
+8 -7
View File
@@ -285,15 +285,16 @@ pub fn format_string(
let name = get_printable_name(&node.name, display_data.short_paths);
let width = get_unicode_width_of_indent_and_name(indent, &name);
let name_and_padding = name
+ &(repeat(" ")
.take(display_data.longest_string_length - width)
.collect::<String>());
let (percents, name_and_padding) = if percent_bar != "" {
let percents = format!("{}{:>4}", percent_bar, percent_size_str);
let percents = if percent_bar != "" {
format!("{}{:>4}", percent_bar, percent_size_str)
let name_and_padding = name
+ &(repeat(" ")
.take(display_data.longest_string_length - width)
.collect::<String>());
(percents, name_and_padding)
} else {
"".into()
("".into(), name)
};
let pretty_size = if is_biggest && display_data.colors_on {
+10
View File
@@ -32,6 +32,16 @@ pub fn test_basic_output() {
assert!(output.contains("a_file "));
}
#[test]
pub fn test_output_no_bars_means_no_excess_spaces() {
let mut cmd = Command::cargo_bin("dust").unwrap();
let output = cmd.arg("-b").arg("src/test_dir/").unwrap().stdout;
let output = str::from_utf8(&output).unwrap();
// If bars are not being shown we don't need to pad the output with spaces
assert!(output.contains("many"));
assert!(!output.contains("many "));
}
// "windows" result data can vary by host (size seems to be variable by one byte); fix code vs test and re-enable
#[cfg_attr(target_os = "windows", ignore)]
#[test]