Allow recursive module dirs; Require mod.nu in dirs (#9185)

This commit is contained in:
Jakub Žádník
2023-05-13 01:20:33 +03:00
committed by GitHub
parent 92c1051143
commit 8d8304cf91
9 changed files with 85 additions and 43 deletions

View File

@ -641,6 +641,27 @@ fn module_dir() {
assert_eq!(actual.out, "spambaz");
}
#[test]
fn module_dir_deep() {
let import = "use samples/spam";
let inp = &[import, "spam bacon"];
let actual_repl = nu!(cwd: "tests/modules", pipeline(&inp.join("; ")));
assert_eq!(actual_repl.out, "bacon");
let inp = &[import, "spam bacon foo"];
let actual_repl = nu!(cwd: "tests/modules", pipeline(&inp.join("; ")));
assert_eq!(actual_repl.out, "bacon foo");
let inp = &[import, "spam bacon beans"];
let actual_repl = nu!(cwd: "tests/modules", pipeline(&inp.join("; ")));
assert_eq!(actual_repl.out, "beans");
let inp = &[import, "spam bacon beans foo"];
let actual_repl = nu!(cwd: "tests/modules", pipeline(&inp.join("; ")));
assert_eq!(actual_repl.out, "beans foo");
}
#[test]
fn module_dir_import_twice_no_panic() {
let import = "use samples/spam";
@ -656,6 +677,13 @@ fn not_allowed_submodule_file() {
assert!(actual.err.contains("invalid_module_file_name"));
}
#[test]
fn module_dir_missing_mod_nu() {
let inp = &["use samples/missing_mod_nu"];
let actual = nu!(cwd: "tests/modules", pipeline(&inp.join("; ")));
assert!(actual.err.contains("module_missing_mod_nu_file"));
}
#[test]
fn allowed_local_module() {
let inp = &["module spam { module spam {} }"];