Merge 8637a2f1a2
into 1c37f4b958
This commit is contained in:
commit
04cc40c26b
|
@ -22,7 +22,9 @@ pub fn get_full_help(
|
||||||
};
|
};
|
||||||
|
|
||||||
let stack = &mut stack.start_capture();
|
let stack = &mut stack.start_capture();
|
||||||
let signature = command.signature().update_from_command(command);
|
let signature = engine_state
|
||||||
|
.get_signature(command)
|
||||||
|
.update_from_command(command);
|
||||||
|
|
||||||
get_documentation(
|
get_documentation(
|
||||||
&signature,
|
&signature,
|
||||||
|
|
|
@ -954,7 +954,7 @@ pub fn parse_internal_call(
|
||||||
let _ = working_set.add_span(call.head);
|
let _ = working_set.add_span(call.head);
|
||||||
|
|
||||||
let decl = working_set.get_decl(decl_id);
|
let decl = working_set.get_decl(decl_id);
|
||||||
let signature = decl.signature();
|
let signature = working_set.get_signature(decl);
|
||||||
let output = signature.get_output_type();
|
let output = signature.get_output_type();
|
||||||
|
|
||||||
// storing the var ID for later due to borrowing issues
|
// storing the var ID for later due to borrowing issues
|
||||||
|
|
|
@ -5,7 +5,7 @@ use crate::{
|
||||||
StateDelta, Variable, VirtualPath, Visibility,
|
StateDelta, Variable, VirtualPath, Visibility,
|
||||||
},
|
},
|
||||||
BlockId, Category, CompileError, Config, DeclId, FileId, GetSpan, Module, ModuleId, ParseError,
|
BlockId, Category, CompileError, Config, DeclId, FileId, GetSpan, Module, ModuleId, ParseError,
|
||||||
ParseWarning, Span, SpanId, Type, Value, VarId, VirtualPathId,
|
ParseWarning, Signature, Span, SpanId, Type, Value, VarId, VirtualPathId,
|
||||||
};
|
};
|
||||||
use core::panic;
|
use core::panic;
|
||||||
use std::{
|
use std::{
|
||||||
|
@ -708,6 +708,14 @@ impl<'a> StateWorkingSet<'a> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn get_signature(&self, decl: &dyn Command) -> Signature {
|
||||||
|
if let Some(block_id) = decl.block_id() {
|
||||||
|
*self.get_block(block_id).signature.clone()
|
||||||
|
} else {
|
||||||
|
decl.signature()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub fn find_commands_by_predicate(
|
pub fn find_commands_by_predicate(
|
||||||
&self,
|
&self,
|
||||||
predicate: impl Fn(&[u8]) -> bool,
|
predicate: impl Fn(&[u8]) -> bool,
|
||||||
|
|
|
@ -334,3 +334,69 @@ fn source_empty_file() {
|
||||||
assert!(actual.out.is_empty());
|
assert!(actual.out.is_empty());
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn main_script_help_uses_script_name1() {
|
||||||
|
// Note: this test is somewhat fragile and might need to be adapted if the usage help message changes
|
||||||
|
Playground::setup("main_filename", |dirs, sandbox| {
|
||||||
|
sandbox.mkdir("main_filename");
|
||||||
|
sandbox.with_files(&[FileWithContent(
|
||||||
|
"script.nu",
|
||||||
|
r#"def main [] {}
|
||||||
|
"#,
|
||||||
|
)]);
|
||||||
|
let actual = nu!(cwd: dirs.test(), pipeline("nu script.nu --help"));
|
||||||
|
assert!(actual.out.contains("> script.nu"));
|
||||||
|
assert!(!actual.out.contains("> main"));
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn main_script_help_uses_script_name2() {
|
||||||
|
// Note: this test is somewhat fragile and might need to be adapted if the usage help message changes
|
||||||
|
Playground::setup("main_filename", |dirs, sandbox| {
|
||||||
|
sandbox.mkdir("main_filename");
|
||||||
|
sandbox.with_files(&[FileWithContent(
|
||||||
|
"script.nu",
|
||||||
|
r#"def main [foo: string] {}
|
||||||
|
"#,
|
||||||
|
)]);
|
||||||
|
let actual = nu!(cwd: dirs.test(), pipeline("nu script.nu"));
|
||||||
|
assert!(actual.err.contains("Usage: script.nu"));
|
||||||
|
assert!(!actual.err.contains("Usage: main"));
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn main_script_subcommand_help_uses_script_name1() {
|
||||||
|
// Note: this test is somewhat fragile and might need to be adapted if the usage help message changes
|
||||||
|
Playground::setup("main_filename", |dirs, sandbox| {
|
||||||
|
sandbox.mkdir("main_filename");
|
||||||
|
sandbox.with_files(&[FileWithContent(
|
||||||
|
"script.nu",
|
||||||
|
r#"def main [] {}
|
||||||
|
def 'main foo' [] {}
|
||||||
|
"#,
|
||||||
|
)]);
|
||||||
|
let actual = nu!(cwd: dirs.test(), pipeline("nu script.nu foo --help"));
|
||||||
|
assert!(actual.out.contains("> script.nu foo"));
|
||||||
|
assert!(!actual.out.contains("> main foo"));
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn main_script_subcommand_help_uses_script_name2() {
|
||||||
|
// Note: this test is somewhat fragile and might need to be adapted if the usage help message changes
|
||||||
|
Playground::setup("main_filename", |dirs, sandbox| {
|
||||||
|
sandbox.mkdir("main_filename");
|
||||||
|
sandbox.with_files(&[FileWithContent(
|
||||||
|
"script.nu",
|
||||||
|
r#"def main [] {}
|
||||||
|
def 'main foo' [bar: string] {}
|
||||||
|
"#,
|
||||||
|
)]);
|
||||||
|
let actual = nu!(cwd: dirs.test(), pipeline("nu script.nu foo"));
|
||||||
|
assert!(actual.err.contains("Usage: script.nu foo"));
|
||||||
|
assert!(!actual.err.contains("Usage: main foo"));
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user