mirror of
https://github.com/nushell/nushell
synced 2025-01-03 16:58:58 +00:00
656f707a0b
# Description The working directory doesn't have to be set for those tests (or would be the default anyways). When appropriate also remove calls to the `pipeline()` function. In most places kept the diff minimal and only removed the superfluous part to not pollute the blame view. With simpler tests also simplified things to make them more readable overall (this included removal of the raw string literal). Work for #8670
110 lines
2.8 KiB
Rust
110 lines
2.8 KiB
Rust
use nu_test_support::nu;
|
|
|
|
#[test]
|
|
fn which_ls() {
|
|
let actual = nu!("which ls | get path.0 | str trim");
|
|
|
|
assert_eq!(actual.out, "Nushell built-in command");
|
|
}
|
|
|
|
#[ignore = "TODO: Can't have alias recursion"]
|
|
#[test]
|
|
fn which_alias_ls() {
|
|
let actual = nu!("alias ls = ls -a; which ls | get path.0 | str trim");
|
|
|
|
assert_eq!(actual.out, "Nushell alias: ls -a");
|
|
}
|
|
|
|
#[test]
|
|
fn which_custom_alias() {
|
|
let actual = nu!(r#"alias foo = print "foo!"; which foo | to nuon"#);
|
|
|
|
assert_eq!(
|
|
actual.out,
|
|
"[[arg, path, built-in]; [foo, \"Nushell alias\", false]]"
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn which_def_ls() {
|
|
let actual = nu!("def ls [] {echo def}; which ls | get path.0 | str trim");
|
|
|
|
assert_eq!(actual.out, "Nushell custom command");
|
|
}
|
|
|
|
#[ignore = "TODO: Can't have alias with the same name as command"]
|
|
#[test]
|
|
fn correct_precedence_alias_def_custom() {
|
|
let actual =
|
|
nu!("def ls [] {echo def}; alias ls = echo alias; which ls | get path.0 | str trim");
|
|
|
|
assert_eq!(actual.out, "Nushell alias: echo alias");
|
|
}
|
|
|
|
#[ignore = "TODO: Can't have alias with the same name as command"]
|
|
#[test]
|
|
fn multiple_reports_for_alias_def_custom() {
|
|
let actual = nu!("def ls [] {echo def}; alias ls = echo alias; which -a ls | length");
|
|
|
|
let length: i32 = actual.out.parse().unwrap();
|
|
assert!(length >= 2);
|
|
}
|
|
|
|
// `get_aliases_with_name` and `get_custom_commands_with_name` don't return the correct count of
|
|
// values
|
|
// I suspect this is due to the ScopeFrame getting discarded at '}' and the command is then
|
|
// executed in the parent scope
|
|
// See: parse_definition, line 2187 for reference.
|
|
#[ignore]
|
|
#[test]
|
|
fn correctly_report_of_shadowed_alias() {
|
|
let actual = nu!(r#"alias xaz = echo alias1
|
|
def helper [] {
|
|
alias xaz = echo alias2
|
|
which -a xaz
|
|
}
|
|
helper | get path | str contains alias2"#);
|
|
|
|
assert_eq!(actual.out, "true");
|
|
}
|
|
|
|
#[test]
|
|
fn one_report_of_multiple_defs() {
|
|
let actual = nu!(r#"def xaz [] { echo def1 }
|
|
def helper [] {
|
|
def xaz [] { echo def2 }
|
|
which -a xaz
|
|
}
|
|
helper | length"#);
|
|
|
|
let length: i32 = actual.out.parse().unwrap();
|
|
assert_eq!(length, 1);
|
|
}
|
|
|
|
#[test]
|
|
fn def_only_seen_once() {
|
|
let actual = nu!("def xaz [] {echo def1}; which -a xaz | length");
|
|
|
|
let length: i32 = actual.out.parse().unwrap();
|
|
assert_eq!(length, 1);
|
|
}
|
|
|
|
#[test]
|
|
fn do_not_show_hidden_aliases() {
|
|
let actual = nu!(r#"alias foo = echo foo
|
|
hide foo
|
|
which foo | length"#);
|
|
|
|
let length: i32 = actual.out.parse().unwrap();
|
|
assert_eq!(length, 0);
|
|
}
|
|
|
|
#[test]
|
|
fn do_not_show_hidden_commands() {
|
|
let actual = nu!(r#"def foo [] { echo foo }
|
|
hide foo
|
|
which foo | length"#);
|
|
|
|
let length: i32 = actual.out.parse().unwrap();
|
|
assert_eq!(length, 0);
|
|
}
|