test(subprocess): harden host-exit cleanup fixtures
This commit is contained in:
@@ -104,6 +104,7 @@ async function runScenario(kind: ManagedKind, trigger: ExitTrigger) {
|
||||
let state: TreeState | undefined
|
||||
let identities: ProcessIdentity[] = []
|
||||
let settled = false
|
||||
let treeGone = false
|
||||
try {
|
||||
state = await readTree(join(root, 'tree.json'))
|
||||
await vi.waitFor(() => readFile(join(root, 'ready'), 'utf8'), {
|
||||
@@ -115,6 +116,7 @@ async function runScenario(kind: ManagedKind, trigger: ExitTrigger) {
|
||||
const outcome = await child
|
||||
settled = true
|
||||
await waitForGone(state)
|
||||
treeGone = true
|
||||
const disposeCounts = trigger === 'dispose'
|
||||
? JSON.parse(await readFile(join(root, 'dispose.json'), 'utf8')) as {
|
||||
listenersBefore: number
|
||||
@@ -128,8 +130,10 @@ async function runScenario(kind: ManagedKind, trigger: ExitTrigger) {
|
||||
child.kill('SIGKILL')
|
||||
await child.catch(() => {})
|
||||
}
|
||||
cleanupTree(state, identities)
|
||||
if (state !== undefined) await waitForGone(state).catch(() => {})
|
||||
if (!treeGone) {
|
||||
cleanupTree(state, identities)
|
||||
if (state !== undefined) await waitForGone(state).catch(() => {})
|
||||
}
|
||||
await rm(root, { recursive: true, force: true })
|
||||
}
|
||||
}
|
||||
|
||||
@@ -584,7 +584,7 @@ describe('stdio dispositions', () => {
|
||||
describe('windows tree semantics (injected platform)', () => {
|
||||
it('host-exit termination routes through taskkill immediately', async () => {
|
||||
const killed: number[] = []
|
||||
const running = spawnSubprocess(spec('sleep 60', { graceMs: 60_000 }), {
|
||||
const running = spawnSubprocess(spec('exec sleep 60', { graceMs: 60_000 }), {
|
||||
spillDir,
|
||||
platform: 'win32',
|
||||
taskkill: (pid) => {
|
||||
@@ -603,7 +603,7 @@ describe('windows tree semantics (injected platform)', () => {
|
||||
|
||||
it('terminate routes through taskkill by root pid', async () => {
|
||||
const killed: number[] = []
|
||||
const running = spawnSubprocess(spec('sleep 60', { graceMs: 100 }), {
|
||||
const running = spawnSubprocess(spec('exec sleep 60', { graceMs: 100 }), {
|
||||
spillDir,
|
||||
platform: 'win32',
|
||||
taskkill: (pid) => {
|
||||
|
||||
Reference in New Issue
Block a user