mirror of
https://github.com/nushell/nushell.git
synced 2024-11-29 03:44:19 +01:00
406df7f208
# Description Judiciously try to avoid allocations/clone by changing the signature of functions - **Don't pass str by value unnecessarily if only read** - **Don't require a vec in `Sandbox::with_files`** - **Remove unnecessary string clone** - **Fixup unnecessary borrow** - **Use `&str` in shape color instead** - **Vec -> Slice** - **Elide string clone** - **Elide `Path` clone** - **Take &str to elide clone in tests** # User-Facing Changes None # Tests + Formatting This touches many tests purely in changing from owned to borrowed/static data
95 lines
2.8 KiB
Rust
95 lines
2.8 KiB
Rust
use nu_test_support::nu;
|
|
|
|
#[test]
|
|
fn basic_stdout() {
|
|
let without_complete = nu!(r#"
|
|
nu --testbin cococo test
|
|
"#);
|
|
let with_complete = nu!(r#"
|
|
(nu --testbin cococo test | complete).stdout
|
|
"#);
|
|
|
|
assert_eq!(with_complete.out, without_complete.out);
|
|
}
|
|
|
|
#[test]
|
|
fn basic_exit_code() {
|
|
let with_complete = nu!(r#"
|
|
(nu --testbin cococo test | complete).exit_code
|
|
"#);
|
|
|
|
assert_eq!(with_complete.out, "0");
|
|
}
|
|
|
|
#[test]
|
|
fn error() {
|
|
let actual = nu!("not-found | complete");
|
|
assert!(actual.err.contains("executable was not found"));
|
|
}
|
|
|
|
#[test]
|
|
#[cfg(not(windows))]
|
|
fn capture_error_with_too_much_stderr_not_hang_nushell() {
|
|
use nu_test_support::fs::Stub::FileWithContent;
|
|
use nu_test_support::playground::Playground;
|
|
Playground::setup("external with many stderr message", |dirs, sandbox| {
|
|
let bytes: usize = 81920;
|
|
let mut large_file_body = String::with_capacity(bytes);
|
|
for _ in 0..bytes {
|
|
large_file_body.push('a');
|
|
}
|
|
sandbox.with_files(&[FileWithContent("a_large_file.txt", &large_file_body)]);
|
|
|
|
let actual =
|
|
nu!(cwd: dirs.test(), "sh -c 'cat a_large_file.txt 1>&2' | complete | get stderr");
|
|
|
|
assert_eq!(actual.out, large_file_body);
|
|
})
|
|
}
|
|
|
|
#[test]
|
|
#[cfg(not(windows))]
|
|
fn capture_error_with_too_much_stdout_not_hang_nushell() {
|
|
use nu_test_support::fs::Stub::FileWithContent;
|
|
use nu_test_support::playground::Playground;
|
|
Playground::setup("external with many stdout message", |dirs, sandbox| {
|
|
let bytes: usize = 81920;
|
|
let mut large_file_body = String::with_capacity(bytes);
|
|
for _ in 0..bytes {
|
|
large_file_body.push('a');
|
|
}
|
|
sandbox.with_files(&[FileWithContent("a_large_file.txt", &large_file_body)]);
|
|
|
|
let actual = nu!(cwd: dirs.test(), "sh -c 'cat a_large_file.txt' | complete | get stdout");
|
|
|
|
assert_eq!(actual.out, large_file_body);
|
|
})
|
|
}
|
|
|
|
#[test]
|
|
#[cfg(not(windows))]
|
|
fn capture_error_with_both_stdout_stderr_messages_not_hang_nushell() {
|
|
use nu_test_support::fs::Stub::FileWithContent;
|
|
use nu_test_support::playground::Playground;
|
|
Playground::setup(
|
|
"external with many stdout and stderr messages",
|
|
|dirs, sandbox| {
|
|
let script_body = r#"
|
|
x=$(printf '=%.0s' $(seq 40960))
|
|
echo $x
|
|
echo $x 1>&2
|
|
"#;
|
|
let expect_body = "=".repeat(40960);
|
|
|
|
sandbox.with_files(&[FileWithContent("test.sh", script_body)]);
|
|
|
|
// check for stdout
|
|
let actual = nu!(cwd: dirs.test(), "sh test.sh | complete | get stdout | str trim");
|
|
assert_eq!(actual.out, expect_body);
|
|
// check for stderr
|
|
let actual = nu!(cwd: dirs.test(), "sh test.sh | complete | get stderr | str trim");
|
|
assert_eq!(actual.out, expect_body);
|
|
},
|
|
)
|
|
}
|