forked from extern/nushell
29431e73c2
This commit changes the way we shell out externals when using the `"$it"` argument. Also pipes per row to an external's stdin if no `"$it"` argument is present for external commands. Further separation of logic (preparing the external's command arguments, getting the data for piping, emitting values, spawning processes) will give us a better idea for lower level details regarding external commands until we can find the right abstractions for making them more generic and unify within the pipeline calling logic of Nu internal's and external's.
99 lines
3.5 KiB
Rust
99 lines
3.5 KiB
Rust
use nu_test_support::fs::Stub::FileWithContentToBeTrimmed;
|
|
use nu_test_support::playground::Playground;
|
|
use nu_test_support::{nu, pipeline};
|
|
|
|
#[test]
|
|
fn from_ssv_text_to_table() {
|
|
Playground::setup("filter_from_ssv_test_1", |dirs, sandbox| {
|
|
sandbox.with_files(vec![FileWithContentToBeTrimmed(
|
|
"oc_get_svc.txt",
|
|
r#"
|
|
NAME LABELS SELECTOR IP PORT(S)
|
|
docker-registry docker-registry=default docker-registry=default 172.30.78.158 5000/TCP
|
|
kubernetes component=apiserver,provider=kubernetes <none> 172.30.0.2 443/TCP
|
|
kubernetes-ro component=apiserver,provider=kubernetes <none> 172.30.0.1 80/TCP
|
|
"#,
|
|
)]);
|
|
|
|
let actual = nu!(
|
|
cwd: dirs.test(), pipeline(
|
|
r#"
|
|
open oc_get_svc.txt
|
|
| from-ssv
|
|
| nth 0
|
|
| get IP
|
|
| echo $it
|
|
"#
|
|
));
|
|
|
|
assert_eq!(actual, "172.30.78.158");
|
|
})
|
|
}
|
|
|
|
#[test]
|
|
fn from_ssv_text_to_table_with_separator_specified() {
|
|
Playground::setup("filter_from_ssv_test_1", |dirs, sandbox| {
|
|
sandbox.with_files(vec![FileWithContentToBeTrimmed(
|
|
"oc_get_svc.txt",
|
|
r#"
|
|
NAME LABELS SELECTOR IP PORT(S)
|
|
docker-registry docker-registry=default docker-registry=default 172.30.78.158 5000/TCP
|
|
kubernetes component=apiserver,provider=kubernetes <none> 172.30.0.2 443/TCP
|
|
kubernetes-ro component=apiserver,provider=kubernetes <none> 172.30.0.1 80/TCP
|
|
"#,
|
|
)]);
|
|
|
|
let actual = nu!(
|
|
cwd: dirs.test(), pipeline(
|
|
r#"
|
|
open oc_get_svc.txt
|
|
| from-ssv --minimum-spaces 3
|
|
| nth 0
|
|
| get IP
|
|
| echo $it
|
|
"#
|
|
));
|
|
|
|
assert_eq!(actual, "172.30.78.158");
|
|
})
|
|
}
|
|
|
|
#[test]
|
|
fn from_ssv_text_treating_first_line_as_data_with_flag() {
|
|
Playground::setup("filter_from_ssv_test_2", |dirs, sandbox| {
|
|
sandbox.with_files(vec![FileWithContentToBeTrimmed(
|
|
"oc_get_svc.txt",
|
|
r#"
|
|
docker-registry docker-registry=default docker-registry=default 172.30.78.158 5000/TCP
|
|
kubernetes component=apiserver,provider=kubernetes <none> 172.30.0.2 443/TCP
|
|
kubernetes-ro component=apiserver,provider=kubernetes <none> 172.30.0.1 80/TCP
|
|
"#,
|
|
)]);
|
|
|
|
let aligned_columns = nu!(
|
|
cwd: dirs.test(), pipeline(
|
|
r#"
|
|
open oc_get_svc.txt
|
|
| from-ssv --headerless --aligned-columns
|
|
| first
|
|
| get Column1
|
|
| echo $it
|
|
"#
|
|
));
|
|
|
|
let separator_based = nu!(
|
|
cwd: dirs.test(), pipeline(
|
|
r#"
|
|
open oc_get_svc.txt
|
|
| from-ssv --headerless
|
|
| first
|
|
| get Column1
|
|
| echo $it
|
|
"#
|
|
));
|
|
|
|
assert_eq!(aligned_columns, separator_based);
|
|
assert_eq!(separator_based, "docker-registry");
|
|
})
|
|
}
|