fix(subprocess): honor teardown and PATH semantics

This commit is contained in:
Tianyi Cui
2026-07-29 10:02:17 +08:00
parent f61a4943bd
commit 098f826001
2 changed files with 32 additions and 11 deletions

View File

@@ -67,7 +67,10 @@ export class LocalSubprocessService extends SubprocessService {
pending.push(terminal.waitForExit().then(() => { this.terminals.delete(terminal) }))
}
this.live.clear()
await Promise.all(pending)
const outcomes = await Promise.allSettled(pending)
for (const outcome of outcomes) {
if (outcome.status === 'rejected') throw outcome.reason
}
await rm(this.runtimeRoot, { recursive: true, force: true })
}, 'local subprocess teardown')
}
@@ -106,7 +109,7 @@ export class LocalSubprocessService extends SubprocessService {
? (environmentValue(env, 'PATHEXT') ?? '.COM;.EXE;.BAT;.CMD').split(';')
: ['']
return path.split(delimiter).flatMap(directory =>
directory === '' ? [] : extensions.map(extension => resolve(this.cwd, directory, command + extension)))
extensions.map(extension => resolve(this.cwd, directory, command + extension)))
}
spawn(spec: SubprocessSpawnSpec): SubprocessHandle {