diff --git a/CHANGELOG.md b/CHANGELOG.md index 2f70180cb49f..38b1869dacc6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ ## main +### Fixes + +- `[jest-matcher-utils]` Make 'deepCyclicCopyObject' safer by setting descriptors to a null-prototype object ([#15689](https://github.com/jestjs/jest/pull/15689)) +- `[jest-util]` Make garbage collection protection property writable ([#15689](https://github.com/jestjs/jest/pull/15689)) + ## 30.0.1 ### Features diff --git a/lerna.json b/lerna.json index 1683fdd1c796..8ca96eacda37 100644 --- a/lerna.json +++ b/lerna.json @@ -8,5 +8,5 @@ "syncWorkspaceLock": true } }, - "version": "30.0.1" + "version": "30.0.2" } diff --git a/packages/babel-jest/package.json b/packages/babel-jest/package.json index 8d627f80759c..2ed3fc2390f4 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": "30.0.1", + "version": "30.0.2", "repository": { "type": "git", "url": "https://github.com/jestjs/jest.git", diff --git a/packages/create-jest/package.json b/packages/create-jest/package.json index 5703b7f334e8..b440ace0d363 100644 --- a/packages/create-jest/package.json +++ b/packages/create-jest/package.json @@ -1,7 +1,7 @@ { "name": "create-jest", "description": "Create a new Jest project", - "version": "30.0.1", + "version": "30.0.2", "repository": { "type": "git", "url": "https://github.com/jestjs/jest.git", diff --git a/packages/expect-utils/package.json b/packages/expect-utils/package.json index 82b3d99a5055..8b7ce9f13173 100644 --- a/packages/expect-utils/package.json +++ b/packages/expect-utils/package.json @@ -1,6 +1,6 @@ { "name": "@jest/expect-utils", - "version": "30.0.1", + "version": "30.0.2", "repository": { "type": "git", "url": "https://github.com/jestjs/jest.git", diff --git a/packages/expect/package.json b/packages/expect/package.json index d9ad92a26011..6f9eeb72bf19 100644 --- a/packages/expect/package.json +++ b/packages/expect/package.json @@ -1,6 +1,6 @@ { "name": "expect", - "version": "30.0.1", + "version": "30.0.2", "repository": { "type": "git", "url": "https://github.com/jestjs/jest.git", diff --git a/packages/jest-changed-files/package.json b/packages/jest-changed-files/package.json index 8c7f9ab15f59..e82324c086ce 100644 --- a/packages/jest-changed-files/package.json +++ b/packages/jest-changed-files/package.json @@ -1,6 +1,6 @@ { "name": "jest-changed-files", - "version": "30.0.1", + "version": "30.0.2", "repository": { "type": "git", "url": "https://github.com/jestjs/jest.git", diff --git a/packages/jest-circus/package.json b/packages/jest-circus/package.json index 90e56bc64fc7..592247ffd0e6 100644 --- a/packages/jest-circus/package.json +++ b/packages/jest-circus/package.json @@ -1,6 +1,6 @@ { "name": "jest-circus", - "version": "30.0.1", + "version": "30.0.2", "repository": { "type": "git", "url": "https://github.com/jestjs/jest.git", diff --git a/packages/jest-cli/package.json b/packages/jest-cli/package.json index 90e52d11afee..46ce6a97c36c 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": "30.0.1", + "version": "30.0.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 e1c0b29e22e1..565112e773b3 100644 --- a/packages/jest-config/package.json +++ b/packages/jest-config/package.json @@ -1,6 +1,6 @@ { "name": "jest-config", - "version": "30.0.1", + "version": "30.0.2", "repository": { "type": "git", "url": "https://github.com/jestjs/jest.git", diff --git a/packages/jest-console/package.json b/packages/jest-console/package.json index 104c67127bdd..e0df9a740608 100644 --- a/packages/jest-console/package.json +++ b/packages/jest-console/package.json @@ -1,6 +1,6 @@ { "name": "@jest/console", - "version": "30.0.1", + "version": "30.0.2", "repository": { "type": "git", "url": "https://github.com/jestjs/jest.git", diff --git a/packages/jest-core/package.json b/packages/jest-core/package.json index 8edc135be232..19e987fc1c2f 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": "30.0.1", + "version": "30.0.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 a29af75f8771..c51338b9f6be 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": "30.0.1", + "version": "30.0.2", "repository": { "type": "git", "url": "https://github.com/jestjs/jest.git", diff --git a/packages/jest-diff/package.json b/packages/jest-diff/package.json index 9e9613ef1ab1..93a473b8fd86 100644 --- a/packages/jest-diff/package.json +++ b/packages/jest-diff/package.json @@ -1,6 +1,6 @@ { "name": "jest-diff", - "version": "30.0.1", + "version": "30.0.2", "repository": { "type": "git", "url": "https://github.com/jestjs/jest.git", diff --git a/packages/jest-each/package.json b/packages/jest-each/package.json index 4718b2737b23..9ccc7b1280e6 100644 --- a/packages/jest-each/package.json +++ b/packages/jest-each/package.json @@ -1,6 +1,6 @@ { "name": "jest-each", - "version": "30.0.1", + "version": "30.0.2", "description": "Parameterised tests for Jest", "main": "./build/index.js", "types": "./build/index.d.ts", diff --git a/packages/jest-environment-jsdom-abstract/package.json b/packages/jest-environment-jsdom-abstract/package.json index 8920876c77b0..bc72be1675cf 100644 --- a/packages/jest-environment-jsdom-abstract/package.json +++ b/packages/jest-environment-jsdom-abstract/package.json @@ -1,6 +1,6 @@ { "name": "@jest/environment-jsdom-abstract", - "version": "30.0.1", + "version": "30.0.2", "repository": { "type": "git", "url": "https://github.com/jestjs/jest.git", diff --git a/packages/jest-environment-jsdom/package.json b/packages/jest-environment-jsdom/package.json index 42c8be697b80..318c4d6dfca8 100644 --- a/packages/jest-environment-jsdom/package.json +++ b/packages/jest-environment-jsdom/package.json @@ -1,6 +1,6 @@ { "name": "jest-environment-jsdom", - "version": "30.0.1", + "version": "30.0.2", "repository": { "type": "git", "url": "https://github.com/jestjs/jest.git", diff --git a/packages/jest-environment-node/package.json b/packages/jest-environment-node/package.json index 88b8d38f23c4..e8cac3a2b197 100644 --- a/packages/jest-environment-node/package.json +++ b/packages/jest-environment-node/package.json @@ -1,6 +1,6 @@ { "name": "jest-environment-node", - "version": "30.0.1", + "version": "30.0.2", "repository": { "type": "git", "url": "https://github.com/jestjs/jest.git", diff --git a/packages/jest-environment-node/src/__tests__/globals_cleanup_3.test.ts b/packages/jest-environment-node/src/__tests__/globals_cleanup_3.test.ts index 92855c8e9310..d8e98bbb848e 100644 --- a/packages/jest-environment-node/src/__tests__/globals_cleanup_3.test.ts +++ b/packages/jest-environment-node/src/__tests__/globals_cleanup_3.test.ts @@ -5,22 +5,11 @@ * LICENSE file in the root directory of this source tree. */ -function onlyIfGlobalsCleanup( - globalsCleanup: string, - testBody: () => void, -): void { - const describeFunc = - process.env.GLOBALS_CLEANUP === globalsCleanup ? describe : describe.skip; - describeFunc(`GLOBALS_CLEANUP=${globalsCleanup}`, testBody); -} - describe('Globals Cleanup 3', () => { - onlyIfGlobalsCleanup('off', () => { - test('assign Object prototype descriptors to a new empty object', () => { - const descriptors = Object.getOwnPropertyDescriptors( - Object.getPrototypeOf({}), - ); - Object.assign({}, descriptors); - }); + test('assign Object prototype descriptors to a new empty object', () => { + const descriptors = Object.getOwnPropertyDescriptors( + Object.getPrototypeOf({}), + ); + Object.assign({}, descriptors); }); }); diff --git a/packages/jest-environment/package.json b/packages/jest-environment/package.json index 8f3e9cfc9927..f41c592aaaf9 100644 --- a/packages/jest-environment/package.json +++ b/packages/jest-environment/package.json @@ -1,6 +1,6 @@ { "name": "@jest/environment", - "version": "30.0.1", + "version": "30.0.2", "repository": { "type": "git", "url": "https://github.com/jestjs/jest.git", diff --git a/packages/jest-expect/package.json b/packages/jest-expect/package.json index 7cb3cbf5e405..4ca149250f06 100644 --- a/packages/jest-expect/package.json +++ b/packages/jest-expect/package.json @@ -1,6 +1,6 @@ { "name": "@jest/expect", - "version": "30.0.1", + "version": "30.0.2", "repository": { "type": "git", "url": "https://github.com/jestjs/jest.git", diff --git a/packages/jest-fake-timers/package.json b/packages/jest-fake-timers/package.json index 828e2b6bddbd..fafc4b3f371c 100644 --- a/packages/jest-fake-timers/package.json +++ b/packages/jest-fake-timers/package.json @@ -1,6 +1,6 @@ { "name": "@jest/fake-timers", - "version": "30.0.1", + "version": "30.0.2", "repository": { "type": "git", "url": "https://github.com/jestjs/jest.git", diff --git a/packages/jest-globals/package.json b/packages/jest-globals/package.json index 6b16275de55f..3f5f324c0b9c 100644 --- a/packages/jest-globals/package.json +++ b/packages/jest-globals/package.json @@ -1,6 +1,6 @@ { "name": "@jest/globals", - "version": "30.0.1", + "version": "30.0.2", "repository": { "type": "git", "url": "https://github.com/jestjs/jest.git", diff --git a/packages/jest-haste-map/package.json b/packages/jest-haste-map/package.json index 88f98f9123b8..fa4fef9ae76b 100644 --- a/packages/jest-haste-map/package.json +++ b/packages/jest-haste-map/package.json @@ -1,6 +1,6 @@ { "name": "jest-haste-map", - "version": "30.0.1", + "version": "30.0.2", "repository": { "type": "git", "url": "https://github.com/jestjs/jest.git", diff --git a/packages/jest-jasmine2/package.json b/packages/jest-jasmine2/package.json index f1396bd6cafd..4ea1af3e92e6 100644 --- a/packages/jest-jasmine2/package.json +++ b/packages/jest-jasmine2/package.json @@ -1,6 +1,6 @@ { "name": "jest-jasmine2", - "version": "30.0.1", + "version": "30.0.2", "repository": { "type": "git", "url": "https://github.com/jestjs/jest.git", diff --git a/packages/jest-leak-detector/package.json b/packages/jest-leak-detector/package.json index f25ea4f18093..916d06fafafe 100644 --- a/packages/jest-leak-detector/package.json +++ b/packages/jest-leak-detector/package.json @@ -1,6 +1,6 @@ { "name": "jest-leak-detector", - "version": "30.0.1", + "version": "30.0.2", "repository": { "type": "git", "url": "https://github.com/jestjs/jest.git", diff --git a/packages/jest-matcher-utils/package.json b/packages/jest-matcher-utils/package.json index 5e56234e3e54..119353ddac5e 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": "30.0.1", + "version": "30.0.2", "repository": { "type": "git", "url": "https://github.com/jestjs/jest.git", diff --git a/packages/jest-matcher-utils/src/__tests__/deepCyclicCopyReplaceable.test.ts b/packages/jest-matcher-utils/src/__tests__/deepCyclicCopyReplaceable.test.ts index 1607ea39008f..b91184dd68ec 100644 --- a/packages/jest-matcher-utils/src/__tests__/deepCyclicCopyReplaceable.test.ts +++ b/packages/jest-matcher-utils/src/__tests__/deepCyclicCopyReplaceable.test.ts @@ -174,3 +174,13 @@ test('should only copy the properties mapped to be serializable', () => { foo: {configurable: true, enumerable: true, value: 'foo', writable: true}, }); }); + +test('json from Response', async () => { + const response = () => new Response(JSON.stringify({})); + + const text = JSON.parse(await response().text()); + deepCyclicCopyReplaceable(text); + + const json = await response().json(); + deepCyclicCopyReplaceable(json); +}); diff --git a/packages/jest-matcher-utils/src/deepCyclicCopyReplaceable.ts b/packages/jest-matcher-utils/src/deepCyclicCopyReplaceable.ts index 75467e01b85e..850bfd6845f7 100644 --- a/packages/jest-matcher-utils/src/deepCyclicCopyReplaceable.ts +++ b/packages/jest-matcher-utils/src/deepCyclicCopyReplaceable.ts @@ -72,7 +72,7 @@ function deepCyclicCopyObject(object: T, cycles: WeakMap): T { if (serializableProperties === undefined) { descriptors = Object.assign( - {}, + Object.create(null), Object.getOwnPropertyDescriptors(obj), descriptors, ); @@ -115,7 +115,7 @@ function deepCyclicCopyObject(object: T, cycles: WeakMap): T { }; return newDescriptors; }, - {}, + Object.create(null), ); //@ts-expect-error because typescript do not support symbol key in object //https://github.com/microsoft/TypeScript/issues/1863 diff --git a/packages/jest-message-util/package.json b/packages/jest-message-util/package.json index d2625fc67fbc..b50176a89dad 100644 --- a/packages/jest-message-util/package.json +++ b/packages/jest-message-util/package.json @@ -1,6 +1,6 @@ { "name": "jest-message-util", - "version": "30.0.1", + "version": "30.0.2", "repository": { "type": "git", "url": "https://github.com/jestjs/jest.git", diff --git a/packages/jest-mock/package.json b/packages/jest-mock/package.json index c444c7e9ebf4..7670b6523c95 100644 --- a/packages/jest-mock/package.json +++ b/packages/jest-mock/package.json @@ -1,6 +1,6 @@ { "name": "jest-mock", - "version": "30.0.1", + "version": "30.0.2", "repository": { "type": "git", "url": "https://github.com/jestjs/jest.git", diff --git a/packages/jest-phabricator/package.json b/packages/jest-phabricator/package.json index 9ff0e6b528eb..5a128056ab89 100644 --- a/packages/jest-phabricator/package.json +++ b/packages/jest-phabricator/package.json @@ -1,6 +1,6 @@ { "name": "jest-phabricator", - "version": "30.0.1", + "version": "30.0.2", "repository": { "type": "git", "url": "https://github.com/jestjs/jest.git", diff --git a/packages/jest-reporters/package.json b/packages/jest-reporters/package.json index c59cb7b9cda9..e594f86607d0 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": "30.0.1", + "version": "30.0.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 825585a27b19..020dd11a8c14 100644 --- a/packages/jest-resolve-dependencies/package.json +++ b/packages/jest-resolve-dependencies/package.json @@ -1,6 +1,6 @@ { "name": "jest-resolve-dependencies", - "version": "30.0.1", + "version": "30.0.2", "repository": { "type": "git", "url": "https://github.com/jestjs/jest.git", diff --git a/packages/jest-resolve/package.json b/packages/jest-resolve/package.json index 5c2323b09b3b..99a6ccbc36fe 100644 --- a/packages/jest-resolve/package.json +++ b/packages/jest-resolve/package.json @@ -1,6 +1,6 @@ { "name": "jest-resolve", - "version": "30.0.1", + "version": "30.0.2", "repository": { "type": "git", "url": "https://github.com/jestjs/jest.git", diff --git a/packages/jest-runner/package.json b/packages/jest-runner/package.json index 22d9f4a307cf..7e4a76b8b203 100644 --- a/packages/jest-runner/package.json +++ b/packages/jest-runner/package.json @@ -1,6 +1,6 @@ { "name": "jest-runner", - "version": "30.0.1", + "version": "30.0.2", "repository": { "type": "git", "url": "https://github.com/jestjs/jest.git", diff --git a/packages/jest-runtime/package.json b/packages/jest-runtime/package.json index 1dba4861545c..ef5012926ed6 100644 --- a/packages/jest-runtime/package.json +++ b/packages/jest-runtime/package.json @@ -1,6 +1,6 @@ { "name": "jest-runtime", - "version": "30.0.1", + "version": "30.0.2", "repository": { "type": "git", "url": "https://github.com/jestjs/jest.git", diff --git a/packages/jest-snapshot/package.json b/packages/jest-snapshot/package.json index b1f37957c570..3747c9ba95d3 100644 --- a/packages/jest-snapshot/package.json +++ b/packages/jest-snapshot/package.json @@ -1,6 +1,6 @@ { "name": "jest-snapshot", - "version": "30.0.1", + "version": "30.0.2", "repository": { "type": "git", "url": "https://github.com/jestjs/jest.git", diff --git a/packages/jest-test-result/package.json b/packages/jest-test-result/package.json index fe2d1b0e2932..6684b270daac 100644 --- a/packages/jest-test-result/package.json +++ b/packages/jest-test-result/package.json @@ -1,6 +1,6 @@ { "name": "@jest/test-result", - "version": "30.0.1", + "version": "30.0.2", "repository": { "type": "git", "url": "https://github.com/jestjs/jest.git", diff --git a/packages/jest-test-sequencer/package.json b/packages/jest-test-sequencer/package.json index 27e291156e5c..546073197919 100644 --- a/packages/jest-test-sequencer/package.json +++ b/packages/jest-test-sequencer/package.json @@ -1,6 +1,6 @@ { "name": "@jest/test-sequencer", - "version": "30.0.1", + "version": "30.0.2", "repository": { "type": "git", "url": "https://github.com/jestjs/jest.git", diff --git a/packages/jest-transform/package.json b/packages/jest-transform/package.json index a4dd781d63e2..aa389169bed0 100644 --- a/packages/jest-transform/package.json +++ b/packages/jest-transform/package.json @@ -1,6 +1,6 @@ { "name": "@jest/transform", - "version": "30.0.1", + "version": "30.0.2", "repository": { "type": "git", "url": "https://github.com/jestjs/jest.git", diff --git a/packages/jest-util/package.json b/packages/jest-util/package.json index ac7562349cc2..cf9737bcd3e1 100644 --- a/packages/jest-util/package.json +++ b/packages/jest-util/package.json @@ -1,6 +1,6 @@ { "name": "jest-util", - "version": "30.0.1", + "version": "30.0.2", "repository": { "type": "git", "url": "https://github.com/jestjs/jest.git", diff --git a/packages/jest-util/src/garbage-collection-utils.ts b/packages/jest-util/src/garbage-collection-utils.ts index 7199233efd4c..f90535faf3e7 100644 --- a/packages/jest-util/src/garbage-collection-utils.ts +++ b/packages/jest-util/src/garbage-collection-utils.ts @@ -107,6 +107,7 @@ export function protectProperties( configurable: true, enumerable: false, value: properties, + writable: true, }); for (const key of getProtectedKeys(value, properties)) { try { diff --git a/packages/jest-validate/package.json b/packages/jest-validate/package.json index 04369c317090..f629b0be046c 100644 --- a/packages/jest-validate/package.json +++ b/packages/jest-validate/package.json @@ -1,6 +1,6 @@ { "name": "jest-validate", - "version": "30.0.1", + "version": "30.0.2", "repository": { "type": "git", "url": "https://github.com/jestjs/jest.git", diff --git a/packages/jest-watcher/package.json b/packages/jest-watcher/package.json index 7e51bb3c6302..85fe0fdb3210 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": "30.0.1", + "version": "30.0.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 3029fb7b8082..2abe54da4461 100644 --- a/packages/jest-worker/package.json +++ b/packages/jest-worker/package.json @@ -1,6 +1,6 @@ { "name": "jest-worker", - "version": "30.0.1", + "version": "30.0.2", "repository": { "type": "git", "url": "https://github.com/jestjs/jest.git", diff --git a/packages/jest/package.json b/packages/jest/package.json index 7edeb50dd032..a26b7612f8e0 100644 --- a/packages/jest/package.json +++ b/packages/jest/package.json @@ -1,7 +1,7 @@ { "name": "jest", "description": "Delightful JavaScript Testing.", - "version": "30.0.1", + "version": "30.0.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 399b93335ad6..ad6a15a9d39c 100644 --- a/packages/pretty-format/package.json +++ b/packages/pretty-format/package.json @@ -1,6 +1,6 @@ { "name": "pretty-format", - "version": "30.0.1", + "version": "30.0.2", "repository": { "type": "git", "url": "https://github.com/jestjs/jest.git", diff --git a/packages/test-globals/package.json b/packages/test-globals/package.json index 27f25fdd850c..3a7181327e94 100644 --- a/packages/test-globals/package.json +++ b/packages/test-globals/package.json @@ -1,6 +1,6 @@ { "name": "@jest/test-globals", - "version": "30.0.1", + "version": "30.0.2", "private": true, "main": "./build/index.js", "types": "./build/index.d.ts", diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json index 2538d555c9fb..2d56bb5fa524 100644 --- a/packages/test-utils/package.json +++ b/packages/test-utils/package.json @@ -1,6 +1,6 @@ { "name": "@jest/test-utils", - "version": "30.0.1", + "version": "30.0.2", "private": true, "main": "./build/index.js", "types": "./build/index.d.ts",