diff --git a/.eslintrc.cjs b/.eslintrc.cjs index 5ae9cc6c8de5..360f3d345c76 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -333,7 +333,7 @@ module.exports = { parserOptions: { sourceType: 'module', }, - plugins: ['import'], + plugins: ['import', 'jsdoc'], rules: { 'accessor-pairs': ['warn', {setWithoutGet: true}], 'block-scoped-var': 'off', @@ -390,6 +390,7 @@ module.exports = { }, ], 'init-declarations': 'off', + 'jsdoc/check-alignment': 'error', 'lines-around-comment': 'off', 'max-depth': 'off', 'max-nested-callbacks': 'off', diff --git a/CHANGELOG.md b/CHANGELOG.md index e173570a95e6..f4577cc33eb6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,17 +10,24 @@ - `[jest-runner]` Do not instrument v8 coverage data if coverage should not be collected [#13282](https://github.com/facebook/jest/pull/13282) +## 29.1.2 + +### Fixes + +- `[expect, @jest/expect]` Revert buggy inference of argument types for `*CalledWith` and `*ReturnedWith` matchers introduced in 29.1.0 ([#13339](https://github.com/facebook/jest/pull/13339)) +- `[jest-worker]` Add missing dependency on `jest-util` ([#13341](https://github.com/facebook/jest/pull/13341)) + ## 29.1.1 ### Fixes -- `[jest-mock]` Revert ([#13145](https://github.com/facebook/jest/pull/13145)) +- `[jest-mock]` Revert [#13145](https://github.com/facebook/jest/pull/13145) which broke mocking of transpiled ES modules ## 29.1.0 ### Features -- `[expect, @jest/expect]` support type inference for function parameters in `CalledWith` assertions ([#13268](https://github.com/facebook/jest/pull/13268)) +- `[expect, @jest/expect]` Support type inference for function parameters in `CalledWith` assertions ([#13268](https://github.com/facebook/jest/pull/13268)) - `[expect, @jest/expect]` Infer type of `*ReturnedWith` matchers argument ([#13278](https://github.com/facebook/jest/pull/13278)) - `[@jest/environment, jest-runtime]` Allow `jest.requireActual` and `jest.requireMock` to take a type argument ([#13253](https://github.com/facebook/jest/pull/13253)) - `[@jest/environment]` Allow `jest.mock` and `jest.doMock` to take a type argument ([#13254](https://github.com/facebook/jest/pull/13254)) diff --git a/lerna.json b/lerna.json index 807a059309a4..aa41905afd0a 100644 --- a/lerna.json +++ b/lerna.json @@ -8,5 +8,5 @@ "syncWorkspaceLock": true } }, - "version": "29.1.1" + "version": "29.1.2" } diff --git a/package.json b/package.json index 9526e6724afc..4f0964d13fbd 100644 --- a/package.json +++ b/package.json @@ -38,6 +38,7 @@ "eslint-plugin-eslint-comments": "^3.1.2", "eslint-plugin-import": "^2.6.0", "eslint-plugin-jest": "^26.1.0", + "eslint-plugin-jsdoc": "^39.3.6", "eslint-plugin-local": "^1.0.0", "eslint-plugin-markdown": "^3.0.0", "eslint-plugin-prettier": "^4.0.0", diff --git a/packages/babel-jest/package.json b/packages/babel-jest/package.json index 6ed296d3f61e..408c8048c489 100644 --- a/packages/babel-jest/package.json +++ b/packages/babel-jest/package.json @@ -1,7 +1,7 @@ { "name": "babel-jest", "description": "Jest plugin to use babel for transformation.", - "version": "29.1.0", + "version": "29.1.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/expect-utils/package.json b/packages/expect-utils/package.json index 1d7c855c3e44..db9792da38e9 100644 --- a/packages/expect-utils/package.json +++ b/packages/expect-utils/package.json @@ -1,6 +1,6 @@ { "name": "@jest/expect-utils", - "version": "29.1.0", + "version": "29.1.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/expect/__typetests__/expect.test.ts b/packages/expect/__typetests__/expect.test.ts index 6c5119eff56c..9bc1ccae24cb 100644 --- a/packages/expect/__typetests__/expect.test.ts +++ b/packages/expect/__typetests__/expect.test.ts @@ -16,8 +16,7 @@ import { } from 'expect'; import type * as jestMatcherUtils from 'jest-matcher-utils'; -type M = Matchers; -type N = Matchers; +type M = Matchers; expectError(() => { type E = Matchers; diff --git a/packages/expect/package.json b/packages/expect/package.json index 3c3bff96be8f..03f040c6a777 100644 --- a/packages/expect/package.json +++ b/packages/expect/package.json @@ -1,6 +1,6 @@ { "name": "expect", - "version": "29.1.0", + "version": "29.1.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/expect/src/types.ts b/packages/expect/src/types.ts index 649b235a7acc..24c063f4022d 100644 --- a/packages/expect/src/types.ts +++ b/packages/expect/src/types.ts @@ -94,9 +94,9 @@ export interface BaseExpect { } export type Expect = { - (actual: T): Matchers & - Inverse> & - PromiseMatchers; + (actual: T): Matchers & + Inverse> & + PromiseMatchers; } & BaseExpect & AsymmetricMatchers & Inverse>; @@ -118,38 +118,36 @@ export interface AsymmetricMatchers { stringMatching(sample: string | RegExp): AsymmetricMatcher; } -type PromiseMatchers = { +type PromiseMatchers = { /** * Unwraps the reason of a rejected promise so any other matcher can be chained. * If the promise is fulfilled the assertion fails. */ - rejects: Matchers> & Inverse, T>>; + rejects: Matchers> & Inverse>>; /** * Unwraps the value of a fulfilled promise so any other matcher can be chained. * If the promise is rejected the assertion fails. */ - resolves: Matchers> & Inverse, T>>; + resolves: Matchers> & Inverse>>; }; -type EnsureFunctionLike = T extends (...args: any) => any ? T : never; - -export interface Matchers, T = unknown> { +export interface Matchers> { /** * Ensures the last call to a mock function was provided specific args. */ - lastCalledWith(...expected: Parameters>): R; + lastCalledWith(...expected: Array): R; /** * Ensure that the last call to a mock function has returned a specified value. */ - lastReturnedWith(expected: ReturnType>): R; + lastReturnedWith(expected: unknown): R; /** * Ensure that a mock function is called with specific arguments on an Nth call. */ - nthCalledWith(nth: number, ...expected: Parameters>): R; + nthCalledWith(nth: number, ...expected: Array): R; /** * Ensure that the nth call to a mock function has returned a specified value. */ - nthReturnedWith(nth: number, expected: ReturnType>): R; + nthReturnedWith(nth: number, expected: unknown): R; /** * Checks that a value is what you expect. It calls `Object.is` to compare values. * Don't use `toBe` with floating-point numbers. @@ -166,7 +164,7 @@ export interface Matchers, T = unknown> { /** * Ensure that a mock function is called with specific arguments. */ - toBeCalledWith(...expected: Parameters>): R; + toBeCalledWith(...expected: Array): R; /** * Using exact equality with floating point numbers is a bad idea. * Rounding means that intuitive things fail. @@ -249,25 +247,22 @@ export interface Matchers, T = unknown> { /** * Ensure that a mock function is called with specific arguments. */ - toHaveBeenCalledWith(...expected: Parameters>): R; + toHaveBeenCalledWith(...expected: Array): R; /** * Ensure that a mock function is called with specific arguments on an Nth call. */ - toHaveBeenNthCalledWith( - nth: number, - ...expected: Parameters> - ): R; + toHaveBeenNthCalledWith(nth: number, ...expected: Array): R; /** * If you have a mock function, you can use `.toHaveBeenLastCalledWith` * to test what arguments it was last called with. */ - toHaveBeenLastCalledWith(...expected: Parameters>): R; + toHaveBeenLastCalledWith(...expected: Array): R; /** * Use to test the specific value that a mock function last returned. * If the last call to the mock function threw an error, then this matcher will fail * no matter what value you provided as the expected return value. */ - toHaveLastReturnedWith(expected: ReturnType>): R; + toHaveLastReturnedWith(expected: unknown): R; /** * Used to check that an object has a `.length` property * and it is set to a certain numeric value. @@ -278,10 +273,7 @@ export interface Matchers, T = unknown> { * If the nth call to the mock function threw an error, then this matcher will fail * no matter what value you provided as the expected return value. */ - toHaveNthReturnedWith( - nth: number, - expected: ReturnType>, - ): R; + toHaveNthReturnedWith(nth: number, expected: unknown): R; /** * Use to check if property at provided reference keyPath exists for an object. * For checking deeply nested properties in an object you may use dot notation or an array containing @@ -311,7 +303,7 @@ export interface Matchers, T = unknown> { /** * Use to ensure that a mock function returned a specific value. */ - toHaveReturnedWith(expected: ReturnType>): R; + toHaveReturnedWith(expected: unknown): R; /** * Check that a string matches a regular expression. */ @@ -333,7 +325,7 @@ export interface Matchers, T = unknown> { /** * Ensure that a mock function has returned a specified value at least once. */ - toReturnWith(expected: ReturnType>): R; + toReturnWith(expected: unknown): R; /** * Use to test that objects have the same types as well as structure. */ diff --git a/packages/jest-circus/package.json b/packages/jest-circus/package.json index 586b96bccb81..b7accb788984 100644 --- a/packages/jest-circus/package.json +++ b/packages/jest-circus/package.json @@ -1,6 +1,6 @@ { "name": "jest-circus", - "version": "29.1.1", + "version": "29.1.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/jest-cli/package.json b/packages/jest-cli/package.json index 0fb5098753d2..b2eedacb5a84 100644 --- a/packages/jest-cli/package.json +++ b/packages/jest-cli/package.json @@ -1,7 +1,7 @@ { "name": "jest-cli", "description": "Delightful JavaScript Testing.", - "version": "29.1.1", + "version": "29.1.2", "main": "./build/index.js", "types": "./build/index.d.ts", "exports": { diff --git a/packages/jest-config/package.json b/packages/jest-config/package.json index 31f7781e7ed1..c0d827a24850 100644 --- a/packages/jest-config/package.json +++ b/packages/jest-config/package.json @@ -1,6 +1,6 @@ { "name": "jest-config", - "version": "29.1.1", + "version": "29.1.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/jest-console/package.json b/packages/jest-console/package.json index ff3019641081..086f13e61b32 100644 --- a/packages/jest-console/package.json +++ b/packages/jest-console/package.json @@ -1,6 +1,6 @@ { "name": "@jest/console", - "version": "29.1.0", + "version": "29.1.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/jest-core/package.json b/packages/jest-core/package.json index 980eb4c02950..e5b348dff05a 100644 --- a/packages/jest-core/package.json +++ b/packages/jest-core/package.json @@ -1,7 +1,7 @@ { "name": "@jest/core", "description": "Delightful JavaScript Testing.", - "version": "29.1.1", + "version": "29.1.2", "main": "./build/index.js", "types": "./build/index.d.ts", "exports": { diff --git a/packages/jest-create-cache-key-function/package.json b/packages/jest-create-cache-key-function/package.json index 5d823f86bf11..afc6afd25740 100644 --- a/packages/jest-create-cache-key-function/package.json +++ b/packages/jest-create-cache-key-function/package.json @@ -1,6 +1,6 @@ { "name": "@jest/create-cache-key-function", - "version": "29.1.0", + "version": "29.1.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/jest-diff/package.json b/packages/jest-diff/package.json index 6aa9c2ba5383..9c4ff18c5aac 100644 --- a/packages/jest-diff/package.json +++ b/packages/jest-diff/package.json @@ -1,6 +1,6 @@ { "name": "jest-diff", - "version": "29.1.0", + "version": "29.1.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/jest-each/package.json b/packages/jest-each/package.json index 56dc2c994e14..a268af001c7a 100644 --- a/packages/jest-each/package.json +++ b/packages/jest-each/package.json @@ -1,6 +1,6 @@ { "name": "jest-each", - "version": "29.1.0", + "version": "29.1.2", "description": "Parameterised tests for Jest", "main": "./build/index.js", "types": "./build/index.d.ts", diff --git a/packages/jest-environment-jsdom/package.json b/packages/jest-environment-jsdom/package.json index 757e3cba4218..37367b50d0a4 100644 --- a/packages/jest-environment-jsdom/package.json +++ b/packages/jest-environment-jsdom/package.json @@ -1,6 +1,6 @@ { "name": "jest-environment-jsdom", - "version": "29.1.1", + "version": "29.1.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/jest-environment-node/package.json b/packages/jest-environment-node/package.json index a4fb9d3dbb48..2bb7b8e9862b 100644 --- a/packages/jest-environment-node/package.json +++ b/packages/jest-environment-node/package.json @@ -1,6 +1,6 @@ { "name": "jest-environment-node", - "version": "29.1.1", + "version": "29.1.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/jest-environment/package.json b/packages/jest-environment/package.json index b950c6512b09..acd7118b773b 100644 --- a/packages/jest-environment/package.json +++ b/packages/jest-environment/package.json @@ -1,6 +1,6 @@ { "name": "@jest/environment", - "version": "29.1.1", + "version": "29.1.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/jest-environment/src/index.ts b/packages/jest-environment/src/index.ts index 0e443ac8677f..793473b1d51c 100644 --- a/packages/jest-environment/src/index.ts +++ b/packages/jest-environment/src/index.ts @@ -184,27 +184,27 @@ export interface Jest { options?: {virtual?: boolean}, ): Jest; /** - * Returns the actual module instead of a mock, bypassing all checks on - * whether the module should receive a mock implementation or not. - * - * @example - ```js - jest.mock('../myModule', () => { - // Require the original module to not be mocked... - const originalModule = jest.requireActual('../myModule'); - - return { - __esModule: true, // Use it when dealing with esModules - ...originalModule, - getRandom: jest.fn().mockReturnValue(10), - }; - }); - - const getRandom = require('../myModule').getRandom; - - getRandom(); // Always returns 10 - ``` - */ + * Returns the actual module instead of a mock, bypassing all checks on + * whether the module should receive a mock implementation or not. + * + * @example + * ```js + * jest.mock('../myModule', () => { + * // Require the original module to not be mocked... + * const originalModule = jest.requireActual('../myModule'); + * + * return { + * __esModule: true, // Use it when dealing with esModules + * ...originalModule, + * getRandom: jest.fn().mockReturnValue(10), + * }; + * }); + * + * const getRandom = require('../myModule').getRandom; + * + * getRandom(); // Always returns 10 + * ``` + */ requireActual(moduleName: string): T; /** * Wraps types of the `source` object and its deep members with type definitions diff --git a/packages/jest-expect/package.json b/packages/jest-expect/package.json index b9f5c1ba96d1..2e36fb75fa3d 100644 --- a/packages/jest-expect/package.json +++ b/packages/jest-expect/package.json @@ -1,6 +1,6 @@ { "name": "@jest/expect", - "version": "29.1.0", + "version": "29.1.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/jest-expect/src/types.ts b/packages/jest-expect/src/types.ts index d1ba64a7f66f..10739da8481e 100644 --- a/packages/jest-expect/src/types.ts +++ b/packages/jest-expect/src/types.ts @@ -29,7 +29,7 @@ type Inverse = { not: Matchers; }; -type JestMatchers, T> = Matchers & +type JestMatchers, T> = Matchers & SnapshotMatchers; type PromiseMatchers = { diff --git a/packages/jest-fake-timers/package.json b/packages/jest-fake-timers/package.json index eb43e5316f96..2c4688330faa 100644 --- a/packages/jest-fake-timers/package.json +++ b/packages/jest-fake-timers/package.json @@ -1,6 +1,6 @@ { "name": "@jest/fake-timers", - "version": "29.1.1", + "version": "29.1.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/jest-globals/package.json b/packages/jest-globals/package.json index 36ce4fde4aee..3ef5c3f6bbbe 100644 --- a/packages/jest-globals/package.json +++ b/packages/jest-globals/package.json @@ -1,6 +1,6 @@ { "name": "@jest/globals", - "version": "29.1.1", + "version": "29.1.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/jest-haste-map/package.json b/packages/jest-haste-map/package.json index 09851630f379..c7040cb790b2 100644 --- a/packages/jest-haste-map/package.json +++ b/packages/jest-haste-map/package.json @@ -1,6 +1,6 @@ { "name": "jest-haste-map", - "version": "29.1.0", + "version": "29.1.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/jest-jasmine2/package.json b/packages/jest-jasmine2/package.json index 12ac9a489900..31256e60b9cd 100644 --- a/packages/jest-jasmine2/package.json +++ b/packages/jest-jasmine2/package.json @@ -1,6 +1,6 @@ { "name": "jest-jasmine2", - "version": "29.1.1", + "version": "29.1.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/jest-leak-detector/package.json b/packages/jest-leak-detector/package.json index 0084ba50bca7..ae3b19b5da07 100644 --- a/packages/jest-leak-detector/package.json +++ b/packages/jest-leak-detector/package.json @@ -1,6 +1,6 @@ { "name": "jest-leak-detector", - "version": "29.1.0", + "version": "29.1.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/jest-matcher-utils/package.json b/packages/jest-matcher-utils/package.json index b6c4e64e698d..531efb509fa6 100644 --- a/packages/jest-matcher-utils/package.json +++ b/packages/jest-matcher-utils/package.json @@ -1,7 +1,7 @@ { "name": "jest-matcher-utils", "description": "A set of utility functions for expect and related packages", - "version": "29.1.0", + "version": "29.1.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/jest-message-util/package.json b/packages/jest-message-util/package.json index 0dc9ed4327e7..36bb329cc5ba 100644 --- a/packages/jest-message-util/package.json +++ b/packages/jest-message-util/package.json @@ -1,6 +1,6 @@ { "name": "jest-message-util", - "version": "29.1.0", + "version": "29.1.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/jest-mock/package.json b/packages/jest-mock/package.json index 9f3f87ce9a9c..4cedbb65fd5e 100644 --- a/packages/jest-mock/package.json +++ b/packages/jest-mock/package.json @@ -1,6 +1,6 @@ { "name": "jest-mock", - "version": "29.1.1", + "version": "29.1.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/jest-phabricator/package.json b/packages/jest-phabricator/package.json index 91433147bcd6..57dd17b6905a 100644 --- a/packages/jest-phabricator/package.json +++ b/packages/jest-phabricator/package.json @@ -1,6 +1,6 @@ { "name": "jest-phabricator", - "version": "29.1.0", + "version": "29.1.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/jest-repl/package.json b/packages/jest-repl/package.json index 3435bd6b310f..c8ba04d31f9f 100644 --- a/packages/jest-repl/package.json +++ b/packages/jest-repl/package.json @@ -1,6 +1,6 @@ { "name": "jest-repl", - "version": "29.1.1", + "version": "29.1.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/jest-reporters/package.json b/packages/jest-reporters/package.json index 75f5a40b63bb..f821cf9d347a 100644 --- a/packages/jest-reporters/package.json +++ b/packages/jest-reporters/package.json @@ -1,7 +1,7 @@ { "name": "@jest/reporters", "description": "Jest's reporters", - "version": "29.1.0", + "version": "29.1.2", "main": "./build/index.js", "types": "./build/index.d.ts", "exports": { diff --git a/packages/jest-resolve-dependencies/package.json b/packages/jest-resolve-dependencies/package.json index 3799a9dc3137..d61df97522af 100644 --- a/packages/jest-resolve-dependencies/package.json +++ b/packages/jest-resolve-dependencies/package.json @@ -1,6 +1,6 @@ { "name": "jest-resolve-dependencies", - "version": "29.1.1", + "version": "29.1.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/jest-resolve/package.json b/packages/jest-resolve/package.json index 2969463f07d1..ef54cc7fd4d5 100644 --- a/packages/jest-resolve/package.json +++ b/packages/jest-resolve/package.json @@ -1,6 +1,6 @@ { "name": "jest-resolve", - "version": "29.1.0", + "version": "29.1.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/jest-runner/package.json b/packages/jest-runner/package.json index 69e379de14c1..7124381e6cfc 100644 --- a/packages/jest-runner/package.json +++ b/packages/jest-runner/package.json @@ -1,6 +1,6 @@ { "name": "jest-runner", - "version": "29.1.1", + "version": "29.1.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/jest-runtime/package.json b/packages/jest-runtime/package.json index 6bfbb7f9780c..a2cc4cff6f9d 100644 --- a/packages/jest-runtime/package.json +++ b/packages/jest-runtime/package.json @@ -1,6 +1,6 @@ { "name": "jest-runtime", - "version": "29.1.1", + "version": "29.1.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/jest-snapshot/package.json b/packages/jest-snapshot/package.json index 9d53e41ed9cf..4a03014464b4 100644 --- a/packages/jest-snapshot/package.json +++ b/packages/jest-snapshot/package.json @@ -1,6 +1,6 @@ { "name": "jest-snapshot", - "version": "29.1.0", + "version": "29.1.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/jest-test-result/package.json b/packages/jest-test-result/package.json index b2a1648c87fb..ef08fbcac971 100644 --- a/packages/jest-test-result/package.json +++ b/packages/jest-test-result/package.json @@ -1,6 +1,6 @@ { "name": "@jest/test-result", - "version": "29.1.0", + "version": "29.1.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/jest-test-sequencer/package.json b/packages/jest-test-sequencer/package.json index 58c095571aea..e183e1f2ce68 100644 --- a/packages/jest-test-sequencer/package.json +++ b/packages/jest-test-sequencer/package.json @@ -1,6 +1,6 @@ { "name": "@jest/test-sequencer", - "version": "29.1.0", + "version": "29.1.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/jest-transform/package.json b/packages/jest-transform/package.json index ed60c1ebf8a2..f96eb7511925 100644 --- a/packages/jest-transform/package.json +++ b/packages/jest-transform/package.json @@ -1,6 +1,6 @@ { "name": "@jest/transform", - "version": "29.1.0", + "version": "29.1.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/jest-types/__typetests__/expect.test.ts b/packages/jest-types/__typetests__/expect.test.ts index d7cdf40d56b1..37db168c7aab 100644 --- a/packages/jest-types/__typetests__/expect.test.ts +++ b/packages/jest-types/__typetests__/expect.test.ts @@ -214,55 +214,65 @@ expectError(expect(jest.fn()).toHaveBeenCalledTimes()); expectType(expect(jest.fn()).toBeCalledWith()); expectType(expect(jest.fn()).toBeCalledWith('value')); expectType(expect(jest.fn()).toBeCalledWith('value', 123)); +expectType( + expect(jest.fn<(a: string, b: number) => void>()).toBeCalledWith( + expect.stringContaining('value'), + 123, + ), +); + expectType(expect(jest.fn()).toHaveBeenCalledWith()); expectType(expect(jest.fn()).toHaveBeenCalledWith(123)); expectType(expect(jest.fn()).toHaveBeenCalledWith(123, 'value')); - -/** - * type inference for "CalledWith" matchers parameters - */ -expectError(expect(jest.fn<(a: string) => void>()).toHaveBeenCalledWith(123)); -expectError( - expect(jest.fn<(a: string) => void>()).toHaveBeenNthCalledWith(1, 123), -); -expectError( - expect(jest.fn<(a: string) => void>()).toHaveBeenLastCalledWith(123), -); -expectType( - expect( - jest.fn<(a: string, b: number, c?: boolean) => void>(), - ).toHaveBeenCalledWith('value', 123), -); expectType( - expect( - jest.fn<(a: string, b: number, c?: boolean) => void>(), - ).toHaveBeenCalledWith('value', 123, true), -); -expectError( - expect( - jest.fn<(a: string, b: number, c?: boolean) => void>(), - ).toHaveBeenCalledWith(123, 'value'), -); -expectError( - expect( - jest.fn<(a: string, b: number, c?: boolean) => void>(), - ).toHaveBeenCalledWith('value', 123, 'not a boolean'), + expect(jest.fn<(a: string, b: number) => void>()).toHaveBeenCalledWith( + expect.stringContaining('value'), + 123, + ), ); expectType(expect(jest.fn()).lastCalledWith()); expectType(expect(jest.fn()).lastCalledWith('value')); expectType(expect(jest.fn()).lastCalledWith('value', 123)); +expectType( + expect(jest.fn<(a: string, b: number) => void>()).lastCalledWith( + expect.stringContaining('value'), + 123, + ), +); + expectType(expect(jest.fn()).toHaveBeenLastCalledWith()); expectType(expect(jest.fn()).toHaveBeenLastCalledWith(123)); expectType(expect(jest.fn()).toHaveBeenLastCalledWith(123, 'value')); +expectType( + expect(jest.fn<(a: string, b: number) => void>()).lastCalledWith( + expect.stringContaining('value'), + 123, + ), +); expectType(expect(jest.fn()).nthCalledWith(2)); expectType(expect(jest.fn()).nthCalledWith(1, 'value')); expectType(expect(jest.fn()).nthCalledWith(1, 'value', 123)); +expectType( + expect(jest.fn<(a: string, b: number) => void>()).nthCalledWith( + 1, + expect.stringContaining('value'), + 123, + ), +); expectError(expect(jest.fn()).nthCalledWith()); + expectType(expect(jest.fn()).toHaveBeenNthCalledWith(2)); expectType(expect(jest.fn()).toHaveBeenNthCalledWith(1, 'value')); expectType(expect(jest.fn()).toHaveBeenNthCalledWith(1, 'value', 123)); +expectType( + expect(jest.fn<(a: string, b: number) => void>()).toHaveBeenNthCalledWith( + 1, + expect.stringContaining('value'), + 123, + ), +); expectError(expect(jest.fn()).toHaveBeenNthCalledWith()); expectType(expect(jest.fn()).toReturn()); @@ -278,43 +288,55 @@ expectError(expect(jest.fn()).toHaveReturnedTimes(true)); expectError(expect(jest.fn()).toHaveReturnedTimes()); expectType(expect(jest.fn()).toReturnWith('value')); -expectType(expect(jest.fn<() => string>()).toReturnWith('value')); -expectError(expect(jest.fn<() => number>()).toReturnWith('value')); -expectError(expect(123).toReturnWith('value')); +expectType( + expect(jest.fn<() => string>()).toReturnWith( + expect.stringContaining('value'), + ), +); expectError(expect(jest.fn()).toReturnWith()); expectType(expect(jest.fn()).toHaveReturnedWith(123)); -expectType(expect(jest.fn<() => number>()).toHaveReturnedWith(123)); -expectError(expect(jest.fn<() => string>()).toHaveReturnedWith(123)); -expectError(expect(123).toHaveReturnedWith(123)); +expectType( + expect(jest.fn<() => string>()).toHaveReturnedWith( + expect.stringContaining('value'), + ), +); expectError(expect(jest.fn()).toHaveReturnedWith()); expectType(expect(jest.fn()).lastReturnedWith('value')); -expectType(expect(jest.fn<() => string>()).lastReturnedWith('value')); -expectError(expect(jest.fn<() => number>()).lastReturnedWith('value')); -expectError(expect(123).lastReturnedWith('value')); +expectType( + expect(jest.fn<() => string>()).lastReturnedWith( + expect.stringContaining('value'), + ), +); expectError(expect(jest.fn()).lastReturnedWith()); expectType(expect(jest.fn()).toHaveLastReturnedWith(123)); -expectType(expect(jest.fn<() => number>()).toHaveLastReturnedWith(123)); -expectError(expect(jest.fn<() => string>()).toHaveLastReturnedWith(123)); -expectError(expect(123).toHaveLastReturnedWith(123)); +expectType( + expect(jest.fn<() => string>()).toHaveLastReturnedWith( + expect.stringContaining('value'), + ), +); expectError(expect(jest.fn()).toHaveLastReturnedWith()); expectType(expect(jest.fn()).nthReturnedWith(1, 'value')); -expectType(expect(jest.fn<() => string>()).nthReturnedWith(2, 'value')); -expectError(expect(jest.fn<() => number>()).nthReturnedWith(3, 'value')); -expectError(expect(123).nthReturnedWith(4, 'value')); -expectError(expect(123).nthReturnedWith(5)); +expectType( + expect(jest.fn<() => string>()).nthReturnedWith( + 2, + expect.stringContaining('value'), + ), +); +expectError(expect(123).nthReturnedWith(3)); expectError(expect(jest.fn()).nthReturnedWith()); -expectType(expect(jest.fn()).toHaveNthReturnedWith(1, 'value')); +expectType(expect(jest.fn()).nthReturnedWith(1, 'value')); expectType( - expect(jest.fn<() => string>()).toHaveNthReturnedWith(2, 'value'), + expect(jest.fn<() => string>()).nthReturnedWith( + 2, + expect.stringContaining('value'), + ), ); -expectError(expect(jest.fn<() => number>()).toHaveNthReturnedWith(3, 'value')); -expectError(expect(123).toHaveNthReturnedWith(4, 'value')); -expectError(expect(123).toHaveNthReturnedWith(5)); +expectError(expect(123).toHaveNthReturnedWith(3)); expectError(expect(jest.fn()).toHaveNthReturnedWith()); // snapshot matchers diff --git a/packages/jest-types/package.json b/packages/jest-types/package.json index 081774477d61..f4b52438583f 100644 --- a/packages/jest-types/package.json +++ b/packages/jest-types/package.json @@ -1,6 +1,6 @@ { "name": "@jest/types", - "version": "29.1.0", + "version": "29.1.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/jest-types/src/Config.ts b/packages/jest-types/src/Config.ts index cc23cbbdd21d..e331247ab634 100644 --- a/packages/jest-types/src/Config.ts +++ b/packages/jest-types/src/Config.ts @@ -35,7 +35,7 @@ export type GlobalFakeTimersConfig = { * * @defaultValue * The default is `false`. - * */ + */ enableGlobally?: boolean; }; @@ -55,7 +55,7 @@ export type FakeTimersConfig = { * * @defaultValue * The default is `[]`, meaning all APIs are faked. - * */ + */ doNotFake?: Array; /** * Sets current system time to be used by fake timers. diff --git a/packages/jest-util/package.json b/packages/jest-util/package.json index 561b5831f9a9..469135c1793c 100644 --- a/packages/jest-util/package.json +++ b/packages/jest-util/package.json @@ -1,6 +1,6 @@ { "name": "jest-util", - "version": "29.1.0", + "version": "29.1.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/jest-validate/package.json b/packages/jest-validate/package.json index 72122941d7b0..7c90a44a7610 100644 --- a/packages/jest-validate/package.json +++ b/packages/jest-validate/package.json @@ -1,6 +1,6 @@ { "name": "jest-validate", - "version": "29.1.0", + "version": "29.1.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/jest-watcher/package.json b/packages/jest-watcher/package.json index 690dd412ba62..f9c9886ef277 100644 --- a/packages/jest-watcher/package.json +++ b/packages/jest-watcher/package.json @@ -1,7 +1,7 @@ { "name": "jest-watcher", "description": "Delightful JavaScript Testing.", - "version": "29.1.0", + "version": "29.1.2", "main": "./build/index.js", "types": "./build/index.d.ts", "exports": { diff --git a/packages/jest-worker/package.json b/packages/jest-worker/package.json index fbebdfa90d02..d4062602aa24 100644 --- a/packages/jest-worker/package.json +++ b/packages/jest-worker/package.json @@ -1,6 +1,6 @@ { "name": "jest-worker", - "version": "29.1.0", + "version": "29.1.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -18,6 +18,7 @@ }, "dependencies": { "@types/node": "*", + "jest-util": "workspace:^", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" }, diff --git a/packages/jest-worker/tsconfig.json b/packages/jest-worker/tsconfig.json index 8f5708f84441..079c1dfca81e 100644 --- a/packages/jest-worker/tsconfig.json +++ b/packages/jest-worker/tsconfig.json @@ -6,5 +6,5 @@ }, "include": ["./src/**/*"], "exclude": ["./**/__tests__/**/*"], - "references": [{"path": "../jest-leak-detector"}] + "references": [{"path": "../jest-leak-detector"}, {"path": "../jest-util"}] } diff --git a/packages/jest/package.json b/packages/jest/package.json index 66fb0327ea79..12fa75fe9979 100644 --- a/packages/jest/package.json +++ b/packages/jest/package.json @@ -1,7 +1,7 @@ { "name": "jest", "description": "Delightful JavaScript Testing.", - "version": "29.1.1", + "version": "29.1.2", "main": "./build/index.js", "types": "./build/index.d.ts", "exports": { diff --git a/packages/pretty-format/package.json b/packages/pretty-format/package.json index c67032d8d2d1..4a477bb6c50b 100644 --- a/packages/pretty-format/package.json +++ b/packages/pretty-format/package.json @@ -1,6 +1,6 @@ { "name": "pretty-format", - "version": "29.1.0", + "version": "29.1.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json index f4fc2190c547..e1be22a6fafa 100644 --- a/packages/test-utils/package.json +++ b/packages/test-utils/package.json @@ -1,6 +1,6 @@ { "name": "@jest/test-utils", - "version": "29.1.0", + "version": "29.1.2", "private": true, "main": "./build/index.js", "types": "./build/index.d.ts", diff --git a/yarn.lock b/yarn.lock index ecb380ee4efe..103734cfd897 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2485,6 +2485,17 @@ __metadata: languageName: node linkType: hard +"@es-joy/jsdoccomment@npm:~0.31.0": + version: 0.31.0 + resolution: "@es-joy/jsdoccomment@npm:0.31.0" + dependencies: + comment-parser: 1.3.1 + esquery: ^1.4.0 + jsdoc-type-pratt-parser: ~3.1.0 + checksum: 1691ff501559f45593e5f080d2c08dea4fadba5f48e526b9ff2943c050fbb40408f5e83968542e5b6bf47219c7573796d00bfe80dacfd1ba8187904cc475cefb + languageName: node + linkType: hard + "@eslint/eslintrc@npm:^1.3.0": version: 1.3.0 resolution: "@eslint/eslintrc@npm:1.3.0" @@ -2766,6 +2777,7 @@ __metadata: eslint-plugin-eslint-comments: ^3.1.2 eslint-plugin-import: ^2.6.0 eslint-plugin-jest: ^26.1.0 + eslint-plugin-jsdoc: ^39.3.6 eslint-plugin-local: ^1.0.0 eslint-plugin-markdown: ^3.0.0 eslint-plugin-prettier: ^4.0.0 @@ -7284,6 +7296,13 @@ __metadata: languageName: node linkType: hard +"comment-parser@npm:1.3.1": + version: 1.3.1 + resolution: "comment-parser@npm:1.3.1" + checksum: 421e6a113a3afd548500e7174ab46a2049dccf92e82bbaa3b209031b1bdf97552aabfa1ae2a120c0b62df17e1ba70e0d8b05d68504fee78e1ef974c59bcfe718 + languageName: node + linkType: hard + "common-tags@npm:^1.8.0": version: 1.8.2 resolution: "common-tags@npm:1.8.2" @@ -9099,6 +9118,23 @@ __metadata: languageName: node linkType: hard +"eslint-plugin-jsdoc@npm:^39.3.6": + version: 39.3.6 + resolution: "eslint-plugin-jsdoc@npm:39.3.6" + dependencies: + "@es-joy/jsdoccomment": ~0.31.0 + comment-parser: 1.3.1 + debug: ^4.3.4 + escape-string-regexp: ^4.0.0 + esquery: ^1.4.0 + semver: ^7.3.7 + spdx-expression-parse: ^3.0.1 + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + checksum: 0825a5eba6cdcb250e45cd5ad488bd234da346f324a11160ad4b8c9fb3c76d8e1457d462fa91c24f11bdff5ef0013375d65c366b648202254c4bcc79eed89060 + languageName: node + linkType: hard + "eslint-plugin-local@npm:^1.0.0": version: 1.0.0 resolution: "eslint-plugin-local@npm:1.0.0" @@ -13002,6 +13038,7 @@ __metadata: "@types/supports-color": ^8.1.0 get-stream: ^6.0.0 jest-leak-detector: "workspace:^" + jest-util: "workspace:^" merge-stream: ^2.0.0 supports-color: ^8.0.0 tsd-lite: ^0.6.0 @@ -13155,6 +13192,13 @@ __metadata: languageName: node linkType: hard +"jsdoc-type-pratt-parser@npm:~3.1.0": + version: 3.1.0 + resolution: "jsdoc-type-pratt-parser@npm:3.1.0" + checksum: 2f437b57621f1e481918165f6cf0e48256628a9e510d8b3f88a2ab667bf2128bf8b94c628b57c43e78f555ca61983e9c282814703840dc091d2623992214a061 + languageName: node + linkType: hard + "jsdom@npm:^20.0.0": version: 20.0.0 resolution: "jsdom@npm:20.0.0" @@ -19075,7 +19119,7 @@ __metadata: languageName: node linkType: hard -"spdx-expression-parse@npm:^3.0.0": +"spdx-expression-parse@npm:^3.0.0, spdx-expression-parse@npm:^3.0.1": version: 3.0.1 resolution: "spdx-expression-parse@npm:3.0.1" dependencies: