nushell/crates/nu-cli/tests/commands/ls.rs

214 lines
5.6 KiB
Rust
Raw Normal View History

2019-12-17 18:54:39 +00:00
use nu_test_support::fs::Stub::EmptyFile;
use nu_test_support::playground::{Dirs, Playground};
use nu_test_support::{nu, pipeline};
2019-08-02 09:23:39 +00:00
#[test]
fn lists_regular_files() {
2019-08-29 00:32:42 +00:00
Playground::setup("ls_test_1", |dirs, sandbox| {
2019-09-11 14:36:50 +00:00
sandbox.with_files(vec![
EmptyFile("yehuda.txt"),
EmptyFile("jonathan.txt"),
EmptyFile("andres.txt"),
2019-08-29 00:32:42 +00:00
]);
2019-08-02 09:23:39 +00:00
2019-08-29 00:32:42 +00:00
let actual = nu!(
cwd: dirs.test(), pipeline(
2019-08-29 06:31:56 +00:00
r#"
ls
| count
2019-08-29 06:31:56 +00:00
| echo $it
"#
2019-08-29 00:32:42 +00:00
));
2019-08-02 09:23:39 +00:00
assert_eq!(actual.out, "3");
})
2019-08-02 09:23:39 +00:00
}
#[test]
fn lists_regular_files_using_asterisk_wildcard() {
2019-08-29 00:32:42 +00:00
Playground::setup("ls_test_2", |dirs, sandbox| {
2019-09-11 14:36:50 +00:00
sandbox.with_files(vec![
EmptyFile("los.txt"),
EmptyFile("tres.txt"),
EmptyFile("amigos.txt"),
EmptyFile("arepas.clu"),
2019-08-29 00:32:42 +00:00
]);
2019-08-02 09:23:39 +00:00
2019-08-29 00:32:42 +00:00
let actual = nu!(
cwd: dirs.test(), pipeline(
2019-08-29 06:31:56 +00:00
r#"
ls *.txt
| count
2019-08-29 06:31:56 +00:00
| echo $it
"#
2019-08-29 00:32:42 +00:00
));
2019-08-02 09:23:39 +00:00
assert_eq!(actual.out, "3");
})
2019-08-02 09:23:39 +00:00
}
#[test]
fn lists_regular_files_using_question_mark_wildcard() {
2019-08-29 00:32:42 +00:00
Playground::setup("ls_test_3", |dirs, sandbox| {
2019-09-11 14:36:50 +00:00
sandbox.with_files(vec![
EmptyFile("yehuda.10.txt"),
EmptyFile("jonathan.10.txt"),
EmptyFile("andres.10.txt"),
EmptyFile("chicken_not_to_be_picked_up.100.txt"),
2019-08-29 00:32:42 +00:00
]);
2019-08-02 09:23:39 +00:00
2019-08-29 00:32:42 +00:00
let actual = nu!(
cwd: dirs.test(), pipeline(
2019-08-29 06:31:56 +00:00
r#"
ls *.??.txt
| count
2019-08-29 06:31:56 +00:00
| echo $it
"#
2019-08-29 00:32:42 +00:00
));
2019-08-02 09:23:39 +00:00
assert_eq!(actual.out, "3");
})
2019-08-02 09:23:39 +00:00
}
#[test]
fn lists_all_files_in_directories_from_stream() {
Playground::setup("ls_test_4", |dirs, sandbox| {
2020-01-22 03:56:12 +00:00
sandbox
.with_files(vec![EmptyFile("root1.txt"), EmptyFile("root2.txt")])
.within("dir_a")
.with_files(vec![
EmptyFile("yehuda.10.txt"),
EmptyFile("jonathan.10.txt"),
])
.within("dir_b")
.with_files(vec![
EmptyFile("andres.10.txt"),
EmptyFile("chicken_not_to_be_picked_up.100.txt"),
]);
let actual = nu!(
cwd: dirs.test(), pipeline(
r#"
echo dir_a dir_b
| ls $it
| count
| echo $it
"#
));
assert_eq!(actual.out, "4");
})
}
#[test]
fn does_not_fail_if_glob_matches_empty_directory() {
Playground::setup("ls_test_5", |dirs, sandbox| {
sandbox.within("dir_a");
let actual = nu!(
cwd: dirs.test(), pipeline(
r#"
ls dir_a
| count
| echo $it
"#
));
assert_eq!(actual.out, "0");
})
}
#[test]
fn fails_when_glob_doesnt_match() {
Playground::setup("ls_test_5", |dirs, sandbox| {
sandbox.with_files(vec![EmptyFile("root1.txt"), EmptyFile("root2.txt")]);
let actual = nu!(
cwd: dirs.test(),
"ls root3*"
);
assert!(actual.err.contains("no matches found"));
})
}
#[test]
fn list_files_from_two_parents_up_using_multiple_dots() {
Playground::setup("ls_test_6", |dirs, sandbox| {
sandbox.with_files(vec![
EmptyFile("yahuda.yaml"),
EmptyFile("jonathan.json"),
EmptyFile("andres.xml"),
EmptyFile("kevin.txt"),
]);
sandbox.within("foo").mkdir("bar");
let actual = nu!(
cwd: dirs.test().join("foo/bar"),
r#"
ls ... | count | echo $it
"#
);
assert_eq!(actual.out, "5");
})
}
#[test]
fn list_all_columns() {
Playground::setup(
"ls_test_all_columns",
|dirs: Dirs, sandbox: &mut Playground| {
sandbox.with_files(vec![
EmptyFile("Leonardo.yaml"),
EmptyFile("Raphael.json"),
EmptyFile("Donatello.xml"),
EmptyFile("Michelangelo.txt"),
]);
// Normal Operation
let actual = nu!(
cwd: dirs.test(),
"ls | get | to md"
);
let expected = ["name", "type", "size", "modified"].join("");
assert_eq!(actual.out, expected, "column names are incorrect for ls");
// Symbolic Links
let actual = nu!(
cwd: dirs.test(),
"ls -w | get | to md"
);
let expected = ["name", "type", "target", "size", "modified"].join("");
assert_eq!(actual.out, expected, "column names are incorrect for ls -w");
// Full
let actual = nu!(
cwd: dirs.test(),
"ls -f | get | to md"
);
let expected = {
#[cfg(unix)]
{
[
"name", "type", "target", "readonly", "mode", "uid", "group", "size",
"created", "accessed", "modified",
]
.join("")
}
#[cfg(windows)]
{
[
"name", "type", "target", "readonly", "size", "created", "accessed",
"modified",
]
.join("")
}
};
assert_eq!(
actual.out, expected,
"column names are incorrect for ls full"
);
},
);
}