use nu_test_support::{nu, pipeline}; use super::join_path_sep; #[test] fn returns_dirname_of_empty_input() { let actual = nu!( cwd: "tests", pipeline( r#" echo "" | path dirname "# )); assert_eq!(actual.out, ""); } #[test] fn replaces_dirname_of_empty_input() { let actual = nu!( cwd: "tests", pipeline( r#" echo "" | path dirname --replace newdir "# )); assert_eq!(actual.out, "newdir"); } #[test] fn returns_dirname_of_path_ending_with_dot() { let actual = nu!( cwd: "tests", pipeline( r#" echo "some/dir/." | path dirname "# )); assert_eq!(actual.out, "some"); } #[test] fn replaces_dirname_of_path_ending_with_dot() { let actual = nu!( cwd: "tests", pipeline( r#" echo "some/dir/." | path dirname --replace eggs "# )); let expected = join_path_sep(&["eggs", "dir"]); assert_eq!(actual.out, expected); } #[test] fn returns_dirname_of_path_ending_with_double_dot() { let actual = nu!( cwd: "tests", pipeline( r#" echo "some/dir/.." | path dirname "# )); assert_eq!(actual.out, "some/dir"); } #[test] fn replaces_dirname_of_path_with_double_dot() { let actual = nu!( cwd: "tests", pipeline( r#" echo "some/dir/.." | path dirname --replace eggs "# )); let expected = join_path_sep(&["eggs", ".."]); assert_eq!(actual.out, expected); } #[test] fn returns_dirname_of_zero_levels() { let actual = nu!( cwd: "tests", pipeline( r#" echo "some/dir/with/spam.txt" | path dirname --num-levels 0 "# )); assert_eq!(actual.out, "some/dir/with/spam.txt"); } #[test] fn replaces_dirname_of_zero_levels_with_empty_string() { let actual = nu!( cwd: "tests", pipeline( r#" echo "some/dir/with/spam.txt" | path dirname --num-levels 0 --replace "" "# )); assert_eq!(actual.out, ""); } #[test] fn replaces_dirname_of_more_levels() { let actual = nu!( cwd: "tests", pipeline( r#" echo "some/dir/with/spam.txt" | path dirname --replace eggs -n 2 "# )); let expected = join_path_sep(&["eggs", "with/spam.txt"]); assert_eq!(actual.out, expected); } #[test] fn replaces_dirname_of_way_too_many_levels() { let actual = nu!( cwd: "tests", pipeline( r#" echo "some/dir/with/spam.txt" | path dirname --replace eggs -n 999 "# )); let expected = join_path_sep(&["eggs", "some/dir/with/spam.txt"]); assert_eq!(actual.out, expected); } #[test] fn const_path_dirname() { let actual = nu!("const name = ('spam/eggs.txt' | path dirname); $name"); assert_eq!(actual.out, "spam"); }