mirror of
https://github.com/nushell/nushell.git
synced 2025-08-09 09:55:42 +02:00
Allow main command to define top-level module command (#7764)
This commit is contained in:
@ -314,3 +314,31 @@ fn help_usage_extra_usage() {
|
||||
assert!(!actual.out.contains("alias_line2"));
|
||||
})
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn help_modules_main_1() {
|
||||
let inp = &[
|
||||
r#"module spam {
|
||||
export def main [] { 'foo' };
|
||||
}"#,
|
||||
"help spam",
|
||||
];
|
||||
|
||||
let actual = nu!(cwd: ".", pipeline(&inp.join("; ")));
|
||||
|
||||
assert!(actual.out.contains(" spam"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn help_modules_main_2() {
|
||||
let inp = &[
|
||||
r#"module spam {
|
||||
export def main [] { 'foo' };
|
||||
}"#,
|
||||
"help modules | where name == spam | get 0.commands.0",
|
||||
];
|
||||
|
||||
let actual = nu!(cwd: ".", pipeline(&inp.join("; ")));
|
||||
|
||||
assert_eq!(actual.out, "spam");
|
||||
}
|
||||
|
@ -211,3 +211,96 @@ fn use_module_creates_accurate_did_you_mean_2() {
|
||||
"command 'foo' was not found but it exists in module 'spam'; try importing it with `use`"
|
||||
));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn use_main_1() {
|
||||
let inp = &[
|
||||
r#"module spam { export def main [] { "spam" } }"#,
|
||||
r#"use spam"#,
|
||||
r#"spam"#,
|
||||
];
|
||||
|
||||
let actual = nu!(cwd: ".", pipeline(&inp.join("; ")));
|
||||
|
||||
assert_eq!(actual.out, "spam");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn use_main_2() {
|
||||
let inp = &[
|
||||
r#"module spam { export def main [] { "spam" } }"#,
|
||||
r#"use spam main"#,
|
||||
r#"spam"#,
|
||||
];
|
||||
|
||||
let actual = nu!(cwd: ".", pipeline(&inp.join("; ")));
|
||||
|
||||
assert_eq!(actual.out, "spam");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn use_main_3() {
|
||||
let inp = &[
|
||||
r#"module spam { export def main [] { "spam" } }"#,
|
||||
r#"use spam [ main ]"#,
|
||||
r#"spam"#,
|
||||
];
|
||||
|
||||
let actual = nu!(cwd: ".", pipeline(&inp.join("; ")));
|
||||
|
||||
assert_eq!(actual.out, "spam");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn use_main_4() {
|
||||
let inp = &[
|
||||
r#"module spam { export def main [] { "spam" } }"#,
|
||||
r#"use spam *"#,
|
||||
r#"spam"#,
|
||||
];
|
||||
|
||||
let actual = nu!(cwd: ".", pipeline(&inp.join("; ")));
|
||||
|
||||
assert_eq!(actual.out, "spam");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn use_main_def_env() {
|
||||
let inp = &[
|
||||
r#"module spam { export def-env main [] { let-env SPAM = "spam" } }"#,
|
||||
r#"use spam"#,
|
||||
r#"spam"#,
|
||||
r#"$env.SPAM"#,
|
||||
];
|
||||
|
||||
let actual = nu!(cwd: ".", pipeline(&inp.join("; ")));
|
||||
|
||||
assert_eq!(actual.out, "spam");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn use_main_def_known_external() {
|
||||
// note: requires installed cargo
|
||||
let inp = &[
|
||||
r#"module cargo { export extern main [] }"#,
|
||||
r#"use cargo"#,
|
||||
r#"cargo --version"#,
|
||||
];
|
||||
|
||||
let actual = nu!(cwd: ".", pipeline(&inp.join("; ")));
|
||||
|
||||
assert!(actual.out.contains("cargo"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn use_main_not_exported() {
|
||||
let inp = &[
|
||||
r#"module spam { def main [] { "spam" } }"#,
|
||||
r#"use spam"#,
|
||||
r#"spam"#,
|
||||
];
|
||||
|
||||
let actual = nu!(cwd: ".", pipeline(&inp.join("; ")));
|
||||
|
||||
assert!(actual.err.contains("external_command"));
|
||||
}
|
||||
|
Reference in New Issue
Block a user