mirror of
https://github.com/oven-sh/bun
synced 2026-02-09 10:28:47 +00:00
fix(win): do not allow exitcode==1 and signalCode to be set at once (#10907)
This commit is contained in:
@@ -385,21 +385,21 @@ pub const Process = struct {
|
||||
|
||||
bun.windows.libuv.log("Process.onExit({d}) code: {d}, signal: {?}", .{ process.pid, exit_code, signal_code });
|
||||
|
||||
if (exit_code >= 0) {
|
||||
this.close();
|
||||
this.onExit(
|
||||
.{
|
||||
.exited = .{ .code = exit_code, .signal = signal_code orelse @enumFromInt(0) },
|
||||
},
|
||||
&rusage,
|
||||
);
|
||||
} else if (signal_code) |sig| {
|
||||
if (signal_code) |sig| {
|
||||
this.close();
|
||||
|
||||
this.onExit(
|
||||
.{ .signaled = sig },
|
||||
&rusage,
|
||||
);
|
||||
} else if (exit_code >= 0) {
|
||||
this.close();
|
||||
this.onExit(
|
||||
.{
|
||||
.exited = .{ .code = exit_code, .signal = @enumFromInt(0) },
|
||||
},
|
||||
&rusage,
|
||||
);
|
||||
} else {
|
||||
this.onExit(
|
||||
.{
|
||||
@@ -575,7 +575,10 @@ pub const Status = union(enum) {
|
||||
|
||||
if (exit_code != null) {
|
||||
return .{
|
||||
.exited = .{ .code = exit_code.?, .signal = @enumFromInt(signal orelse 0) },
|
||||
.exited = .{
|
||||
.code = exit_code.?,
|
||||
.signal = @enumFromInt(signal orelse 0),
|
||||
},
|
||||
};
|
||||
} else if (signal != null) {
|
||||
return .{
|
||||
|
||||
@@ -309,9 +309,6 @@ pub const RunCommand = struct {
|
||||
|
||||
if (!use_system_shell) {
|
||||
if (!silent) {
|
||||
if (Environment.isDebug) {
|
||||
Output.prettyError("[bun shell] ", .{});
|
||||
}
|
||||
Output.prettyErrorln("<r><d><magenta>$<r> <d><b>{s}<r>", .{combined_script});
|
||||
Output.flush();
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ describe("subprocess.kill", () => {
|
||||
proc.kill(...input);
|
||||
|
||||
await promise;
|
||||
expect(proc.exitCode).toBe(isWindows ? 1 : null);
|
||||
expect(proc.exitCode).toBe(null);
|
||||
expect(proc.signalCode).toBe(key as any);
|
||||
});
|
||||
}
|
||||
@@ -45,7 +45,7 @@ describe("subprocess.kill", () => {
|
||||
|
||||
await promise;
|
||||
|
||||
expect(proc.exitCode).toBe(isWindows ? 1 : null);
|
||||
expect(proc.exitCode).toBe(null);
|
||||
expect(proc.signalCode).toBe("SIGTERM");
|
||||
});
|
||||
}
|
||||
|
||||
@@ -545,11 +545,9 @@ describe("websocket in subprocess", () => {
|
||||
|
||||
subprocess.kill();
|
||||
|
||||
if (isWindows) {
|
||||
expect(await subprocess.exited).toBe(1);
|
||||
} else {
|
||||
expect(await subprocess.exited).toBe(143);
|
||||
}
|
||||
expect(await subprocess.exited).toBe(143); // 128 + 15 (SIGTERM)
|
||||
expect(subprocess.exitCode).toBe(null);
|
||||
expect(subprocess.signalCode).toBe("SIGTERM");
|
||||
});
|
||||
|
||||
it("should exit with invalid url", async () => {
|
||||
|
||||
Reference in New Issue
Block a user