From 3faaf41e4d5ea52ae3a96467f8139aee11a6a17e Mon Sep 17 00:00:00 2001 From: Tomi Turtiainen <10324676+tomi@users.noreply.github.com> Date: Fri, 18 Oct 2024 10:45:27 +0300 Subject: [PATCH 1/2] test: Fix flaky task-runner integration test --- packages/cli/src/runners/task-runner-process.ts | 12 ++++++++---- .../integration/runners/task-runner-process.test.ts | 9 +++++---- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/packages/cli/src/runners/task-runner-process.ts b/packages/cli/src/runners/task-runner-process.ts index 857d581127f64..a3bc1183873fe 100644 --- a/packages/cli/src/runners/task-runner-process.ts +++ b/packages/cli/src/runners/task-runner-process.ts @@ -23,10 +23,14 @@ export class TaskRunnerProcess { return this.process?.pid; } + /** Promise that resolves when the process has exited */ + public get runPromise() { + return this._runPromise; + } + private process: ChildProcess | null = null; - /** Promise that resolves after the process has exited */ - private runPromise: Promise | null = null; + private _runPromise: Promise | null = null; private isShuttingDown = false; @@ -97,7 +101,7 @@ export class TaskRunnerProcess { } else { this.killNode(); } - await this.runPromise; + await this._runPromise; this.isShuttingDown = false; } @@ -128,7 +132,7 @@ export class TaskRunnerProcess { } private monitorProcess(taskRunnerProcess: ChildProcess) { - this.runPromise = new Promise((resolve) => { + this._runPromise = new Promise((resolve) => { taskRunnerProcess.on('exit', (code) => { this.onProcessExit(code, resolve); }); diff --git a/packages/cli/test/integration/runners/task-runner-process.test.ts b/packages/cli/test/integration/runners/task-runner-process.test.ts index e623d5f37116a..42223a7e309c5 100644 --- a/packages/cli/test/integration/runners/task-runner-process.test.ts +++ b/packages/cli/test/integration/runners/task-runner-process.test.ts @@ -88,15 +88,16 @@ describe('TaskRunnerProcess', () => { // @ts-expect-error private property runnerProcess.process?.kill('SIGKILL'); - // Assert - // Wait until the runner is running again - await retryUntil(() => expect(runnerProcess.isRunning).toBeTruthy()); - expect(runnerProcess.pid).not.toBe(processId); + // Wait until the runner has exited + await runnerProcess.runPromise; + // Assert // Wait until the runner has connected again await retryUntil(() => expect(getNumConnectedRunners()).toBe(1)); expect(getNumConnectedRunners()).toBe(1); expect(getNumRegisteredRunners()).toBe(1); + expect(runnerProcess.pid).toBeDefined(); + expect(runnerProcess.pid).not.toBe(processId); }); it('should launch runner directly if not using a launcher', async () => { From 5f115ccc09565dae1bc88cfea5ad3f6345464517 Mon Sep 17 00:00:00 2001 From: Tomi Turtiainen <10324676+tomi@users.noreply.github.com> Date: Fri, 18 Oct 2024 11:17:30 +0300 Subject: [PATCH 2/2] Remove unnecessary expect --- .../cli/test/integration/runners/task-runner-process.test.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/cli/test/integration/runners/task-runner-process.test.ts b/packages/cli/test/integration/runners/task-runner-process.test.ts index 42223a7e309c5..4b35e270df09c 100644 --- a/packages/cli/test/integration/runners/task-runner-process.test.ts +++ b/packages/cli/test/integration/runners/task-runner-process.test.ts @@ -96,7 +96,6 @@ describe('TaskRunnerProcess', () => { await retryUntil(() => expect(getNumConnectedRunners()).toBe(1)); expect(getNumConnectedRunners()).toBe(1); expect(getNumRegisteredRunners()).toBe(1); - expect(runnerProcess.pid).toBeDefined(); expect(runnerProcess.pid).not.toBe(processId); });