From 3eaebcaa4f29a6a14b17b366cce4b2ee5f7f8577 Mon Sep 17 00:00:00 2001 From: Tom Mrazauskas Date: Fri, 13 May 2022 10:31:31 +0300 Subject: [PATCH 1/2] fix(jest-worker): JestWorkerFarm type --- .../__typetests__/jest-worker.test.ts | 26 ++++++++++++++++--- .../jest-worker/__typetests__/testWorker.ts | 7 +++-- packages/jest-worker/src/types.ts | 2 +- 3 files changed, 28 insertions(+), 7 deletions(-) diff --git a/packages/jest-worker/__typetests__/jest-worker.test.ts b/packages/jest-worker/__typetests__/jest-worker.test.ts index 95dbf7086b26..ffa872103dce 100644 --- a/packages/jest-worker/__typetests__/jest-worker.test.ts +++ b/packages/jest-worker/__typetests__/jest-worker.test.ts @@ -10,7 +10,8 @@ import type {JestWorkerFarm} from 'jest-worker'; import type * as testWorker from './testWorker'; type TestWorker = { - runTest: () => void; + runTest: (a: string, b: number) => void; + doSomething: () => void; isResult: boolean; end: () => void; // reserved keys should be excluded from returned type getStderr: () => string; @@ -40,8 +41,20 @@ expectType(unknownWorkerFarm.getStdout()); declare const detectedWorkerFarm: JestWorkerFarm; -expectType>(detectedWorkerFarm.runTest()); -expectType>(detectedWorkerFarm.runTestAsync()); +expectType>(detectedWorkerFarm.runTest('abc', true)); +expectType>(detectedWorkerFarm.runTestAsync(123, 456)); + +expectType>(detectedWorkerFarm.doSomething()); +expectType>(detectedWorkerFarm.doSomething()); +expectType>(detectedWorkerFarm.doSomethingAsync()); +expectType>(detectedWorkerFarm.doSomethingAsync()); + +expectError(detectedWorkerFarm.runTest()); +expectError(detectedWorkerFarm.runTest('abc')); +expectError(detectedWorkerFarm.runTestAsync()); +expectError(detectedWorkerFarm.runTestAsync(123)); +expectError(detectedWorkerFarm.doSomething(123)); +expectError(detectedWorkerFarm.doSomethingAsync('abc')); expectError(detectedWorkerFarm.getResult()); expectError(detectedWorkerFarm.isResult); @@ -62,7 +75,12 @@ expectType(detectedWorkerFarm.getStdout()); declare const typedWorkerFarm: JestWorkerFarm; -expectType>(typedWorkerFarm.runTest()); +expectType>(typedWorkerFarm.runTest('abc', 123)); +expectType>(typedWorkerFarm.doSomething()); + +expectError(typedWorkerFarm.runTest()); +expectError(typedWorkerFarm.runTest('abc')); +expectError(typedWorkerFarm.doSomething('abc')); expectError(typedWorkerFarm.isResult); expectError(typedWorkerFarm.runTestAsync()); diff --git a/packages/jest-worker/__typetests__/testWorker.ts b/packages/jest-worker/__typetests__/testWorker.ts index 5d0b527f9207..60839f8a3773 100644 --- a/packages/jest-worker/__typetests__/testWorker.ts +++ b/packages/jest-worker/__typetests__/testWorker.ts @@ -5,8 +5,11 @@ * LICENSE file in the root directory of this source tree. */ -export function runTest(): void {} -export async function runTestAsync(): Promise {} +export function runTest(a: string, b: boolean): void {} +export async function runTestAsync(c: number, d: number): Promise {} + +export function doSomething(): void {} +export async function doSomethingAsync(): Promise {} function getResult(): string { return 'result'; diff --git a/packages/jest-worker/src/types.ts b/packages/jest-worker/src/types.ts index 7b93f82ca3a0..455d6c8b6233 100644 --- a/packages/jest-worker/src/types.ts +++ b/packages/jest-worker/src/types.ts @@ -12,7 +12,7 @@ import type {ResourceLimits} from 'worker_threads'; type ReservedKeys = 'end' | 'getStderr' | 'getStdout' | 'setup' | 'teardown'; type ExcludeReservedKeys = Exclude; -type FunctionLike = (args: any) => unknown; +type FunctionLike = (...args: any) => unknown; type MethodLikeKeys = { [K in keyof T]: T[K] extends FunctionLike ? K : never; From c17b19c26254bc58ba99485d70873d963e13fb21 Mon Sep 17 00:00:00 2001 From: Tom Mrazauskas Date: Fri, 13 May 2022 10:44:10 +0300 Subject: [PATCH 2/2] add changelog entry --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c9490142c8dd..6b0e4a8b3327 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ ### Fixes +- `[jest-worker]` Make `JestWorkerFarm` helper type to include methods of worker module that take more than one argument ([#12839](https://github.com/facebook/jest/pull/12839)) + ### Chore & Maintenance - `[docs]` Updated docs to indicate that `jest-environment-jsdom` is a separate package [#12828](https://github.com/facebook/jest/issues/12828)