Allow main command to define top-level module command (#7764)

This commit is contained in:
Jakub Žádník
2023-01-22 21:34:15 +02:00
committed by GitHub
parent 8d5165c449
commit 3552d03f6c
13 changed files with 633 additions and 135 deletions

View File

@ -3,17 +3,14 @@ use crate::tests::{fail_test, run_test, TestResult};
// TODO: Test the use/hide tests also as separate lines in REPL (i.e., with merging the delta in between)
#[test]
fn hides_def() -> TestResult {
fail_test(
r#"def foo [] { "foo" }; hide foo; foo"#,
"", // we just care if it errors
)
fail_test(r#"def foo [] { "foo" }; hide foo; foo"#, "external_command")
}
#[test]
fn hides_alias() -> TestResult {
fail_test(
r#"alias foo = echo "foo"; hide foo; foo"#,
"", // we just care if it errors
"external_command",
)
}
@ -52,7 +49,7 @@ fn hides_env_then_redefines() -> TestResult {
fn hides_def_in_scope_1() -> TestResult {
fail_test(
r#"def foo [] { "foo" }; do { hide foo; foo }"#,
"", // we just care if it errors
"external_command",
)
}
@ -68,7 +65,7 @@ fn hides_def_in_scope_2() -> TestResult {
fn hides_def_in_scope_3() -> TestResult {
fail_test(
r#"def foo [] { "foo" }; do { hide foo; def foo [] { "bar" }; hide foo; foo }"#,
"", // we just care if it errors
"external_command",
)
}
@ -76,7 +73,7 @@ fn hides_def_in_scope_3() -> TestResult {
fn hides_def_in_scope_4() -> TestResult {
fail_test(
r#"def foo [] { "foo" }; do { def foo [] { "bar" }; hide foo; hide foo; foo }"#,
"", // we just care if it errors
"external_command",
)
}
@ -84,7 +81,7 @@ fn hides_def_in_scope_4() -> TestResult {
fn hides_alias_in_scope_1() -> TestResult {
fail_test(
r#"alias foo = echo "foo"; do { hide foo; foo }"#,
"", // we just care if it errors
"external_command",
)
}
@ -100,7 +97,7 @@ fn hides_alias_in_scope_2() -> TestResult {
fn hides_alias_in_scope_3() -> TestResult {
fail_test(
r#"alias foo = echo "foo"; do { hide foo; alias foo = echo "bar"; hide foo; foo }"#,
"", // we just care if it errors
"external_command",
)
}
@ -108,7 +105,7 @@ fn hides_alias_in_scope_3() -> TestResult {
fn hides_alias_in_scope_4() -> TestResult {
fail_test(
r#"alias foo = echo "foo"; do { alias foo = echo "bar"; hide foo; hide foo; foo }"#,
"", // we just care if it errors
"external_command",
)
}
@ -213,7 +210,7 @@ fn hides_alias_runs_def_2() -> TestResult {
fn hides_alias_and_def() -> TestResult {
fail_test(
r#"alias foo = echo "foo"; def foo [] { "bar" }; hide foo; hide foo; foo"#,
"", // we just care if it errors
"external_command",
)
}
@ -221,7 +218,7 @@ fn hides_alias_and_def() -> TestResult {
fn hides_def_import_1() -> TestResult {
fail_test(
r#"module spam { export def foo [] { "foo" } }; use spam; hide spam foo; spam foo"#,
"", // we just care if it errors
"external_command",
)
}
@ -229,7 +226,7 @@ fn hides_def_import_1() -> TestResult {
fn hides_def_import_2() -> TestResult {
fail_test(
r#"module spam { export def foo [] { "foo" } }; use spam; hide spam; spam foo"#,
"", // we just care if it errors
"external_command",
)
}
@ -237,7 +234,7 @@ fn hides_def_import_2() -> TestResult {
fn hides_def_import_3() -> TestResult {
fail_test(
r#"module spam { export def foo [] { "foo" } }; use spam; hide spam [foo]; spam foo"#,
"", // we just care if it errors
"external_command",
)
}
@ -245,7 +242,7 @@ fn hides_def_import_3() -> TestResult {
fn hides_def_import_4() -> TestResult {
fail_test(
r#"module spam { export def foo [] { "foo" } }; use spam foo; hide foo; foo"#,
"", // we just care if it errors
"external_command",
)
}
@ -253,7 +250,7 @@ fn hides_def_import_4() -> TestResult {
fn hides_def_import_5() -> TestResult {
fail_test(
r#"module spam { export def foo [] { "foo" } }; use spam *; hide foo; foo"#,
"", // we just care if it errors
"external_command",
)
}
@ -261,7 +258,7 @@ fn hides_def_import_5() -> TestResult {
fn hides_def_import_6() -> TestResult {
fail_test(
r#"module spam { export def foo [] { "foo" } }; use spam *; hide spam *; foo"#,
"", // we just care if it errors
"external_command",
)
}
@ -277,7 +274,7 @@ fn hides_def_import_then_reimports() -> TestResult {
fn hides_alias_import_1() -> TestResult {
fail_test(
r#"module spam { export alias foo = "foo" }; use spam; hide spam foo; spam foo"#,
"", // we just care if it errors
"external_command",
)
}
@ -285,7 +282,7 @@ fn hides_alias_import_1() -> TestResult {
fn hides_alias_import_2() -> TestResult {
fail_test(
r#"module spam { export alias foo = "foo" }; use spam; hide spam; spam foo"#,
"", // we just care if it errors
"external_command",
)
}
@ -293,7 +290,7 @@ fn hides_alias_import_2() -> TestResult {
fn hides_alias_import_3() -> TestResult {
fail_test(
r#"module spam { export alias foo = "foo" }; use spam; hide spam [foo]; spam foo"#,
"", // we just care if it errors
"external_command",
)
}
@ -301,7 +298,7 @@ fn hides_alias_import_3() -> TestResult {
fn hides_alias_import_4() -> TestResult {
fail_test(
r#"module spam { export alias foo = "foo" }; use spam foo; hide foo; foo"#,
"", // we just care if it errors
"external_command",
)
}
@ -309,7 +306,7 @@ fn hides_alias_import_4() -> TestResult {
fn hides_alias_import_5() -> TestResult {
fail_test(
r#"module spam { export alias foo = "foo" }; use spam *; hide foo; foo"#,
"", // we just care if it errors
"external_command",
)
}
@ -317,7 +314,7 @@ fn hides_alias_import_5() -> TestResult {
fn hides_alias_import_6() -> TestResult {
fail_test(
r#"module spam { export alias foo = "foo" }; use spam *; hide spam *; foo"#,
"", // we just care if it errors
"external_command",
)
}
@ -338,7 +335,6 @@ fn hides_env_import_1() -> TestResult {
}
#[test]
#[ignore = "Re-enable after virtualenv update"]
fn hides_def_runs_env_import() -> TestResult {
run_test(
r#"module spam { export-env { let-env foo = "foo" }; export def foo [] { "bar" } }; use spam foo; hide foo; $env.foo"#,
@ -390,7 +386,7 @@ fn hide_shadowed_env() -> TestResult {
fn hides_all_decls_within_scope() -> TestResult {
fail_test(
r#"module spam { export def foo [] { "bar" } }; def foo [] { "foo" }; use spam foo; hide foo; foo"#,
"", // we just care if it errors
"external_command",
)
}
@ -401,3 +397,35 @@ fn hides_all_envs_within_scope() -> TestResult {
"",
)
}
#[test]
fn hides_main_import_1() -> TestResult {
fail_test(
r#"module spam { export def main [] { "foo" } }; use spam; hide spam; spam"#,
"external_command",
)
}
#[test]
fn hides_main_import_2() -> TestResult {
fail_test(
r#"module spam { export def main [] { "foo" } }; use spam; hide spam main; spam"#,
"external_command",
)
}
#[test]
fn hides_main_import_3() -> TestResult {
fail_test(
r#"module spam { export def main [] { "foo" } }; use spam; hide spam [ main ]; spam"#,
"external_command",
)
}
#[test]
fn hides_main_import_4() -> TestResult {
fail_test(
r#"module spam { export def main [] { "foo" } }; use spam; hide spam *; spam"#,
"external_command",
)
}