From c0048b2ae4f32c9b1ba4c4c6802d7ee4cd210ebc Mon Sep 17 00:00:00 2001 From: "andy.boot" Date: Sat, 28 Mar 2020 15:40:33 +0000 Subject: [PATCH] Handle running with bad parameter Earlier refactor caused running with: 'dust -' to crash --- src/utils/platform.rs | 14 +++++++++----- tests/tests.rs | 8 ++++++++ 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/utils/platform.rs b/src/utils/platform.rs index a87cbe0..c9e9107 100644 --- a/src/utils/platform.rs +++ b/src/utils/platform.rs @@ -12,11 +12,15 @@ fn get_block_size() -> u64 { #[cfg(target_family = "unix")] pub fn get_metadata(d: &DirEntry, use_apparent_size: bool) -> Option<(u64, Option<(u64, u64)>)> { use std::os::unix::fs::MetadataExt; - let md = d.metadata().unwrap(); - if use_apparent_size { - Some((md.len(), Some((md.ino(), md.dev())))) - } else { - Some((md.blocks() * get_block_size(), Some((md.ino(), md.dev())))) + match d.metadata() { + Ok(md) => { + if use_apparent_size { + Some((md.len(), Some((md.ino(), md.dev())))) + } else { + Some((md.blocks() * get_block_size(), Some((md.ino(), md.dev())))) + } + } + Err(_e) => None, } } diff --git a/tests/tests.rs b/tests/tests.rs index 2e739e9..d3ff0f2 100644 --- a/tests/tests.rs +++ b/tests/tests.rs @@ -275,3 +275,11 @@ pub fn test_ignore_dir() { let output = str::from_utf8(&output).unwrap(); assert!(!output.contains("dir_substring")); } + +#[test] +pub fn test_with_bad_param() { + let mut cmd = Command::cargo_bin("dust").unwrap(); + let stderr = cmd.arg("-").unwrap().stderr; + let stderr = str::from_utf8(&stderr).unwrap(); + assert!(stderr.contains("Did not have permissions for all directories")); +}