mirror of
https://github.com/nushell/nushell.git
synced 2025-08-16 16:41:41 +02:00
Refactor scope
commands (#10023)
This commit is contained in:
@ -1,7 +1,10 @@
|
||||
use nu_test_support::fs::Stub::FileWithContent;
|
||||
use nu_test_support::nu;
|
||||
use nu_test_support::playground::Playground;
|
||||
use pretty_assertions::assert_eq;
|
||||
|
||||
#[ignore = "TODO: This shows old-style aliases. New aliases are under commands"]
|
||||
// Note: These tests might slightly overlap with crates/nu-command/tests/commands/help.rs
|
||||
|
||||
#[test]
|
||||
fn scope_shows_alias() {
|
||||
let actual = nu!("alias xaz = echo alias1
|
||||
@ -71,7 +74,7 @@ fn scope_doesnt_show_hidden_command() {
|
||||
}
|
||||
|
||||
// same problem as 'which' command
|
||||
#[ignore]
|
||||
#[ignore = "See https://github.com/nushell/nushell/issues/4837"]
|
||||
#[test]
|
||||
fn correctly_report_of_shadowed_alias() {
|
||||
let actual = nu!("alias xaz = echo alias1
|
||||
@ -83,3 +86,163 @@ fn correctly_report_of_shadowed_alias() {
|
||||
|
||||
assert_eq!(actual.out, "echo alias2");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn correct_scope_modules_fields() {
|
||||
let module_setup = r#"
|
||||
# nice spam
|
||||
|
||||
export module eggs {
|
||||
export module bacon {
|
||||
export def sausage [] { 'sausage' }
|
||||
}
|
||||
}
|
||||
|
||||
export def main [] { 'foo' };
|
||||
export alias xaz = print
|
||||
export extern git []
|
||||
export const X = 4
|
||||
|
||||
export-env { $env.SPAM = 'spam' }
|
||||
"#;
|
||||
|
||||
Playground::setup("correct_scope_modules_fields", |dirs, sandbox| {
|
||||
sandbox.with_files(vec![FileWithContent("spam.nu", module_setup)]);
|
||||
|
||||
let inp = &[
|
||||
"use spam.nu",
|
||||
"scope modules | where name == spam | get 0.name",
|
||||
];
|
||||
let actual = nu!(cwd: dirs.test(), &inp.join("; "));
|
||||
assert_eq!(actual.out, "spam");
|
||||
|
||||
let inp = &[
|
||||
"use spam.nu",
|
||||
"scope modules | where name == spam | get 0.usage",
|
||||
];
|
||||
let actual = nu!(cwd: dirs.test(), &inp.join("; "));
|
||||
assert_eq!(actual.out, "nice spam");
|
||||
|
||||
let inp = &[
|
||||
"use spam.nu",
|
||||
"scope modules | where name == spam | get 0.env_block | is-empty",
|
||||
];
|
||||
let actual = nu!(cwd: dirs.test(), &inp.join("; "));
|
||||
assert_eq!(actual.out, "false");
|
||||
|
||||
let inp = &[
|
||||
"use spam.nu",
|
||||
"scope modules | where name == spam | get 0.commands.0.name",
|
||||
];
|
||||
let actual = nu!(cwd: dirs.test(), &inp.join("; "));
|
||||
assert_eq!(actual.out, "spam");
|
||||
|
||||
let inp = &[
|
||||
"use spam.nu",
|
||||
"scope modules | where name == spam | get 0.aliases.0.name",
|
||||
];
|
||||
let actual = nu!(cwd: dirs.test(), &inp.join("; "));
|
||||
assert_eq!(actual.out, "xaz");
|
||||
|
||||
let inp = &[
|
||||
"use spam.nu",
|
||||
"scope modules | where name == spam | get 0.externs.0.name",
|
||||
];
|
||||
let actual = nu!(cwd: dirs.test(), &inp.join("; "));
|
||||
assert_eq!(actual.out, "git");
|
||||
|
||||
let inp = &[
|
||||
"use spam.nu",
|
||||
"scope modules | where name == spam | get 0.constants.0.name",
|
||||
];
|
||||
let actual = nu!(cwd: dirs.test(), &inp.join("; "));
|
||||
assert_eq!(actual.out, "X");
|
||||
|
||||
let inp = &[
|
||||
"use spam.nu",
|
||||
"scope modules | where name == spam | get 0.submodules.0.submodules.0.name",
|
||||
];
|
||||
let actual = nu!(cwd: dirs.test(), &inp.join("; "));
|
||||
assert_eq!(actual.out, "bacon");
|
||||
|
||||
let inp = &[
|
||||
"use spam.nu",
|
||||
"scope modules | where name == spam | get 0.submodules.0.submodules.0.commands.0.name",
|
||||
];
|
||||
let actual = nu!(cwd: dirs.test(), &inp.join("; "));
|
||||
assert_eq!(actual.out, "sausage");
|
||||
})
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn correct_scope_aliases_fields() {
|
||||
let module_setup = r#"
|
||||
# nice alias
|
||||
export alias xaz = print
|
||||
"#;
|
||||
|
||||
Playground::setup("correct_scope_aliases_fields", |dirs, sandbox| {
|
||||
sandbox.with_files(vec![FileWithContent("spam.nu", module_setup)]);
|
||||
|
||||
let inp = &[
|
||||
"use spam.nu",
|
||||
"scope aliases | where name == 'spam xaz' | get 0.name",
|
||||
];
|
||||
let actual = nu!(cwd: dirs.test(), &inp.join("; "));
|
||||
assert_eq!(actual.out, "spam xaz");
|
||||
|
||||
let inp = &[
|
||||
"use spam.nu",
|
||||
"scope aliases | where name == 'spam xaz' | get 0.expansion",
|
||||
];
|
||||
let actual = nu!(cwd: dirs.test(), &inp.join("; "));
|
||||
assert_eq!(actual.out, "print");
|
||||
|
||||
let inp = &[
|
||||
"use spam.nu",
|
||||
"scope aliases | where name == 'spam xaz' | get 0.usage",
|
||||
];
|
||||
let actual = nu!(cwd: dirs.test(), &inp.join("; "));
|
||||
assert_eq!(actual.out, "nice alias");
|
||||
|
||||
let inp = &[
|
||||
"use spam.nu",
|
||||
"scope aliases | where name == 'spam xaz' | get 0.decl_id | is-empty",
|
||||
];
|
||||
let actual = nu!(cwd: dirs.test(), &inp.join("; "));
|
||||
assert_eq!(actual.out, "false");
|
||||
})
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn correct_scope_externs_fields() {
|
||||
let module_setup = r#"
|
||||
# nice extern
|
||||
export extern git []
|
||||
"#;
|
||||
|
||||
Playground::setup("correct_scope_aliases_fields", |dirs, sandbox| {
|
||||
sandbox.with_files(vec![FileWithContent("spam.nu", module_setup)]);
|
||||
|
||||
let inp = &[
|
||||
"use spam.nu",
|
||||
"scope externs | where name == 'spam git' | get 0.name",
|
||||
];
|
||||
let actual = nu!(cwd: dirs.test(), &inp.join("; "));
|
||||
assert_eq!(actual.out, "spam git");
|
||||
|
||||
let inp = &[
|
||||
"use spam.nu",
|
||||
"scope externs | where name == 'spam git' | get 0.usage",
|
||||
];
|
||||
let actual = nu!(cwd: dirs.test(), &inp.join("; "));
|
||||
assert_eq!(actual.out, "nice extern");
|
||||
|
||||
let inp = &[
|
||||
"use spam.nu",
|
||||
"scope externs | where name == 'spam git' | get 0.decl_id | is-empty",
|
||||
];
|
||||
let actual = nu!(cwd: dirs.test(), &inp.join("; "));
|
||||
assert_eq!(actual.out, "false");
|
||||
})
|
||||
}
|
||||
|
Reference in New Issue
Block a user