From c918fb6a6b98f07a628cb06da417c9aafe0fa47b Mon Sep 17 00:00:00 2001 From: Michael Gehring Date: Mon, 21 Dec 2015 11:14:08 +0100 Subject: [PATCH 1/2] dirname: fix "/" "." "" --- src/dirname/dirname.rs | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/dirname/dirname.rs b/src/dirname/dirname.rs index feb582851..60e2df5b8 100644 --- a/src/dirname/dirname.rs +++ b/src/dirname/dirname.rs @@ -54,9 +54,21 @@ directory).", NAME, VERSION); if !matches.free.is_empty() { for path in matches.free.iter() { let p = Path::new(path); - let d = p.parent().unwrap().to_str(); - if d.is_some() { - print!("{}", d.unwrap()); + match p.parent() { + Some(d) => { + if d.components().next() == None { + print!(".") + } else { + print!("{}", d.to_string_lossy()); + } + } + None => { + if p.is_absolute() { + print!("/"); + } else { + print!("."); + } + } } print!("{}", separator); } From cb4f6a297846087129cadb10bcc3dddbee8dc50c Mon Sep 17 00:00:00 2001 From: Michael Gehring Date: Mon, 21 Dec 2015 11:17:37 +0100 Subject: [PATCH 2/2] dirname: add some tests --- tests/dirname.rs | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/tests/dirname.rs b/tests/dirname.rs index 4c679514d..fe7f368eb 100644 --- a/tests/dirname.rs +++ b/tests/dirname.rs @@ -23,3 +23,30 @@ fn test_path_without_trailing_slashes() { assert_eq!(out.trim_right(), "/root/alpha/beta/gamma/delta/epsilon"); } + +#[test] +fn test_root() { + let (_, mut ucmd) = testing(UTIL_NAME); + let dir = "/"; + let out = ucmd.arg(dir).run().stdout; + + assert_eq!(out.trim_right(), "/"); +} + +#[test] +fn test_pwd() { + let (_, mut ucmd) = testing(UTIL_NAME); + let dir = "."; + let out = ucmd.arg(dir).run().stdout; + + assert_eq!(out.trim_right(), "."); +} + +#[test] +fn test_empty() { + let (_, mut ucmd) = testing(UTIL_NAME); + let dir = ""; + let out = ucmd.arg(dir).run().stdout; + + assert_eq!(out.trim_right(), "."); +}