From b9a68a5be9ce32f65132df3693c75229bcc73ad1 Mon Sep 17 00:00:00 2001 From: Peter Samarin Date: Tue, 27 Jun 2023 12:55:39 +0200 Subject: [PATCH] bugfix: TypeScript support for Jest now works in standalone projects --- README.md | 1 + docs/jest-integration.md | 8 ++--- .../jest_typescript_integration/globals.d.ts | 1 - .../integration.fuzz.ts | 5 +-- packages/jest-runner/index.ts | 31 +++++++++++++------ packages/jest-runner/jest-extension.ts | 12 ------- packages/jest-runner/worker.ts | 1 - .../fuzz+lib+otherCodeCoverage-fuzz.json | 2 +- .../otherCodeCoverage.fuzz.ts | 2 +- 9 files changed, 27 insertions(+), 36 deletions(-) delete mode 100644 examples/jest_typescript_integration/globals.d.ts delete mode 100644 packages/jest-runner/jest-extension.ts diff --git a/README.md b/README.md index a7fed41f..0e7ff52f 100644 --- a/README.md +++ b/README.md @@ -98,6 +98,7 @@ following example: ```typescript // file: "Target.fuzz.ts" +import "@jazzer.js/jest-runner"; import * as target from "./target"; describe("Target", () => { diff --git a/docs/jest-integration.md b/docs/jest-integration.md index 5c6ae9dd..adaf1a1d 100644 --- a/docs/jest-integration.md +++ b/docs/jest-integration.md @@ -127,7 +127,7 @@ To introduce the `fuzz` function types globally, add the following import to `globals.d.ts`. This could also be done in the individual test files. ```typescript -import "@jazzer.js/jest-runner/jest-extension"; +import "@jazzer.js/jest-runner"; ``` To provide accurate coverage reports for TypeScript fuzz tests, make sure to @@ -224,12 +224,8 @@ describe("My describe", () => { After the setup mentioned previously, Jest fuzz tests can be written in TypeScript, just as one would expect. -**Note**: To satisfy TypeScript's type checker, add an import of -`@jazzer.js/jest-runner/jest-extension` in `globals.d.ts` or in the individual -test file. - ```typescript -import "@jazzer.js/jest-runner/jest-extension"; +import "@jazzer.js/jest-runner"; import * as target from "./target"; describe("Target", () => { diff --git a/examples/jest_typescript_integration/globals.d.ts b/examples/jest_typescript_integration/globals.d.ts deleted file mode 100644 index 7483401e..00000000 --- a/examples/jest_typescript_integration/globals.d.ts +++ /dev/null @@ -1 +0,0 @@ -import "@jazzer.js/jest-runner/jest-extension"; diff --git a/examples/jest_typescript_integration/integration.fuzz.ts b/examples/jest_typescript_integration/integration.fuzz.ts index 31e9c6db..31a75b1c 100644 --- a/examples/jest_typescript_integration/integration.fuzz.ts +++ b/examples/jest_typescript_integration/integration.fuzz.ts @@ -14,10 +14,7 @@ * limitations under the License. */ -// Import the fuzz testing extension definition to compile TS code, -// or import it globally in globals.d.ts, like in this example. -// import "@jazzer.js/jest-runner/jest-extension"; - +import "@jazzer.js/jest-runner"; import * as target from "./target"; describe("Target", () => { diff --git a/packages/jest-runner/index.ts b/packages/jest-runner/index.ts index 3132b130..671f2f66 100644 --- a/packages/jest-runner/index.ts +++ b/packages/jest-runner/index.ts @@ -14,22 +14,22 @@ * limitations under the License. */ +import { loadConfig } from "./config"; +import { cleanupJestRunnerStack } from "./errorUtils"; +import { FuzzTest } from "./fuzz"; +import { JazzerWorker } from "./worker"; +import { registerGlobals, initFuzzing } from "@jazzer.js/core"; import { - TestRunnerOptions, - Test, - TestRunnerContext, - TestWatcher, CallbackTestRunner, + OnTestFailure, OnTestStart, OnTestSuccess, - OnTestFailure, + Test, + TestRunnerContext, + TestRunnerOptions, + TestWatcher, } from "jest-runner"; - import { Config } from "@jest/types"; -import { JazzerWorker } from "./worker"; -import { registerGlobals, initFuzzing } from "@jazzer.js/core"; -import { loadConfig } from "./config"; -import { cleanupJestRunnerStack } from "./errorUtils"; import * as reports from "istanbul-reports"; class FuzzRunner extends CallbackTestRunner { @@ -97,3 +97,14 @@ class CancelRun extends Error { } export default FuzzRunner; + +// Global definition of the Jest fuzz test extension function. +// This is required to allow the Typescript compiler to recognize it. +declare global { + // eslint-disable-next-line @typescript-eslint/no-namespace + namespace jest { + interface It { + fuzz: FuzzTest; + } + } +} diff --git a/packages/jest-runner/jest-extension.ts b/packages/jest-runner/jest-extension.ts deleted file mode 100644 index 473c981a..00000000 --- a/packages/jest-runner/jest-extension.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { FuzzTest } from "./fuzz"; - -// Global definition of the Jest fuzz test extension function. -// This is required to allow the Typescript compiler to recognize it. -declare global { - // eslint-disable-next-line @typescript-eslint/no-namespace - namespace jest { - interface It { - fuzz: FuzzTest; - } - } -} diff --git a/packages/jest-runner/worker.ts b/packages/jest-runner/worker.ts index 0c154564..0a25a155 100644 --- a/packages/jest-runner/worker.ts +++ b/packages/jest-runner/worker.ts @@ -27,7 +27,6 @@ import { inspect } from "util"; import { fuzz, FuzzerStartError, skip } from "./fuzz"; import { cleanupJestRunnerStack, removeTopFramesFromError } from "./errorUtils"; import { createScriptTransformer } from "@jest/transform"; -import "./jest-extension"; function isGeneratorFunction(obj?: unknown): boolean { return ( diff --git a/tests/code_coverage/sample_fuzz_test/expected_coverage/fuzz+lib+otherCodeCoverage-fuzz.json b/tests/code_coverage/sample_fuzz_test/expected_coverage/fuzz+lib+otherCodeCoverage-fuzz.json index 49d8c61a..4e6d7b9f 100644 --- a/tests/code_coverage/sample_fuzz_test/expected_coverage/fuzz+lib+otherCodeCoverage-fuzz.json +++ b/tests/code_coverage/sample_fuzz_test/expected_coverage/fuzz+lib+otherCodeCoverage-fuzz.json @@ -3,7 +3,7 @@ "statementMap": { "0": { "start": { "line": 17, "column": 0 }, - "end": { "line": 17, "column": 47 } + "end": { "line": 17, "column": 32 } }, "1": { "start": { "line": 18, "column": 0 }, diff --git a/tests/code_coverage/sample_fuzz_test/otherCodeCoverage.fuzz.ts b/tests/code_coverage/sample_fuzz_test/otherCodeCoverage.fuzz.ts index 6e5a26d7..b66031d3 100644 --- a/tests/code_coverage/sample_fuzz_test/otherCodeCoverage.fuzz.ts +++ b/tests/code_coverage/sample_fuzz_test/otherCodeCoverage.fuzz.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import "@jazzer.js/jest-runner/jest-extension"; +import "@jazzer.js/jest-runner"; import { fuzz } from "./fuzz.js"; describe("My describe", () => {