From 3a63b509562597fe8c15cc2c54d61602857e31b3 Mon Sep 17 00:00:00 2001 From: Nick Date: Sun, 5 Jan 2014 16:03:13 -0600 Subject: [PATCH] move parent opt check, update tests --- Makefile | 2 +- mkdir/mkdir.rs | 17 ++++++++------ mkdir/test.rs | 63 ++++++++++++++++++++++++-------------------------- 3 files changed, 41 insertions(+), 41 deletions(-) diff --git a/Makefile b/Makefile index 611f04310..14a0063c0 100644 --- a/Makefile +++ b/Makefile @@ -54,7 +54,7 @@ test_$(1): tmp/$(1)_test build build/$(1) $(call command,tmp/$(1)_test) tmp/$(1)_test: $(1)/test.rs - $(call command,$(RUSTC) $(RUSTCFLAGS) -o tmp/$(1)_test $(1)/test.rs) + $(call command,$(RUSTC) $(RUSTCFLAGS) --test -o tmp/$(1)_test $(1)/test.rs) endef # Main rules diff --git a/mkdir/mkdir.rs b/mkdir/mkdir.rs index 0a112e595..f8e4d92c4 100644 --- a/mkdir/mkdir.rs +++ b/mkdir/mkdir.rs @@ -98,13 +98,16 @@ fn print_help(opts: &[groups::OptGroup]) { */ fn exec(dirs: ~[~str], mk_parents: bool, mode: u32, verbose: bool) { let mut parent_dirs: ~[~str] = ~[]; - for dir in dirs.iter() { - let path = Path::new((*dir).clone()); - // Build list of parent dirs which need to be created - if mk_parents { - match path.dirname_str() { - Some(p) => if p != "." { - parent_dirs.push(p.into_owned()) + if mk_parents { + for dir in dirs.iter() { + let path = Path::new((*dir).clone()); + // Build list of parent dirs which need to be created + let parent = path.dirname_str(); + match parent { + Some(p) => { + if !Path::new(p).exists() { + parent_dirs.push(p.into_owned()) + } }, None => () } diff --git a/mkdir/test.rs b/mkdir/test.rs index 5bcff8e0a..25a51a464 100644 --- a/mkdir/test.rs +++ b/mkdir/test.rs @@ -3,69 +3,66 @@ use std::io::fs::rmdir; static exe: &'static str = "build/mkdir"; static test_dir1: &'static str = "mkdir_test1"; -static test_dir2: &'static str = "mkdir_test1/mkdir_test2"; +static test_dir2: &'static str = "mkdir_test2"; +static test_dir3: &'static str = "mkdir_test3"; +static test_dir4: &'static str = "mkdir_test4/mkdir_test4_1"; +static test_dir5: &'static str = "mkdir_test5/mkdir_test5_1"; -fn main() { - test_mkdir_mkdir(); - test_mkdir_dup_dir(); - test_mkdir_mode(); - test_mkdir_parent(); - test_mkdir_no_parent(); - println("mkdir tests completed successfully!\n"); -} - -fn cleanup() { - let dirs = [test_dir2, test_dir1]; - for d in dirs.iter() { - let p = Path::new(d.into_owned()); - if p.exists() { - rmdir(&p); - } +fn cleanup(dir: &'static str) { + let d = dir.into_owned(); + let p = Path::new(d.into_owned()); + if p.exists() { + rmdir(&p); } } +#[test] fn test_mkdir_mkdir() { - cleanup(); + cleanup(test_dir1); let prog = run::process_status(exe.into_owned(), [test_dir1.into_owned()]); let exit_success = prog.unwrap().success(); - cleanup(); + cleanup(test_dir1); assert_eq!(exit_success, true); } +#[test] fn test_mkdir_dup_dir() { - cleanup(); - let prog = run::process_status(exe.into_owned(), [test_dir1.into_owned()]); + cleanup(test_dir2); + let prog = run::process_status(exe.into_owned(), [test_dir2.into_owned()]); let exit_success = prog.unwrap().success(); if !exit_success { - cleanup(); + cleanup(test_dir2); fail!(); } - let prog2 = run::process_status(exe.into_owned(), [test_dir1.into_owned()]); + let prog2 = run::process_status(exe.into_owned(), [test_dir2.into_owned()]); let exit_success2 = prog2.unwrap().success(); - cleanup(); + cleanup(test_dir2); assert_eq!(exit_success2, false); } +#[test] fn test_mkdir_mode() { - cleanup(); - let prog = run::process_status(exe.into_owned(), [~"-m", ~"755", test_dir1.into_owned()]); + cleanup(test_dir3); + let prog = run::process_status(exe.into_owned(), [~"-m", ~"755", test_dir3.into_owned()]); let exit_success = prog.unwrap().success(); - cleanup(); + cleanup(test_dir3); assert_eq!(exit_success, true); } +#[test] fn test_mkdir_parent() { - cleanup(); - let prog = run::process_status(exe.into_owned(), [~"-p", test_dir2.into_owned()]); + cleanup(test_dir4); + let prog = run::process_status(exe.into_owned(), [~"-p", test_dir4.into_owned()]); let exit_success = prog.unwrap().success(); - cleanup(); + cleanup(test_dir4); assert_eq!(exit_success, true); } +#[test] fn test_mkdir_no_parent() { - cleanup(); - let prog = run::process_status(exe.into_owned(), [test_dir2.into_owned()]); + cleanup(test_dir5); + let prog = run::process_status(exe.into_owned(), [test_dir5.into_owned()]); let exit_success = prog.unwrap().success(); - cleanup(); + cleanup(test_dir5); assert_eq!(exit_success, false); }