From 00e9e0e6a9b9d6e2146c59b71ebdb357bd5edf32 Mon Sep 17 00:00:00 2001 From: Bahex Date: Wed, 16 Jul 2025 10:32:02 +0300 Subject: [PATCH] fix(overlay use): report errors in export-env (#16184) - fixes #10242 # Tests + Formatting Added 2 tests to confirm `use` and `overlay use` report errors in `export-env` blocks. --------- Co-authored-by: Bahex <17417311+Bahex@users.noreply.github.com> --- .../nu-cmd-lang/src/core_commands/overlay/use_.rs | 2 +- crates/nu-command/tests/commands/use_.rs | 12 ++++++++++++ tests/overlays/mod.rs | 14 ++++++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/crates/nu-cmd-lang/src/core_commands/overlay/use_.rs b/crates/nu-cmd-lang/src/core_commands/overlay/use_.rs index 5ddf4c5f81..1558d1e1dc 100644 --- a/crates/nu-cmd-lang/src/core_commands/overlay/use_.rs +++ b/crates/nu-cmd-lang/src/core_commands/overlay/use_.rs @@ -158,7 +158,7 @@ impl Command for OverlayUse { } let eval_block = get_eval_block(engine_state); - let _ = eval_block(engine_state, &mut callee_stack, block, input); + let _ = eval_block(engine_state, &mut callee_stack, block, input)?; // The export-env block should see the env vars *before* activating this overlay caller_stack.add_overlay(overlay_name); diff --git a/crates/nu-command/tests/commands/use_.rs b/crates/nu-command/tests/commands/use_.rs index 3873f048f5..cb873b8055 100644 --- a/crates/nu-command/tests/commands/use_.rs +++ b/crates/nu-command/tests/commands/use_.rs @@ -354,3 +354,15 @@ fn test_use_with_printing_current_file() { assert_eq!(actual.out, dirs.test().join("mod.nu").to_string_lossy()); }); } + +#[test] +fn report_errors_in_export_env() { + let actual = nu!(r#" + module spam { + export-env { error make -u {msg: "reported"} } + } + use spam + "#); + + assert!(actual.err.contains("reported")); +} diff --git a/tests/overlays/mod.rs b/tests/overlays/mod.rs index 55d9f5a347..b879409a74 100644 --- a/tests/overlays/mod.rs +++ b/tests/overlays/mod.rs @@ -1606,3 +1606,17 @@ fn test_overlay_use_with_printing_current_file() { ); }); } + +#[test] +fn report_errors_in_export_env() { + let inp = &[ + r#"module spam { export-env { error make -u {msg: "reported"} } }"#, + "overlay use spam", + ]; + + let actual = nu!(&inp.join("; ")); + let actual_repl = nu!(nu_repl_code(inp)); + + assert!(actual.err.contains("reported")); + assert!(actual_repl.err.contains("reported")); +}