diff --git a/src/install/PackageInstaller.rs b/src/install/PackageInstaller.rs index a74f458d2cbc..6a644614ba13 100644 --- a/src/install/PackageInstaller.rs +++ b/src/install/PackageInstaller.rs @@ -2197,10 +2197,13 @@ impl<'a> PackageInstaller<'a> { ), ), ); + // Opt-in: ordinary failures; the dump would land in the install output. #[cfg(bun_debug)] - { - let t = cause.debug_trace; - bun_crash_handler::dump_stack_trace(&t.trace(), Default::default()); + if PackageInstaller.is_visible() { + bun_crash_handler::dump_stack_trace( + &cause.debug_trace.trace(), + Default::default(), + ); } self.summary.fail += 1; } diff --git a/test/cli/install/bun-link.test.ts b/test/cli/install/bun-link.test.ts index 8a937dad63fd..f17eddaf2163 100644 --- a/test/cli/install/bun-link.test.ts +++ b/test/cli/install/bun-link.test.ts @@ -458,7 +458,13 @@ it("should link dependency without crashing", async () => { env, }); const err4 = await new Response(stderr4).text(); - expect(err4).toContain(`FileNotFound: failed linking dependency/workspace to node_modules for package ${link_name}`); + // Debug builds used to follow this line with a stack trace (on stdout via + // llvm-symbolizer on Linux, on stderr elsewhere); neither stream may carry it + // unless BUN_DEBUG_PackageInstaller=1 is set. + expect(err4.split(/\r?\n/)).toEqual([ + `FileNotFound: failed linking dependency/workspace to node_modules for package ${link_name}`, + "", + ]); const out4 = await new Response(stdout4).text(); expect(out4.replace(/\[[0-9\.]+m?s\]/, "[]").split(/\r?\n/)).toEqual([ expect.stringContaining("bun install v1."),