1
Fork 0
mirror of https://github.com/RGBCube/uutils-coreutils synced 2025-07-29 20:17:45 +00:00

Merge pull request #754 from ebfe/fix-dirname

dirname: fix "/" "." ""
This commit is contained in:
Heather 2015-12-21 14:55:57 +04:00
commit f16ce871c6
2 changed files with 42 additions and 3 deletions

View file

@ -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);
}

View file

@ -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(), ".");
}