diff --git a/.eslintrc.js b/.eslintrc.js index be7d6014b453..fa4fe611c242 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -245,7 +245,7 @@ module.exports = { '**/__tests__/**', '**/__performance_tests__/**', 'packages/diff-sequences/perf/index.js', - 'packages/pretty-format/perf/test.js' + 'packages/pretty-format/perf/test.js', ], rules: { 'import/no-unresolved': 'off', @@ -258,7 +258,7 @@ module.exports = { parserOptions: { sourceType: 'module', }, - plugins: ['markdown', 'import', 'jest'], + plugins: ['markdown', 'import', 'jest', 'prettier'], rules: { 'accessor-pairs': ['warn', {setWithoutGet: true}], 'block-scoped-var': 'off', @@ -442,6 +442,7 @@ module.exports = { 'prefer-arrow-callback': ['error', {allowNamedFunctions: true}], 'prefer-const': 'error', 'prefer-template': 'off', + 'prettier/prettier': 'error', quotes: [ 'error', 'single', diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index 949580f62cab..2d7e653d4892 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -32,7 +32,7 @@ jobs: key: ubuntu-latest-node-12.x-yarn-${{ hashFiles('**/yarn.lock') }} restore-keys: | ubuntu-latest-node-12.x-yarn- - - uses: actions/setup-node@v2.1.2 + - uses: actions/setup-node@v2.1.3 with: node-version: 12.x - name: install @@ -76,7 +76,7 @@ jobs: restore-keys: | ${{ runner.os }}-node-${{ matrix.node-version }}-yarn- - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v2.1.2 + uses: actions/setup-node@v2.1.3 with: node-version: ${{ matrix.node-version }} - name: install @@ -117,7 +117,7 @@ jobs: restore-keys: | ${{ runner.os }}-node-14.x-yarn- - name: Use Node.js 14.x - uses: actions/setup-node@v2.1.2 + uses: actions/setup-node@v2.1.3 with: node-version: 14.x - name: install diff --git a/CHANGELOG.md b/CHANGELOG.md index 2fa7e809457a..1853cc3957ca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,17 +5,21 @@ - `[jest-config]` [**BREAKING**] Default to Node testing environment instead of browser (JSDOM) ([#9874](https://github.com/facebook/jest/pull/9874)) - `[jest-config]` [**BREAKING**] Use `jest-circus` as default test runner ([#10686](https://github.com/facebook/jest/pull/10686)) - `[jest-config, jest-runtime]` Support ESM for files other than `.js` and `.mjs` ([#10823](https://github.com/facebook/jest/pull/10823)) +- `[jest-config, jest-runtime]` [**BREAKING**] Use "modern" implementation as default for fake timers ([#10874](https://github.com/facebook/jest/pull/10874)) +- `[jest-core]` make `TestWatcher` extend `emittery` ([#10324](https://github.com/facebook/jest/pull/10324)) - `[jest-repl, jest-runner]` [**BREAKING**] Run transforms over environment ([#8751](https://github.com/facebook/jest/pull/8751)) - `[jest-runner]` [**BREAKING**] set exit code to 1 if test logs after teardown ([#10728](https://github.com/facebook/jest/pull/10728)) - `[jest-snapshot]` [**BREAKING**] Make prettier optional for inline snapshots - fall back to string replacement ([#7792](https://github.com/facebook/jest/pull/7792)) - `[jest-runner]` [**BREAKING**] Run transforms over `runnner` ([#8823](https://github.com/facebook/jest/pull/8823)) - `[jest-runner]` [**BREAKING**] Run transforms over `testRunnner` ([#8823](https://github.com/facebook/jest/pull/8823)) - `[jest-runtime, jest-transform]` share `cacheFS` between runtime and transformer ([#10901](https://github.com/facebook/jest/pull/10901)) +- `[jest-transform]` Pass config options defined in Jest's config to transformer's `process` and `getCacheKey` functions ([#10926](https://github.com/facebook/jest/pull/10926)) ### Fixes - `[babel-plugin-jest-hoist]` Add `__dirname` and `__filename` to whitelisted globals ([#10903](https://github.com/facebook/jest/pull/10903)) - `[expect]` [**BREAKING**] Revise `expect.not.objectContaining()` to be the inverse of `expect.objectContaining()`, as documented. ([#10708](https://github.com/facebook/jest/pull/10708)) +- `[expect]` [**BREAKING**] Make `toContain` more strict with the received type ([#10119](https://github.com/facebook/jest/pull/10119) & [#10929](https://github.com/facebook/jest/pull/10929)) - `[jest-circus]` Fixed the issue of beforeAll & afterAll hooks getting executed even if it is inside a skipped `describe` block [#10451](https://github.com/facebook/jest/issues/10451) - `[jest-circus]` Fix `testLocation` on Windows when using `test.each` ([#10871](https://github.com/facebook/jest/pull/10871)) - `[jest-console]` `console.dir` now respects the second argument correctly ([#10638](https://github.com/facebook/jest/pull/10638)) @@ -35,6 +39,7 @@ - `[jest-transform]` Show enhanced `SyntaxError` message for all `SyntaxError`s ([#10749](https://github.com/facebook/jest/pull/10749)) - `[jest-transform]` [**BREAKING**] Refactor API to pass an options bag around rather than multiple boolean options ([#10753](https://github.com/facebook/jest/pull/10753)) - `[jest-transform]` [**BREAKING**] Refactor API of transformers to pass an options bag rather than separate `config` and other options ([#10834](https://github.com/facebook/jest/pull/10834)) +- `[jest-worker]` [**BREAKING**] Use named exports ([#10623] (https://github.com/facebook/jest/pull/10623)) - `[pretty-format]` [**BREAKING**] Convert to ES Modules ([#10515](https://github.com/facebook/jest/pull/10515)) ### Chore & Maintenance @@ -42,17 +47,21 @@ - `[*]` [**BREAKING**] Only support Node LTS releases and Node 15 ([#10685](https://github.com/facebook/jest/pull/10685)) - `[*]` [**BREAKING**] Add `exports` field to all `package.json`s ([#9921](https://github.com/facebook/jest/pull/9921)) - `[*]` Make it easier for Jest's packages to use the VM escape hatch ([#10824](https://github.com/facebook/jest/pull/10824)) +- `[*]` [**BREAKING**] Remove deprecated `mapCoverage` ([#9968](https://github.com/facebook/jest/pull/9968)) - `[jest-config]` [**BREAKING**] Remove `enabledTestsMap` config, use `filter` instead ([#10787](https://github.com/facebook/jest/pull/10787)) - `[jest-console]` [**BREAKING**] Move `root` into `config` and take `GlobalConfig` as mandatory parameter for `getConsoleOutput` ([#10126](https://github.com/facebook/jest/pull/10126)) - `[jest-fake-timers]` Clarify global behavior of `jest.useFakeTimers` and `jest.useRealTimers` ([#10867](https://github.com/facebook/jest/pull/10867)) - `[jest-haste-map]` [**BREAKING**] Migrate to ESM ([#10875](https://github.com/facebook/jest/pull/10875)) +- `[jest-haste-map]` [**BREAKING**] Remove support for deprecated option `ignorePattern` as function ([#10348](https://github.com/facebook/jest/pull/10348)) - `[jest-jasmine2]` [**BREAKING**] Migrate to ESM ([#10906](https://github.com/facebook/jest/pull/10906)) -- `[jest-repl, jest-runtime]` [**BREAKING**] Move the `jest-runtime` CLI into `jest-repl` ([#10016](https://github.com/facebook/jest/pull/10016)) +- `[jest-repl, jest-runtime]` [**BREAKING**] Move the `jest-runtime` CLI into `jest-repl` ([#10016](https://github.com/facebook/jest/pull/10016) & [#10925](https://github.com/facebook/jest/pull/10925)) - `[jest-resolve]` [**BREAKING**] Migrate to ESM ([#10688](https://github.com/facebook/jest/pull/10688)) - `[jest-resolve-dependencies]` [**BREAKING**] Migrate to ESM ([#10876](https://github.com/facebook/jest/pull/10876)) - `[jest-mock]` [**BREAKING**] Migrate to ESM ([#10887](https://github.com/facebook/jest/pull/10887)) - `[jest-runner]` [**BREAKING**] Migrate to ESM ([#10900](https://github.com/facebook/jest/pull/10900)) +- `[jest-runtime]` [**BREAKING**] Remove deprecated and unnused `getSourceMapInfo` from Runtime ([#9969](https://github.com/facebook/jest/pull/9969)) - `[jest-util]` No longer checking `enumerable` when adding `process.domain` ([#10862](https://github.com/facebook/jest/pull/10862)) +- `[jest-validate]` [**BREAKING**] Remove `recursiveBlacklist ` option in favor of previously introduced `recursiveDenylist` ([#10650](https://github.com/facebook/jest/pull/10650)) ### Performance diff --git a/docs/CodeTransformation.md b/docs/CodeTransformation.md index 108c08454bfb..a6982041f338 100644 --- a/docs/CodeTransformation.md +++ b/docs/CodeTransformation.md @@ -35,17 +35,17 @@ interface Transformer { getCacheKey?: ( sourceText: string, sourcePath: string, - options: TransformOptions, + options: TransformOptions, ) => string; process: ( sourceText: string, sourcePath: string, - options: TransformOptions, + options: TransformOptions, ) => TransformedSource; } -interface TransformOptions { +interface TransformOptions { /** * If a transformer does module resolution and reads files, it should populate `cacheFS` so that * Jest avoids reading the same files again, improving performance. `cacheFS` stores entries of @@ -61,6 +61,8 @@ interface TransformOptions { supportsExportNamespaceFrom: boolean; supportsStaticESM: boolean; supportsTopLevelAwait: boolean; + /** the options passed through Jest's config by the user */ + transformerConfig: OptionType; } type TransformedSource = diff --git a/docs/ExpectAPI.md b/docs/ExpectAPI.md index 2ee488f23e8b..d1ce4d6dbf84 100644 --- a/docs/ExpectAPI.md +++ b/docs/ExpectAPI.md @@ -255,6 +255,41 @@ it('stores only 10 characters', () => { }); ``` +#### async + +If your custom inline snapshot matcher is async i.e. uses `async`-`await` you might encounter an error like "Multiple inline snapshots for the same call are not supported". Jest needs additional context information to find where the custom inline snapshot matcher was used to update the snapshots properly. + +```js +const {toMatchInlineSnapshot} = require('jest-snapshot'); + +expect.extend({ + async toMatchObservationInlineSnapshot(fn, ...rest) { + // The error (and its stacktrace) must be created before any `await` + this.error = new Error(); + + // The implementation of `observe` doesn't matter. + // It only matters that the custom snapshot matcher is async. + const observation = await observe(async () => { + await fn(); + }); + + return toMatchInlineSnapshot.call(this, recording, ...rest); + }, +}); + +it('observes something', async () => { + await expect(async () => { + return 'async action'; + }).toMatchTrimmedInlineSnapshot(); + /* + The snapshot will be added inline like + await expect(async () => { + return 'async action'; + }).toMatchTrimmedInlineSnapshot(`"async action"`); + */ +}); +``` + ### `expect.anything()` `expect.anything()` matches anything but `null` or `undefined`. You can use it inside `toEqual` or `toBeCalledWith` instead of a literal value. For example, if you want to check that a mock function is called with a non-null argument: diff --git a/docs/JestObjectAPI.md b/docs/JestObjectAPI.md index c3dbeae8e808..71fcdd67f051 100644 --- a/docs/JestObjectAPI.md +++ b/docs/JestObjectAPI.md @@ -582,9 +582,9 @@ Restores all mocks back to their original value. Equivalent to calling [`.mockRe ### `jest.useFakeTimers(implementation?: 'modern' | 'legacy')` -Instructs Jest to use fake versions of the standard timer functions (`setTimeout`, `setInterval`, `clearTimeout`, `clearInterval`, `nextTick`, `setImmediate` and `clearImmediate`). +Instructs Jest to use fake versions of the standard timer functions (`setTimeout`, `setInterval`, `clearTimeout`, `clearInterval`, `nextTick`, `setImmediate` and `clearImmediate` as well as `Date`). -If you pass `'modern'` as an argument, [`@sinonjs/fake-timers`](https://github.com/sinonjs/fake-timers) will be used as implementation instead of Jest's own fake timers. This also mocks additional timers like `Date`. `'modern'` will be the default behavior in Jest 27. +If you pass `'legacy'` as an argument, Jest's legacy implementation will be used rather than one based on [`@sinonjs/fake-timers`](https://github.com/sinonjs/fake-timers). Returns the `jest` object for chaining. diff --git a/docs/TutorialReactNative.md b/docs/TutorialReactNative.md index fdebb6f84867..fd2a3e160dbd 100644 --- a/docs/TutorialReactNative.md +++ b/docs/TutorialReactNative.md @@ -192,7 +192,7 @@ Or if you'd like to create your own manual mock, you can do something like this: ```js jest.mock('Text', () => { const RealComponent = jest.requireActual('Text'); - const React = require('React'); + const React = require('react'); class Text extends React.Component { render() { return React.createElement('Text', this.props, this.props.children); diff --git a/e2e/__tests__/__snapshots__/customInlineSnapshotMatchers.test.ts.snap b/e2e/__tests__/__snapshots__/customInlineSnapshotMatchers.test.ts.snap new file mode 100644 index 000000000000..eebb3e9ff410 --- /dev/null +++ b/e2e/__tests__/__snapshots__/customInlineSnapshotMatchers.test.ts.snap @@ -0,0 +1,93 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`works with custom inline snapshot matchers 1`] = ` +FAIL __tests__/asynchronous.test.js + ✕ new async, inline snapshots + ✕ mismatching async, inline snapshots + + ● new async, inline snapshots + + expect(received).toMatchInlineSnapshot() + + Snapshot name: \`new async, inline snapshots 1\` + + New snapshot was not written. The update flag must be explicitly passed to write a new snapshot. + + This is likely because this test is run in a continuous integration (CI) environment in which snapshots are not written by default. + + Received: "result #1" + + 20 | + 21 | test('new async, inline snapshots', async () => { + > 22 | await expect(async () => 'result #1').toMatchObservationInlineSnapshot(); + | ^ + 23 | await expect(async () => 'result #2').toMatchObservationInlineSnapshot(); + 24 | }); + 25 | + + at Object.toMatchObservationInlineSnapshot (__tests__/asynchronous.test.js:22:41) + + ● new async, inline snapshots + + expect(received).toMatchInlineSnapshot() + + Snapshot name: \`new async, inline snapshots 2\` + + New snapshot was not written. The update flag must be explicitly passed to write a new snapshot. + + This is likely because this test is run in a continuous integration (CI) environment in which snapshots are not written by default. + + Received: "result #2" + + 21 | test('new async, inline snapshots', async () => { + 22 | await expect(async () => 'result #1').toMatchObservationInlineSnapshot(); + > 23 | await expect(async () => 'result #2').toMatchObservationInlineSnapshot(); + | ^ + 24 | }); + 25 | + 26 | test('mismatching async, inline snapshots', async () => { + + at Object.toMatchObservationInlineSnapshot (__tests__/asynchronous.test.js:23:41) + + ● mismatching async, inline snapshots + + expect(received).toMatchInlineSnapshot(snapshot) + + Snapshot name: \`mismatching async, inline snapshots 1\` + + Snapshot: "result #?" + Received: "result #1" + + 25 | + 26 | test('mismatching async, inline snapshots', async () => { + > 27 | await expect(async () => 'result #1').toMatchObservationInlineSnapshot( + | ^ + 28 | \`"result #?"\`, + 29 | ); + 30 | await expect(async () => 'result #2').toMatchObservationInlineSnapshot( + + at Object.toMatchObservationInlineSnapshot (__tests__/asynchronous.test.js:27:41) + + ● mismatching async, inline snapshots + + expect(received).toMatchInlineSnapshot(snapshot) + + Snapshot name: \`mismatching async, inline snapshots 2\` + + Snapshot: "result #?" + Received: "result #2" + + 28 | \`"result #?"\`, + 29 | ); + > 30 | await expect(async () => 'result #2').toMatchObservationInlineSnapshot( + | ^ + 31 | \`"result #?"\`, + 32 | ); + 33 | }); + + at Object.toMatchObservationInlineSnapshot (__tests__/asynchronous.test.js:30:41) + + › 4 snapshots failed. +Snapshot Summary + › 4 snapshots failed from 1 test suite. Inspect your code changes or re-run jest with \`-u\` to update them. +`; diff --git a/e2e/__tests__/__snapshots__/transform.test.ts.snap b/e2e/__tests__/__snapshots__/transform.test.ts.snap index 98335dc0a903..a68d884e885c 100644 --- a/e2e/__tests__/__snapshots__/transform.test.ts.snap +++ b/e2e/__tests__/__snapshots__/transform.test.ts.snap @@ -6,7 +6,7 @@ FAIL __tests__/ignoredFile.test.js babel-jest: Babel ignores __tests__/ignoredFile.test.js - make sure to include the file in Jest's transformIgnorePatterns as well. - at loadBabelConfig (../../../packages/babel-jest/build/index.js:201:13) + at loadBabelConfig (../../../packages/babel-jest/build/index.js:190:13) `; exports[`babel-jest instruments only specific files and collects coverage 1`] = ` diff --git a/e2e/__tests__/customInlineSnapshotMatchers.test.ts b/e2e/__tests__/customInlineSnapshotMatchers.test.ts new file mode 100644 index 000000000000..a644c74ab270 --- /dev/null +++ b/e2e/__tests__/customInlineSnapshotMatchers.test.ts @@ -0,0 +1,27 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import {wrap} from 'jest-snapshot-serializer-raw'; +import {extractSummary} from '../Utils'; +import runJest from '../runJest'; + +test('works with custom inline snapshot matchers', () => { + const {stderr} = runJest('custom-inline-snapshot-matchers', [ + // Prevent adding new snapshots or rather changing the test. + '--ci', + 'asynchronous.test.js', + ]); + + let {rest} = extractSummary(stderr); + + rest = rest + .split('\n') + .filter(line => line.indexOf('at Error (native)') < 0) + .join('\n'); + + expect(wrap(rest)).toMatchSnapshot(); +}); diff --git a/e2e/__tests__/deprecatedCliOptions.test.ts b/e2e/__tests__/deprecatedCliOptions.test.ts deleted file mode 100644 index 4334b065dc43..000000000000 --- a/e2e/__tests__/deprecatedCliOptions.test.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -import * as path from 'path'; -import runJest from '../runJest'; - -const dir = path.resolve(__dirname, '../deprecated-cli-options'); - -it('Prints deprecation warnings for CLI flags', () => { - const {stderr, exitCode} = runJest(dir, ['--mapCoverage']); - expect(exitCode).toBe(0); - expect(stderr).toMatch(/Test Suites: 1 passed, 1 total/); - expect(stderr).toMatch(`● Deprecation Warning: - - Option "mapCoverage" has been removed, as it's no longer necessary. - - Please update your configuration. - - CLI Options Documentation: - https://jestjs.io/docs/en/cli.html`); -}); diff --git a/e2e/custom-inline-snapshot-matchers/__tests__/asynchronous.test.js b/e2e/custom-inline-snapshot-matchers/__tests__/asynchronous.test.js new file mode 100644 index 000000000000..afb94f944e42 --- /dev/null +++ b/e2e/custom-inline-snapshot-matchers/__tests__/asynchronous.test.js @@ -0,0 +1,33 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +const {toMatchInlineSnapshot} = require('jest-snapshot'); + +expect.extend({ + async toMatchObservationInlineSnapshot(fn, ...args) { + this.error = new Error(); + // This specific behavior can be implemented without a custom matcher. + // In a real example one might want to observe some global value that `fn()` is affecting. + // The difference between before and after `fn()` might then be persisted as a snapshot. + const result = await fn(); + + return toMatchInlineSnapshot.call(this, result, ...args); + }, +}); + +test('new async, inline snapshots', async () => { + await expect(async () => 'result #1').toMatchObservationInlineSnapshot(); + await expect(async () => 'result #2').toMatchObservationInlineSnapshot(); +}); + +test('mismatching async, inline snapshots', async () => { + await expect(async () => 'result #1').toMatchObservationInlineSnapshot( + `"result #?"`, + ); + await expect(async () => 'result #2').toMatchObservationInlineSnapshot( + `"result #?"`, + ); +}); diff --git a/e2e/custom-inline-snapshot-matchers/package.json b/e2e/custom-inline-snapshot-matchers/package.json new file mode 100644 index 000000000000..148788b25446 --- /dev/null +++ b/e2e/custom-inline-snapshot-matchers/package.json @@ -0,0 +1,5 @@ +{ + "jest": { + "testEnvironment": "node" + } +} diff --git a/e2e/deprecated-cli-options/__tests__/dummy.js b/e2e/deprecated-cli-options/__tests__/dummy.js deleted file mode 100644 index 1925b3756db7..000000000000 --- a/e2e/deprecated-cli-options/__tests__/dummy.js +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -test('Dummy', () => { - expect(2).toBe(2); -}); diff --git a/e2e/deprecated-cli-options/package.json b/e2e/deprecated-cli-options/package.json deleted file mode 100644 index 586d4ca6b75c..000000000000 --- a/e2e/deprecated-cli-options/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "jest": {} -} diff --git a/e2e/fake-promises/immediate/__tests__/generator.test.js b/e2e/fake-promises/immediate/__tests__/generator.test.js index 048163f1a7e7..fcf8e3325653 100644 --- a/e2e/fake-promises/immediate/__tests__/generator.test.js +++ b/e2e/fake-promises/immediate/__tests__/generator.test.js @@ -13,7 +13,7 @@ test('fake promises', () => { someValue = 'foobar'; }); - jest.runAllImmediates(); + jest.runAllTimers(); expect(someValue).toBe('foobar'); }); diff --git a/jest b/jest index 5719ded7f2ca..faa1ea5d8841 100755 --- a/jest +++ b/jest @@ -1,4 +1,4 @@ -#!/usr/bin/env sh +#!/usr/bin/env bash : ' Copyright (c) 2014-present, Facebook, Inc. All rights reserved. diff --git a/lerna.json b/lerna.json index 3ba9b6a70192..41ecb0a33d06 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "26.6.3", + "version": "27.0.0-next.2", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/package.json b/package.json index 981c12b6dec1..4282de5d4ccc 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "debug": "^4.0.1", "dedent": "^0.7.0", "eslint": "^7.7.0", - "eslint-config-prettier": "^6.1.0", + "eslint-config-prettier": "^7.0.0", "eslint-plugin-eslint-comments": "^3.1.2", "eslint-plugin-import": "^2.6.0", "eslint-plugin-jest": "^24.0.0", @@ -76,6 +76,7 @@ "stealthy-require": "^1.1.1", "string-length": "^4.0.1", "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.1", "tempy": "^1.0.0", "throat": "^5.0.0", "ts-node": "^9.0.0", @@ -98,7 +99,6 @@ "lint": "eslint . --cache --ext js,jsx,ts,tsx,md", "lint:prettier": "prettier '**/*.{md,yml,yaml}' 'website/static/**/*.{css,js}' --write --ignore-path .gitignore", "lint:prettier:ci": "prettier '**/*.{md,yml,yaml}' 'website/static/**/*.{css,js}' --check --ignore-path .gitignore", - "publish": "yarn build-clean && yarn build && lerna publish --silent", "test-types": "yarn jest --config jest.config.types.js", "test-ci": "yarn jest-coverage --color -i --config jest.config.ci.js && yarn test-leak && node ./scripts/mapCoverage.js && codecov", "test-ci-partial": "yarn test-ci-partial:parallel -i", @@ -148,6 +148,10 @@ "@testing-library/dom/pretty-format": "26.6.1", "@types/jest/jest-diff": "^25.1.0", "@types/jest/pretty-format": "^25.1.0", - "fbjs-scripts": "patch:fbjs-scripts@^1.1.0#./patches/fbjs-scripts.patch" + "babel-jest": "workspace:*", + "fbjs-scripts": "patch:fbjs-scripts@^1.1.0#./patches/fbjs-scripts.patch", + "jest": "workspace:*", + "jest-environment-node": "workspace:*", + "react-native": "patch:react-native@0.63.2#./patches/react-native.patch" } } diff --git a/packages/babel-jest/package.json b/packages/babel-jest/package.json index 4fd3eadd568d..fb93e86c1d17 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": "26.6.3", + "version": "27.0.0-next.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -15,18 +15,18 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", + "@jest/transform": "^27.0.0-next.2", + "@jest/types": "^27.0.0-next.1", "@types/babel__core": "^7.1.7", "babel-plugin-istanbul": "^6.0.0", - "babel-preset-jest": "^26.6.2", + "babel-preset-jest": "^27.0.0-next.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.4", "slash": "^3.0.0" }, "devDependencies": { "@babel/core": "^7.1.0", - "@jest/test-utils": "^26.6.2", + "@jest/test-utils": "^27.0.0-next.1", "@types/graceful-fs": "^4.1.3" }, "peerDependencies": { diff --git a/packages/babel-jest/src/index.ts b/packages/babel-jest/src/index.ts index 75e095729cc5..874101146276 100644 --- a/packages/babel-jest/src/index.ts +++ b/packages/babel-jest/src/index.ts @@ -50,7 +50,7 @@ const createTransformer: CreateTransformer = userOptions => { function loadBabelConfig( cwd: Config.Path, filename: Config.Path, - transformOptions?: JestTransformOptions, + transformOptions: JestTransformOptions, ): PartialConfig { // `cwd` first to allow incoming options to override it const babelConfig = loadPartialConfig({ @@ -59,16 +59,16 @@ const createTransformer: CreateTransformer = userOptions => { caller: { ...options.caller, supportsDynamicImport: - transformOptions?.supportsDynamicImport ?? + transformOptions.supportsDynamicImport ?? options.caller.supportsDynamicImport, supportsExportNamespaceFrom: - transformOptions?.supportsExportNamespaceFrom ?? + transformOptions.supportsExportNamespaceFrom ?? options.caller.supportsExportNamespaceFrom, supportsStaticESM: - transformOptions?.supportsStaticESM ?? + transformOptions.supportsStaticESM ?? options.caller.supportsStaticESM, supportsTopLevelAwait: - transformOptions?.supportsTopLevelAwait ?? + transformOptions.supportsTopLevelAwait ?? options.caller.supportsTopLevelAwait, }, filename, diff --git a/packages/babel-plugin-jest-hoist/package.json b/packages/babel-plugin-jest-hoist/package.json index da0cdbf21f89..a993f00355a5 100644 --- a/packages/babel-plugin-jest-hoist/package.json +++ b/packages/babel-plugin-jest-hoist/package.json @@ -1,6 +1,6 @@ { "name": "babel-plugin-jest-hoist", - "version": "26.6.2", + "version": "27.0.0-next.0", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/babel-preset-jest/package.json b/packages/babel-preset-jest/package.json index 17fba49d7b3d..537dfcff47c1 100644 --- a/packages/babel-preset-jest/package.json +++ b/packages/babel-preset-jest/package.json @@ -1,6 +1,6 @@ { "name": "babel-preset-jest", - "version": "26.6.2", + "version": "27.0.0-next.0", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -13,7 +13,7 @@ "./package.json": "./package.json" }, "dependencies": { - "babel-plugin-jest-hoist": "^26.6.2", + "babel-plugin-jest-hoist": "^27.0.0-next.0", "babel-preset-current-node-syntax": "^1.0.0" }, "peerDependencies": { diff --git a/packages/diff-sequences/package.json b/packages/diff-sequences/package.json index fc1535ea0ac9..779ab47f022a 100644 --- a/packages/diff-sequences/package.json +++ b/packages/diff-sequences/package.json @@ -1,6 +1,6 @@ { "name": "diff-sequences", - "version": "26.6.2", + "version": "27.0.0-next.0", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/expect/package.json b/packages/expect/package.json index 99e0f17a2c2d..9477cc7e1b1d 100644 --- a/packages/expect/package.json +++ b/packages/expect/package.json @@ -1,6 +1,6 @@ { "name": "expect", - "version": "26.6.2", + "version": "27.0.0-next.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -15,15 +15,15 @@ "./build/utils": "./build/utils.js" }, "dependencies": { - "@jest/types": "^26.6.2", + "@jest/types": "^27.0.0-next.1", "ansi-styles": "^5.0.0", - "jest-get-type": "^26.3.0", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-regex-util": "^26.0.0" + "jest-get-type": "^27.0.0-next.0", + "jest-matcher-utils": "^27.0.0-next.1", + "jest-message-util": "^27.0.0-next.1", + "jest-regex-util": "^27.0.0-next.0" }, "devDependencies": { - "@jest/test-utils": "^26.6.2", + "@jest/test-utils": "^27.0.0-next.1", "chalk": "^4.0.0", "fast-check": "^2.0.0", "immutable": "^4.0.0-rc.12" diff --git a/packages/expect/src/__tests__/__snapshots__/matchers.test.js.snap b/packages/expect/src/__tests__/__snapshots__/matchers.test.js.snap index 829838a271b1..ca39274cdb18 100644 --- a/packages/expect/src/__tests__/__snapshots__/matchers.test.js.snap +++ b/packages/expect/src/__tests__/__snapshots__/matchers.test.js.snap @@ -1958,6 +1958,48 @@ exports[`.toContain(), .toContainEqual() error cases 1`] = ` Received has value: null `; +exports[`.toContain(), .toContainEqual() error cases 2`] = ` +expect(-0).toContain(0) // indexOf + +Matcher error: expected value must be a string if received value is a string + +Expected has type: number +Expected has value: -0 +Received has type: string +Received has value: "-0" +`; + +exports[`.toContain(), .toContainEqual() error cases 3`] = ` +expect(null).toContain(null) // indexOf + +Matcher error: expected value must be a string if received value is a string + +Expected has value: null +Received has type: string +Received has value: "null" +`; + +exports[`.toContain(), .toContainEqual() error cases 4`] = ` +expect(undefined).toContain(undefined) // indexOf + +Matcher error: expected value must be a string if received value is a string + +Expected has value: undefined +Received has type: string +Received has value: "undefined" +`; + +exports[`.toContain(), .toContainEqual() error cases 5`] = ` +expect(false).toContain(false) // indexOf + +Matcher error: expected value must be a string if received value is a string + +Expected has type: boolean +Expected has value: false +Received has type: string +Received has value: "false" +`; + exports[`.toContain(), .toContainEqual() error cases for toContainEqual 1`] = ` expect(received).toContainEqual(expected) // deep equality diff --git a/packages/expect/src/__tests__/matchers.test.js b/packages/expect/src/__tests__/matchers.test.js index 6e7b4e619090..5b24688e69d0 100644 --- a/packages/expect/src/__tests__/matchers.test.js +++ b/packages/expect/src/__tests__/matchers.test.js @@ -1463,6 +1463,21 @@ describe('.toContain(), .toContainEqual()', () => { test('error cases', () => { expect(() => jestExpect(null).toContain(1)).toThrowErrorMatchingSnapshot(); + expect(() => jestExpect('-0').toContain(-0)).toThrowErrorMatchingSnapshot(); + expect(() => + jestExpect('null').toContain(null), + ).toThrowErrorMatchingSnapshot(); + expect(() => + jestExpect('undefined').toContain(undefined), + ).toThrowErrorMatchingSnapshot(); + expect(() => + jestExpect('false').toContain(false), + ).toThrowErrorMatchingSnapshot(); + if (isBigIntDefined) { + expect(() => jestExpect('1').toContain(BigInt(1))).toThrowError( + 'toContain', + ); + } }); [ diff --git a/packages/expect/src/matchers.ts b/packages/expect/src/matchers.ts index f39313f4b99b..99a3c7e9fd42 100644 --- a/packages/expect/src/matchers.ts +++ b/packages/expect/src/matchers.ts @@ -474,6 +474,24 @@ const matchers: MatchersObject = { } if (typeof received === 'string') { + const wrongTypeErrorMessage = `${EXPECTED_COLOR( + 'expected', + )} value must be a string if ${RECEIVED_COLOR( + 'received', + )} value is a string`; + + if (typeof expected !== 'string') { + throw new Error( + matcherErrorMessage( + matcherHint(matcherName, received, String(expected), options), + wrongTypeErrorMessage, + printWithType('Expected', expected, printExpected) + + '\n' + + printWithType('Received', received, printReceived), + ), + ); + } + const index = received.indexOf(String(expected)); const pass = index !== -1; diff --git a/packages/jest-changed-files/package.json b/packages/jest-changed-files/package.json index 1be48ab8dac4..b2e63326b89a 100644 --- a/packages/jest-changed-files/package.json +++ b/packages/jest-changed-files/package.json @@ -1,6 +1,6 @@ { "name": "jest-changed-files", - "version": "26.6.2", + "version": "27.0.0-next.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,7 +14,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/types": "^26.6.2", + "@jest/types": "^27.0.0-next.1", "execa": "^5.0.0", "throat": "^5.0.0" }, diff --git a/packages/jest-circus/package.json b/packages/jest-circus/package.json index e8e937533784..197adea6ed9b 100644 --- a/packages/jest-circus/package.json +++ b/packages/jest-circus/package.json @@ -1,6 +1,6 @@ { "name": "jest-circus", - "version": "26.6.3", + "version": "27.0.0-next.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -15,30 +15,30 @@ "./runner": "./runner.js" }, "dependencies": { - "@jest/environment": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", + "@jest/environment": "^27.0.0-next.1", + "@jest/test-result": "^27.0.0-next.1", + "@jest/types": "^27.0.0-next.1", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^0.7.0", - "expect": "^26.6.2", + "expect": "^27.0.0-next.1", "is-generator-fn": "^2.0.0", - "jest-each": "^26.6.2", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-runner": "^26.6.3", - "jest-runtime": "^26.6.3", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "pretty-format": "^26.6.2", + "jest-each": "^27.0.0-next.1", + "jest-matcher-utils": "^27.0.0-next.1", + "jest-message-util": "^27.0.0-next.1", + "jest-runner": "^27.0.0-next.2", + "jest-runtime": "^27.0.0-next.2", + "jest-snapshot": "^27.0.0-next.2", + "jest-util": "^27.0.0-next.1", + "pretty-format": "^27.0.0-next.1", "stack-utils": "^2.0.3", "throat": "^5.0.0" }, "devDependencies": { "@babel/core": "^7.1.0", "@babel/register": "^7.0.0", - "@jest/test-utils": "^26.6.2", + "@jest/test-utils": "^27.0.0-next.1", "@types/co": "^4.6.0", "@types/dedent": "^0.7.0", "@types/graceful-fs": "^4.1.3", diff --git a/packages/jest-circus/src/legacy-code-todo-rewrite/jestAdapter.ts b/packages/jest-circus/src/legacy-code-todo-rewrite/jestAdapter.ts index 79da4ab6f3ce..14daeec22f59 100644 --- a/packages/jest-circus/src/legacy-code-todo-rewrite/jestAdapter.ts +++ b/packages/jest-circus/src/legacy-code-todo-rewrite/jestAdapter.ts @@ -41,11 +41,11 @@ const jestAdapter = async ( testPath, }); - if (config.timers === 'fake' || config.timers === 'legacy') { + if (config.timers === 'fake' || config.timers === 'modern') { // during setup, this cannot be null (and it's fine to explode if it is) - environment.fakeTimers!.useFakeTimers(); - } else if (config.timers === 'modern') { environment.fakeTimersModern!.useFakeTimers(); + } else if (config.timers === 'legacy') { + environment.fakeTimers!.useFakeTimers(); } globals.beforeEach(() => { @@ -60,7 +60,7 @@ const jestAdapter = async ( if (config.resetMocks) { runtime.resetAllMocks(); - if (config.timers === 'fake') { + if (config.timers === 'legacy') { // during setup, this cannot be null (and it's fine to explode if it is) environment.fakeTimers!.useFakeTimers(); } diff --git a/packages/jest-circus/src/legacy-code-todo-rewrite/jestAdapterInit.ts b/packages/jest-circus/src/legacy-code-todo-rewrite/jestAdapterInit.ts index f55934f558f5..61c68b332117 100644 --- a/packages/jest-circus/src/legacy-code-todo-rewrite/jestAdapterInit.ts +++ b/packages/jest-circus/src/legacy-code-todo-rewrite/jestAdapterInit.ts @@ -259,7 +259,6 @@ export const runAndTransformResultsToJestFormat = async ({ numPassingTests, numPendingTests, numTodoTests, - sourceMaps: {}, testExecError, testFilePath: testPath, testResults: assertionResults, diff --git a/packages/jest-circus/tsconfig.json b/packages/jest-circus/tsconfig.json index cc427109b912..630f21878c72 100644 --- a/packages/jest-circus/tsconfig.json +++ b/packages/jest-circus/tsconfig.json @@ -5,6 +5,7 @@ "rootDir": "src" }, "references": [ + {"path": "../expect"}, {"path": "../jest-each"}, {"path": "../jest-environment"}, {"path": "../jest-matcher-utils"}, diff --git a/packages/jest-cli/package.json b/packages/jest-cli/package.json index 5f27a62daebd..cae92340097f 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": "26.6.3", + "version": "27.0.0-next.2", "main": "./build/index.js", "types": "./build/index.d.ts", "exports": { @@ -10,22 +10,22 @@ "./bin/jest": "./bin/jest.js" }, "dependencies": { - "@jest/core": "^26.6.3", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", + "@jest/core": "^27.0.0-next.2", + "@jest/test-result": "^27.0.0-next.1", + "@jest/types": "^27.0.0-next.1", "chalk": "^4.0.0", "exit": "^0.1.2", "graceful-fs": "^4.2.4", "import-local": "^3.0.2", "is-ci": "^2.0.0", - "jest-config": "^26.6.3", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", + "jest-config": "^27.0.0-next.2", + "jest-util": "^27.0.0-next.1", + "jest-validate": "^27.0.0-next.1", "prompts": "^2.0.1", "yargs": "^16.0.3" }, "devDependencies": { - "@jest/test-utils": "^26.6.2", + "@jest/test-utils": "^27.0.0-next.1", "@types/exit": "^0.1.30", "@types/graceful-fs": "^4.1.3", "@types/is-ci": "^2.0.0", diff --git a/packages/jest-cli/src/cli/args.ts b/packages/jest-cli/src/cli/args.ts index fe74a2f6c4c1..60384b41fe1c 100644 --- a/packages/jest-cli/src/cli/args.ts +++ b/packages/jest-cli/src/cli/args.ts @@ -361,13 +361,6 @@ export const options = { 'node.', type: 'boolean', }, - mapCoverage: { - default: undefined, - description: - 'Maps code coverage reports against original source code ' + - 'when transformers supply source maps.\n\nDEPRECATED', - type: 'boolean', - }, maxConcurrency: { default: 5, description: diff --git a/packages/jest-cli/tsconfig.json b/packages/jest-cli/tsconfig.json index 214e78d81180..2a48dd03ef8f 100644 --- a/packages/jest-cli/tsconfig.json +++ b/packages/jest-cli/tsconfig.json @@ -5,11 +5,12 @@ "outDir": "build" }, "references": [ - {"path": "../jest-core"}, {"path": "../jest-config"}, + {"path": "../jest-core"}, {"path": "../jest-test-result"}, {"path": "../jest-types"}, {"path": "../jest-util"}, - {"path": "../jest-validate"} + {"path": "../jest-validate"}, + {"path": "../test-utils"} ] } diff --git a/packages/jest-config/package.json b/packages/jest-config/package.json index 14864a57efa1..c285577e1b3e 100644 --- a/packages/jest-config/package.json +++ b/packages/jest-config/package.json @@ -1,6 +1,6 @@ { "name": "jest-config", - "version": "26.6.3", + "version": "27.0.0-next.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -23,24 +23,24 @@ }, "dependencies": { "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^26.6.3", - "@jest/types": "^26.6.2", - "babel-jest": "^26.6.3", + "@jest/test-sequencer": "^27.0.0-next.2", + "@jest/types": "^27.0.0-next.1", + "babel-jest": "^27.0.0-next.2", "chalk": "^4.0.0", "deepmerge": "^4.2.2", "glob": "^7.1.1", "graceful-fs": "^4.2.4", - "jest-circus": "^26.6.3", - "jest-environment-jsdom": "^26.6.2", - "jest-environment-node": "^26.6.2", - "jest-get-type": "^26.3.0", - "jest-jasmine2": "^26.6.3", - "jest-regex-util": "^26.0.0", - "jest-resolve": "^26.6.2", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", + "jest-circus": "^27.0.0-next.2", + "jest-environment-jsdom": "^27.0.0-next.1", + "jest-environment-node": "^27.0.0-next.1", + "jest-get-type": "^27.0.0-next.0", + "jest-jasmine2": "^27.0.0-next.2", + "jest-regex-util": "^27.0.0-next.0", + "jest-resolve": "^27.0.0-next.2", + "jest-util": "^27.0.0-next.1", + "jest-validate": "^27.0.0-next.1", "micromatch": "^4.0.2", - "pretty-format": "^26.6.2" + "pretty-format": "^27.0.0-next.1" }, "devDependencies": { "@types/babel__core": "^7.0.4", diff --git a/packages/jest-config/src/Deprecated.ts b/packages/jest-config/src/Deprecated.ts index 0e0bc23ee732..f43ec9d4d7a2 100644 --- a/packages/jest-config/src/Deprecated.ts +++ b/packages/jest-config/src/Deprecated.ts @@ -20,12 +20,6 @@ const deprecatedOptions: DeprecatedOptions = { } `, - mapCoverage: () => ` Option ${chalk.bold( - '"mapCoverage"', - )} has been removed, as it's no longer necessary. - - Please update your configuration.`, - preprocessorIgnorePatterns: (options: { preprocessorIgnorePatterns?: Array; }) => ` Option ${chalk.bold( diff --git a/packages/jest-config/src/normalize.ts b/packages/jest-config/src/normalize.ts index 08250b8c8ed8..d2e2f060fbef 100644 --- a/packages/jest-config/src/normalize.ts +++ b/packages/jest-config/src/normalize.ts @@ -553,7 +553,7 @@ export default function normalize( comment: DOCUMENTATION_NOTE, deprecatedConfig: DEPRECATED_CONFIG, exampleConfig: VALID_CONFIG, - recursiveBlacklist: [ + recursiveDenylist: [ 'collectCoverageOnlyFrom', // 'coverageThreshold' allows to use 'global' and glob strings on the same // level, there's currently no way we can deal with such config @@ -958,7 +958,6 @@ export default function normalize( case 'listTests': case 'logHeapUsage': case 'maxConcurrency': - case 'mapCoverage': case 'name': case 'noStackTrace': case 'notify': diff --git a/packages/jest-config/tsconfig.json b/packages/jest-config/tsconfig.json index b33c1679180a..7c9dc85e0510 100644 --- a/packages/jest-config/tsconfig.json +++ b/packages/jest-config/tsconfig.json @@ -4,8 +4,9 @@ "rootDir": "src", "outDir": "build" }, - // TODO: This is missing `jest-jasmine2`, but that is just - // `require.resolve`d, so no real use for its types + // TODO: This is missing `babel-jest`, `jest-jasmine2`, `jest-circus` and + // jest-test-sequencer, but that is just `require.resolve`d, so no real use + // for their types "references": [ {"path": "../jest-environment-jsdom"}, {"path": "../jest-environment-node"}, diff --git a/packages/jest-console/package.json b/packages/jest-console/package.json index 51d1043945a2..754480d28d7c 100644 --- a/packages/jest-console/package.json +++ b/packages/jest-console/package.json @@ -1,6 +1,6 @@ { "name": "@jest/console", - "version": "26.6.2", + "version": "27.0.0-next.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,15 +14,15 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/types": "^26.6.2", + "@jest/types": "^27.0.0-next.1", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^26.6.2", - "jest-util": "^26.6.2", + "jest-message-util": "^27.0.0-next.1", + "jest-util": "^27.0.0-next.1", "slash": "^3.0.0" }, "devDependencies": { - "@jest/test-utils": "^26.6.2", + "@jest/test-utils": "^27.0.0-next.1", "@types/node": "*" }, "engines": { diff --git a/packages/jest-core/package.json b/packages/jest-core/package.json index 4b9e0f1d16f1..36cf849c4a14 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": "26.6.3", + "version": "27.0.0-next.2", "main": "./build/jest.js", "types": "./build/jest.d.ts", "exports": { @@ -9,29 +9,30 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/console": "^26.6.2", - "@jest/reporters": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", + "@jest/console": "^27.0.0-next.1", + "@jest/reporters": "^27.0.0-next.2", + "@jest/test-result": "^27.0.0-next.1", + "@jest/transform": "^27.0.0-next.2", + "@jest/types": "^27.0.0-next.1", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", + "emittery": "^0.7.2", "exit": "^0.1.2", "graceful-fs": "^4.2.4", - "jest-changed-files": "^26.6.2", - "jest-config": "^26.6.3", - "jest-haste-map": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-resolve": "^26.6.2", - "jest-resolve-dependencies": "^26.6.3", - "jest-runner": "^26.6.3", - "jest-runtime": "^26.6.3", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "jest-watcher": "^26.6.2", + "jest-changed-files": "^27.0.0-next.1", + "jest-config": "^27.0.0-next.2", + "jest-haste-map": "^27.0.0-next.2", + "jest-message-util": "^27.0.0-next.1", + "jest-regex-util": "^27.0.0-next.0", + "jest-resolve": "^27.0.0-next.2", + "jest-resolve-dependencies": "^27.0.0-next.2", + "jest-runner": "^27.0.0-next.2", + "jest-runtime": "^27.0.0-next.2", + "jest-snapshot": "^27.0.0-next.2", + "jest-util": "^27.0.0-next.1", + "jest-validate": "^27.0.0-next.1", + "jest-watcher": "^27.0.0-next.1", "micromatch": "^4.0.2", "p-each-series": "^2.1.0", "rimraf": "^3.0.0", @@ -39,8 +40,8 @@ "strip-ansi": "^6.0.0" }, "devDependencies": { - "@jest/test-sequencer": "^26.6.3", - "@jest/test-utils": "^26.6.2", + "@jest/test-sequencer": "^27.0.0-next.2", + "@jest/test-utils": "^27.0.0-next.1", "@types/exit": "^0.1.30", "@types/graceful-fs": "^4.1.2", "@types/micromatch": "^4.0.0", diff --git a/packages/jest-core/src/ReporterDispatcher.ts b/packages/jest-core/src/ReporterDispatcher.ts index de69ec7d1d40..e6f5aa71c06d 100644 --- a/packages/jest-core/src/ReporterDispatcher.ts +++ b/packages/jest-core/src/ReporterDispatcher.ts @@ -47,7 +47,6 @@ export default class ReporterDispatcher { } // Release memory if unused later. - testResult.sourceMaps = undefined; testResult.coverage = undefined; testResult.console = undefined; } diff --git a/packages/jest-core/src/TestScheduler.ts b/packages/jest-core/src/TestScheduler.ts index 4af975dfe96c..fa75861835af 100644 --- a/packages/jest-core/src/TestScheduler.ts +++ b/packages/jest-core/src/TestScheduler.ts @@ -419,7 +419,7 @@ export default class TestScheduler { throw new Error('Reporter should be either a string or an array'); } - private _bailIfNeeded( + private async _bailIfNeeded( contexts: Set, aggregatedResults: AggregatedResult, watcher: TestWatcher, @@ -429,17 +429,16 @@ export default class TestScheduler { aggregatedResults.numFailedTests >= this._globalConfig.bail ) { if (watcher.isWatchMode()) { - watcher.setState({interrupted: true}); - } else { - const failureExit = () => exit(1); - - return this._dispatcher - .onRunComplete(contexts, aggregatedResults) - .then(failureExit) - .catch(failureExit); + await watcher.setState({interrupted: true}); + return; + } + + try { + await this._dispatcher.onRunComplete(contexts, aggregatedResults); + } finally { + exit(1); } } - return Promise.resolve(); } } diff --git a/packages/jest-core/src/TestWatcher.ts b/packages/jest-core/src/TestWatcher.ts index 750dcbe45efc..3dbacb3fb5e4 100644 --- a/packages/jest-core/src/TestWatcher.ts +++ b/packages/jest-core/src/TestWatcher.ts @@ -5,13 +5,13 @@ * LICENSE file in the root directory of this source tree. */ -import {EventEmitter} from 'events'; +import emittery = require('emittery'); type State = { interrupted: boolean; }; -export default class TestWatcher extends EventEmitter { +export default class TestWatcher extends emittery.Typed<{change: State}> { state: State; private _isWatchMode: boolean; @@ -21,9 +21,9 @@ export default class TestWatcher extends EventEmitter { this._isWatchMode = isWatchMode; } - setState(state: State): void { + async setState(state: State): Promise { Object.assign(this.state, state); - this.emit('change', this.state); + await this.emit('change', this.state); } isInterrupted(): boolean { diff --git a/packages/jest-core/tsconfig.json b/packages/jest-core/tsconfig.json index 2dc89063bc95..6010315e6eeb 100644 --- a/packages/jest-core/tsconfig.json +++ b/packages/jest-core/tsconfig.json @@ -12,14 +12,15 @@ {"path": "../jest-message-util"}, {"path": "../jest-regex-util"}, {"path": "../jest-reporters"}, + {"path": "../jest-resolve"}, {"path": "../jest-resolve-dependencies"}, {"path": "../jest-runner"}, {"path": "../jest-runtime"}, {"path": "../jest-snapshot"}, {"path": "../jest-test-result"}, {"path": "../jest-test-sequencer"}, - {"path": "../jest-types"}, {"path": "../jest-transform"}, + {"path": "../jest-types"}, {"path": "../jest-util"}, {"path": "../jest-validate"}, {"path": "../jest-watcher"}, diff --git a/packages/jest-create-cache-key-function/package.json b/packages/jest-create-cache-key-function/package.json index fc863b3506c3..7d04f312980b 100644 --- a/packages/jest-create-cache-key-function/package.json +++ b/packages/jest-create-cache-key-function/package.json @@ -1,13 +1,13 @@ { "name": "@jest/create-cache-key-function", - "version": "26.6.2", + "version": "27.0.0-next.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", "directory": "packages/jest-create-cache-key-function" }, "dependencies": { - "@jest/types": "^26.6.2" + "@jest/types": "^27.0.0-next.1" }, "devDependencies": { "@types/node": "*" diff --git a/packages/jest-diff/package.json b/packages/jest-diff/package.json index c91b487be7d2..16f35c0afbd5 100644 --- a/packages/jest-diff/package.json +++ b/packages/jest-diff/package.json @@ -1,6 +1,6 @@ { "name": "jest-diff", - "version": "26.6.2", + "version": "27.0.0-next.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -15,12 +15,12 @@ }, "dependencies": { "chalk": "^4.0.0", - "diff-sequences": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" + "diff-sequences": "^27.0.0-next.0", + "jest-get-type": "^27.0.0-next.0", + "pretty-format": "^27.0.0-next.1" }, "devDependencies": { - "@jest/test-utils": "^26.6.2", + "@jest/test-utils": "^27.0.0-next.1", "strip-ansi": "^6.0.0" }, "engines": { diff --git a/packages/jest-docblock/package.json b/packages/jest-docblock/package.json index 3e769bbe905d..46dd94343f9b 100644 --- a/packages/jest-docblock/package.json +++ b/packages/jest-docblock/package.json @@ -1,6 +1,6 @@ { "name": "jest-docblock", - "version": "26.0.0", + "version": "27.0.0-next.0", "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 603c24285ffe..c6f1c1a1a71d 100644 --- a/packages/jest-each/package.json +++ b/packages/jest-each/package.json @@ -1,6 +1,6 @@ { "name": "jest-each", - "version": "26.6.2", + "version": "27.0.0-next.1", "description": "Parameterised tests for Jest", "main": "./build/index.js", "types": "./build/index.d.ts", @@ -22,11 +22,11 @@ "author": "Matt Phillips (mattphillips)", "license": "MIT", "dependencies": { - "@jest/types": "^26.6.2", + "@jest/types": "^27.0.0-next.1", "chalk": "^4.0.0", - "jest-get-type": "^26.3.0", - "jest-util": "^26.6.2", - "pretty-format": "^26.6.2" + "jest-get-type": "^27.0.0-next.0", + "jest-util": "^27.0.0-next.1", + "pretty-format": "^27.0.0-next.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" diff --git a/packages/jest-environment-jsdom/package.json b/packages/jest-environment-jsdom/package.json index 50b3fffc81e4..3bfe45217136 100644 --- a/packages/jest-environment-jsdom/package.json +++ b/packages/jest-environment-jsdom/package.json @@ -1,6 +1,6 @@ { "name": "jest-environment-jsdom", - "version": "26.6.2", + "version": "27.0.0-next.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,16 +14,16 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/environment": "^26.6.2", - "@jest/fake-timers": "^26.6.2", - "@jest/types": "^26.6.2", + "@jest/environment": "^27.0.0-next.1", + "@jest/fake-timers": "^27.0.0-next.1", + "@jest/types": "^27.0.0-next.1", "@types/node": "*", - "jest-mock": "^26.6.2", - "jest-util": "^26.6.2", + "jest-mock": "^27.0.0-next.1", + "jest-util": "^27.0.0-next.1", "jsdom": "^16.4.0" }, "devDependencies": { - "@jest/test-utils": "^26.6.2", + "@jest/test-utils": "^27.0.0-next.1", "@types/jsdom": "^16.2.4" }, "engines": { diff --git a/packages/jest-environment-node/package.json b/packages/jest-environment-node/package.json index fc58d5eb629b..c25b1dbca615 100644 --- a/packages/jest-environment-node/package.json +++ b/packages/jest-environment-node/package.json @@ -1,6 +1,6 @@ { "name": "jest-environment-node", - "version": "26.6.2", + "version": "27.0.0-next.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,15 +14,15 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/environment": "^26.6.2", - "@jest/fake-timers": "^26.6.2", - "@jest/types": "^26.6.2", + "@jest/environment": "^27.0.0-next.1", + "@jest/fake-timers": "^27.0.0-next.1", + "@jest/types": "^27.0.0-next.1", "@types/node": "*", - "jest-mock": "^26.6.2", - "jest-util": "^26.6.2" + "jest-mock": "^27.0.0-next.1", + "jest-util": "^27.0.0-next.1" }, "devDependencies": { - "@jest/test-utils": "^26.6.2" + "@jest/test-utils": "^27.0.0-next.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" diff --git a/packages/jest-environment/package.json b/packages/jest-environment/package.json index a6ad9a74f3f3..e3d79a4326f9 100644 --- a/packages/jest-environment/package.json +++ b/packages/jest-environment/package.json @@ -1,6 +1,6 @@ { "name": "@jest/environment", - "version": "26.6.2", + "version": "27.0.0-next.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,10 +14,10 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/fake-timers": "^26.6.2", - "@jest/types": "^26.6.2", + "@jest/fake-timers": "^27.0.0-next.1", + "@jest/types": "^27.0.0-next.1", "@types/node": "*", - "jest-mock": "^26.6.2" + "jest-mock": "^27.0.0-next.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" diff --git a/packages/jest-environment/tsconfig.json b/packages/jest-environment/tsconfig.json index efa01e2b2db4..7e0bf445fb1a 100644 --- a/packages/jest-environment/tsconfig.json +++ b/packages/jest-environment/tsconfig.json @@ -8,7 +8,7 @@ }, "references": [ {"path": "../jest-fake-timers"}, - {"path": "../jest-types"}, - {"path": "../jest-util"} + {"path": "../jest-mock"}, + {"path": "../jest-types"} ] } diff --git a/packages/jest-fake-timers/package.json b/packages/jest-fake-timers/package.json index ae447269bfb8..69373737dc5c 100644 --- a/packages/jest-fake-timers/package.json +++ b/packages/jest-fake-timers/package.json @@ -1,6 +1,6 @@ { "name": "@jest/fake-timers", - "version": "26.6.2", + "version": "27.0.0-next.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,12 +14,12 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/types": "^26.6.2", + "@jest/types": "^27.0.0-next.1", "@sinonjs/fake-timers": "^6.0.1", "@types/node": "*", - "jest-message-util": "^26.6.2", - "jest-mock": "^26.6.2", - "jest-util": "^26.6.2" + "jest-message-util": "^27.0.0-next.1", + "jest-mock": "^27.0.0-next.1", + "jest-util": "^27.0.0-next.1" }, "devDependencies": { "@types/sinonjs__fake-timers": "^6.0.1", diff --git a/packages/jest-fake-timers/tsconfig.json b/packages/jest-fake-timers/tsconfig.json index 7105524da628..9db8e6cc0ed9 100644 --- a/packages/jest-fake-timers/tsconfig.json +++ b/packages/jest-fake-timers/tsconfig.json @@ -7,6 +7,7 @@ "references": [ {"path": "../jest-message-util"}, {"path": "../jest-mock"}, + {"path": "../jest-types"}, {"path": "../jest-util"} ] } diff --git a/packages/jest-get-type/package.json b/packages/jest-get-type/package.json index 0d3b7ad6617d..5222f6268309 100644 --- a/packages/jest-get-type/package.json +++ b/packages/jest-get-type/package.json @@ -1,7 +1,7 @@ { "name": "jest-get-type", "description": "A utility function to get the type of a value", - "version": "26.3.0", + "version": "27.0.0-next.0", "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 547ee19167cd..9d7ed17f8cec 100644 --- a/packages/jest-globals/package.json +++ b/packages/jest-globals/package.json @@ -1,6 +1,6 @@ { "name": "@jest/globals", - "version": "26.6.2", + "version": "27.0.0-next.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -17,9 +17,9 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/environment": "^26.6.2", - "@jest/types": "^26.6.2", - "expect": "^26.6.2" + "@jest/environment": "^27.0.0-next.1", + "@jest/types": "^27.0.0-next.1", + "expect": "^27.0.0-next.1" }, "publishConfig": { "access": "public" diff --git a/packages/jest-haste-map/package.json b/packages/jest-haste-map/package.json index b1737c013cb7..1e3ebec6bb75 100644 --- a/packages/jest-haste-map/package.json +++ b/packages/jest-haste-map/package.json @@ -1,6 +1,6 @@ { "name": "jest-haste-map", - "version": "26.6.2", + "version": "27.0.0-next.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,21 +14,21 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/types": "^26.6.2", + "@jest/types": "^27.0.0-next.1", "@types/graceful-fs": "^4.1.2", "@types/node": "*", "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", "graceful-fs": "^4.2.4", - "jest-regex-util": "^26.0.0", - "jest-serializer": "^26.6.2", - "jest-util": "^26.6.2", - "jest-worker": "^26.6.2", + "jest-regex-util": "^27.0.0-next.0", + "jest-serializer": "^27.0.0-next.0", + "jest-util": "^27.0.0-next.1", + "jest-worker": "^27.0.0-next.2", "micromatch": "^4.0.2", "walker": "^1.0.7" }, "devDependencies": { - "@jest/test-utils": "^26.6.2", + "@jest/test-utils": "^27.0.0-next.1", "@types/anymatch": "^1.3.1", "@types/fb-watchman": "^2.0.0", "@types/micromatch": "^4.0.0", diff --git a/packages/jest-haste-map/src/__tests__/index.test.js b/packages/jest-haste-map/src/__tests__/index.test.js index 4805292f7992..edf8570f5f29 100644 --- a/packages/jest-haste-map/src/__tests__/index.test.js +++ b/packages/jest-haste-map/src/__tests__/index.test.js @@ -19,8 +19,8 @@ jest.mock('child_process', () => ({ execSync() {}, })); -jest.mock('jest-worker', () => - jest.fn(worker => { +jest.mock('jest-worker', () => ({ + Worker: jest.fn(worker => { mockWorker = jest.fn((...args) => require(worker).worker(...args)); mockEnd = jest.fn(); @@ -29,7 +29,7 @@ jest.mock('jest-worker', () => worker: mockWorker, }; }), -); +})); jest.mock('../crawlers/node'); jest.mock('../crawlers/watchman', () => @@ -326,19 +326,19 @@ describe('HasteMap', () => { }); }); - it('ignores vcs directories with ignore pattern function', () => { - const config = {...defaultConfig, ignorePattern: f => /Kiwi/.test(f)}; - mockFs[path.join('/', 'project', 'fruits', 'Kiwi.js')] = ` + it('warn on ignore pattern except for regex', () => { + const config = {ignorePattern: 'Kiwi', ...defaultConfig}; + mockFs['/project/fruits/Kiwi.js'] = ` // Kiwi! `; - mockFs[path.join('/', 'project', 'fruits', '.git', 'fruit-history.js')] = ` - // test - `; - return new HasteMap(config).build().then(({hasteFS}) => { - expect(hasteFS.matchFiles(/Kiwi/)).toEqual([]); - expect(hasteFS.matchFiles('.git')).toEqual([]); - }); + try { + new HasteMap(config).build(); + } catch (err) { + expect(err.message).toBe( + 'jest-haste-map: the `ignorePattern` option must be a RegExp', + ); + } }); it('builds a haste map on a fresh cache', () => { @@ -1197,7 +1197,7 @@ describe('HasteMap', () => { }); it('distributes work across workers', () => { - const jestWorker = require('jest-worker'); + const jestWorker = require('jest-worker').Worker; const path = require('path'); const dependencyExtractor = path.join(__dirname, 'dependencyExtractor.js'); return new HasteMap({ diff --git a/packages/jest-haste-map/src/index.ts b/packages/jest-haste-map/src/index.ts index c6def19cb48c..b60466900d1d 100644 --- a/packages/jest-haste-map/src/index.ts +++ b/packages/jest-haste-map/src/index.ts @@ -16,7 +16,7 @@ import type {Stats} from 'graceful-fs'; import type {Config} from '@jest/types'; import {escapePathForRegex} from 'jest-regex-util'; import serializer from 'jest-serializer'; -import Worker from 'jest-worker'; +import {Worker} from 'jest-worker'; import HasteFS from './HasteFS'; import HasteModuleMap from './ModuleMap'; import H from './constants'; @@ -254,14 +254,8 @@ export default class HasteMap extends EventEmitter { options.ignorePattern.flags, ); } else { - const ignorePattern = options.ignorePattern; - const vcsIgnoreRegExp = new RegExp(VCS_DIRECTORIES); - this._options.ignorePattern = (filePath: string) => - vcsIgnoreRegExp.test(filePath) || ignorePattern(filePath); - - this._console.warn( - 'jest-haste-map: the `ignorePattern` options as a function is being ' + - 'deprecated. Provide a RegExp instead. See https://github.com/facebook/jest/pull/4063.', + throw new Error( + 'jest-haste-map: the `ignorePattern` option must be a RegExp', ); } } else { diff --git a/packages/jest-haste-map/src/watchers/RecrawlWarning.js b/packages/jest-haste-map/src/watchers/RecrawlWarning.js index c1b9c753aa0d..6596efd3fec9 100644 --- a/packages/jest-haste-map/src/watchers/RecrawlWarning.js +++ b/packages/jest-haste-map/src/watchers/RecrawlWarning.js @@ -15,6 +15,8 @@ class RecrawlWarning { return warning; } } + + return undefined; } static isRecrawlWarningDupe(warningMessage) { diff --git a/packages/jest-haste-map/src/watchers/common.js b/packages/jest-haste-map/src/watchers/common.js index d2c27cbc134f..514e94aa49a2 100644 --- a/packages/jest-haste-map/src/watchers/common.js +++ b/packages/jest-haste-map/src/watchers/common.js @@ -27,7 +27,7 @@ exports.ALL_EVENT = 'all'; * @public */ -exports.assignOptions = function(watcher, opts) { +exports.assignOptions = function (watcher, opts) { opts = opts || {}; watcher.globs = opts.glob || []; watcher.dot = opts.dot || false; @@ -56,12 +56,12 @@ exports.assignOptions = function(watcher, opts) { * @public */ -exports.isFileIncluded = function(globs, dot, doIgnore, relativePath) { +exports.isFileIncluded = function (globs, dot, doIgnore, relativePath) { if (doIgnore(relativePath)) { return false; } return globs.length - ? micromatch.some(relativePath, globs, { dot }) + ? micromatch.some(relativePath, globs, {dot}) : dot || micromatch.some(relativePath, '**/*'); }; @@ -76,13 +76,13 @@ exports.isFileIncluded = function(globs, dot, doIgnore, relativePath) { * @public */ -exports.recReaddir = function( +exports.recReaddir = function ( dir, dirCallback, fileCallback, endCallback, errorCallback, - ignored + ignored, ) { walker(dir) .filterDir(currentDir => !anymatch(ignored, currentDir)) diff --git a/packages/jest-haste-map/tsconfig.json b/packages/jest-haste-map/tsconfig.json index 9bec851aaddb..1174b5fae123 100644 --- a/packages/jest-haste-map/tsconfig.json +++ b/packages/jest-haste-map/tsconfig.json @@ -9,6 +9,7 @@ {"path": "../jest-serializer"}, {"path": "../jest-types"}, {"path": "../jest-util"}, - {"path": "../jest-worker"} + {"path": "../jest-worker"}, + {"path": "../test-utils"} ] } diff --git a/packages/jest-jasmine2/package.json b/packages/jest-jasmine2/package.json index 06d054c189e0..1a47ee184e52 100644 --- a/packages/jest-jasmine2/package.json +++ b/packages/jest-jasmine2/package.json @@ -1,6 +1,6 @@ { "name": "jest-jasmine2", - "version": "26.6.3", + "version": "27.0.0-next.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -15,22 +15,22 @@ }, "dependencies": { "@babel/traverse": "^7.1.0", - "@jest/environment": "^26.6.2", - "@jest/source-map": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", + "@jest/environment": "^27.0.0-next.1", + "@jest/source-map": "^27.0.0-next.0", + "@jest/test-result": "^27.0.0-next.1", + "@jest/types": "^27.0.0-next.1", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", - "expect": "^26.6.2", + "expect": "^27.0.0-next.1", "is-generator-fn": "^2.0.0", - "jest-each": "^26.6.2", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-runtime": "^26.6.3", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "pretty-format": "^26.6.2", + "jest-each": "^27.0.0-next.1", + "jest-matcher-utils": "^27.0.0-next.1", + "jest-message-util": "^27.0.0-next.1", + "jest-runtime": "^27.0.0-next.2", + "jest-snapshot": "^27.0.0-next.2", + "jest-util": "^27.0.0-next.1", + "pretty-format": "^27.0.0-next.1", "throat": "^5.0.0" }, "devDependencies": { diff --git a/packages/jest-jasmine2/src/index.ts b/packages/jest-jasmine2/src/index.ts index 7352ba8bbc56..88170ff7b543 100644 --- a/packages/jest-jasmine2/src/index.ts +++ b/packages/jest-jasmine2/src/index.ts @@ -86,10 +86,10 @@ export default async function jasmine2( environment.global.describe.skip = environment.global.xdescribe; environment.global.describe.only = environment.global.fdescribe; - if (config.timers === 'fake' || config.timers === 'legacy') { - environment.fakeTimers!.useFakeTimers(); - } else if (config.timers === 'modern') { + if (config.timers === 'fake' || config.timers === 'modern') { environment.fakeTimersModern!.useFakeTimers(); + } else if (config.timers === 'legacy') { + environment.fakeTimers!.useFakeTimers(); } env.beforeEach(() => { @@ -104,7 +104,7 @@ export default async function jasmine2( if (config.resetMocks) { runtime.resetAllMocks(); - if (config.timers === 'fake' || config.timers === 'legacy') { + if (config.timers === 'legacy') { environment.fakeTimers!.useFakeTimers(); } } diff --git a/packages/jest-leak-detector/package.json b/packages/jest-leak-detector/package.json index 0571872dfd04..c5922653868d 100644 --- a/packages/jest-leak-detector/package.json +++ b/packages/jest-leak-detector/package.json @@ -1,6 +1,6 @@ { "name": "jest-leak-detector", - "version": "26.6.2", + "version": "27.0.0-next.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,8 +14,8 @@ "./package.json": "./package.json" }, "dependencies": { - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" + "jest-get-type": "^27.0.0-next.0", + "pretty-format": "^27.0.0-next.1" }, "devDependencies": { "@types/weak-napi": "^2.0.0", diff --git a/packages/jest-leak-detector/tsconfig.json b/packages/jest-leak-detector/tsconfig.json index 3e70b10372b1..02131be76e97 100644 --- a/packages/jest-leak-detector/tsconfig.json +++ b/packages/jest-leak-detector/tsconfig.json @@ -5,6 +5,7 @@ "outDir": "build" }, "references": [ + {"path": "../jest-get-type"}, {"path": "../pretty-format"} ] } diff --git a/packages/jest-matcher-utils/package.json b/packages/jest-matcher-utils/package.json index 5deb3046deef..9ff57f44b674 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": "26.6.2", + "version": "27.0.0-next.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -19,12 +19,12 @@ }, "dependencies": { "chalk": "^4.0.0", - "jest-diff": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" + "jest-diff": "^27.0.0-next.1", + "jest-get-type": "^27.0.0-next.0", + "pretty-format": "^27.0.0-next.1" }, "devDependencies": { - "@jest/test-utils": "^26.6.2", + "@jest/test-utils": "^27.0.0-next.1", "@types/node": "*" }, "publishConfig": { diff --git a/packages/jest-message-util/package.json b/packages/jest-message-util/package.json index d3a325b8a6b6..af7b20d0add4 100644 --- a/packages/jest-message-util/package.json +++ b/packages/jest-message-util/package.json @@ -1,6 +1,6 @@ { "name": "jest-message-util", - "version": "26.6.2", + "version": "27.0.0-next.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -18,12 +18,12 @@ }, "dependencies": { "@babel/code-frame": "^7.0.0", - "@jest/types": "^26.6.2", + "@jest/types": "^27.0.0-next.1", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.4", "micromatch": "^4.0.2", - "pretty-format": "^26.6.2", + "pretty-format": "^27.0.0-next.1", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, diff --git a/packages/jest-mock/package.json b/packages/jest-mock/package.json index 8fc042f15d29..838199f8d07d 100644 --- a/packages/jest-mock/package.json +++ b/packages/jest-mock/package.json @@ -1,6 +1,6 @@ { "name": "jest-mock", - "version": "26.6.2", + "version": "27.0.0-next.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -10,7 +10,7 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" }, "dependencies": { - "@jest/types": "^26.6.2", + "@jest/types": "^27.0.0-next.1", "@types/node": "*" }, "license": "MIT", diff --git a/packages/jest-phabricator/package.json b/packages/jest-phabricator/package.json index f61aa66552d2..9924c7261935 100644 --- a/packages/jest-phabricator/package.json +++ b/packages/jest-phabricator/package.json @@ -1,6 +1,6 @@ { "name": "jest-phabricator", - "version": "26.6.2", + "version": "27.0.0-next.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -12,7 +12,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/test-result": "^26.6.2" + "@jest/test-result": "^27.0.0-next.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" diff --git a/packages/jest-regex-util/package.json b/packages/jest-regex-util/package.json index 4b882a4bbad8..b14889bd7a55 100644 --- a/packages/jest-regex-util/package.json +++ b/packages/jest-regex-util/package.json @@ -1,6 +1,6 @@ { "name": "jest-regex-util", - "version": "26.0.0", + "version": "27.0.0-next.0", "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 5501ad7ddcdf..a20bafc0cc1b 100644 --- a/packages/jest-repl/package.json +++ b/packages/jest-repl/package.json @@ -1,6 +1,6 @@ { "name": "jest-repl", - "version": "26.6.3", + "version": "27.0.0-next.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -12,27 +12,31 @@ "exports": { ".": "./build/index.js", "./package.json": "./package.json", - "./bin/jest-repl": "./bin/jest-repl.js" + "./bin/jest-repl": "./bin/jest-repl.js", + "./bin/jest-runtime-cli": "./bin/jest-runtime-cli.js" }, "dependencies": { - "@jest/console": "^26.6.2", - "@jest/environment": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", + "@jest/console": "^27.0.0-next.1", + "@jest/environment": "^27.0.0-next.1", + "@jest/transform": "^27.0.0-next.2", + "@jest/types": "^27.0.0-next.1", "chalk": "^4.0.0", - "jest-config": "^26.6.3", - "jest-runtime": "^26.6.3", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", + "jest-config": "^27.0.0-next.2", + "jest-runtime": "^27.0.0-next.2", + "jest-util": "^27.0.0-next.1", + "jest-validate": "^27.0.0-next.1", "repl": "^0.1.3", "yargs": "^16.0.3" }, "devDependencies": { - "@jest/test-utils": "^26.6.2", + "@jest/test-utils": "^27.0.0-next.1", "@types/yargs": "^15.0.0", "execa": "^5.0.0" }, - "bin": "./bin/jest-repl.js", + "bin": { + "jest-repl": "./bin/jest-repl.js", + "jest-runtime": "./bin/jest-runtime-cli.js" + }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" }, diff --git a/packages/jest-repl/src/cli/repl.ts b/packages/jest-repl/src/cli/repl.ts index 44f9acd99f69..8a68a190330e 100644 --- a/packages/jest-repl/src/cli/repl.ts +++ b/packages/jest-repl/src/cli/repl.ts @@ -15,6 +15,7 @@ import type {Transformer} from '@jest/transform'; import type {Config} from '@jest/types'; let transformer: Transformer; +let transformerConfig: unknown; const evalCommand: repl.REPLEval = ( cmd: string, @@ -37,6 +38,7 @@ const evalCommand: repl.REPLEval = ( supportsExportNamespaceFrom: false, supportsStaticESM: false, supportsTopLevelAwait: false, + transformerConfig, }, ); cmd = @@ -69,6 +71,7 @@ if (jestProjectConfig.transform) { for (let i = 0; i < jestProjectConfig.transform.length; i++) { if (new RegExp(jestProjectConfig.transform[i][0]).test('foobar.js')) { transformerPath = jestProjectConfig.transform[i][1]; + transformerConfig = jestProjectConfig.transform[i][2]; break; } } diff --git a/packages/jest-reporters/package.json b/packages/jest-reporters/package.json index 591ee08686e8..8dc5e88b3351 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": "26.6.2", + "version": "27.0.0-next.2", "main": "./build/index.js", "types": "./build/index.d.ts", "exports": { @@ -10,10 +10,10 @@ }, "dependencies": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", + "@jest/console": "^27.0.0-next.1", + "@jest/test-result": "^27.0.0-next.1", + "@jest/transform": "^27.0.0-next.2", + "@jest/types": "^27.0.0-next.1", "chalk": "^4.0.0", "collect-v8-coverage": "^1.0.0", "exit": "^0.1.2", @@ -24,10 +24,10 @@ "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.0.2", - "jest-haste-map": "^26.6.2", - "jest-resolve": "^26.6.2", - "jest-util": "^26.6.2", - "jest-worker": "^26.6.2", + "jest-haste-map": "^27.0.0-next.2", + "jest-resolve": "^27.0.0-next.2", + "jest-util": "^27.0.0-next.1", + "jest-worker": "^27.0.0-next.2", "slash": "^3.0.0", "source-map": "^0.6.0", "string-length": "^4.0.1", @@ -35,7 +35,7 @@ "v8-to-istanbul": "^7.0.0" }, "devDependencies": { - "@jest/test-utils": "^26.6.2", + "@jest/test-utils": "^27.0.0-next.1", "@types/exit": "^0.1.30", "@types/glob": "^7.1.1", "@types/graceful-fs": "^4.1.3", diff --git a/packages/jest-reporters/src/CoverageReporter.ts b/packages/jest-reporters/src/CoverageReporter.ts index 73687e1f77b5..034ab6ae9802 100644 --- a/packages/jest-reporters/src/CoverageReporter.ts +++ b/packages/jest-reporters/src/CoverageReporter.ts @@ -24,7 +24,7 @@ import type { } from '@jest/test-result'; import type {Config} from '@jest/types'; import {clearLine, isInteractive} from 'jest-util'; -import Worker from 'jest-worker'; +import {Worker} from 'jest-worker'; import BaseReporter from './BaseReporter'; import getWatermarks from './getWatermarks'; import type { diff --git a/packages/jest-reporters/tsconfig.json b/packages/jest-reporters/tsconfig.json index de566bfd2c4f..90e8ebceb1d5 100644 --- a/packages/jest-reporters/tsconfig.json +++ b/packages/jest-reporters/tsconfig.json @@ -9,6 +9,7 @@ {"path": "../jest-haste-map"}, {"path": "../jest-resolve"}, {"path": "../jest-test-result"}, + {"path": "../jest-transform"}, {"path": "../jest-types"}, {"path": "../jest-util"}, {"path": "../jest-worker"}, diff --git a/packages/jest-resolve-dependencies/package.json b/packages/jest-resolve-dependencies/package.json index d7171c06587a..04cb99070c45 100644 --- a/packages/jest-resolve-dependencies/package.json +++ b/packages/jest-resolve-dependencies/package.json @@ -1,6 +1,6 @@ { "name": "jest-resolve-dependencies", - "version": "26.6.3", + "version": "27.0.0-next.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,15 +14,15 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/types": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-snapshot": "^26.6.2" + "@jest/types": "^27.0.0-next.1", + "jest-regex-util": "^27.0.0-next.0", + "jest-snapshot": "^27.0.0-next.2" }, "devDependencies": { - "@jest/test-utils": "^26.6.2", - "jest-haste-map": "^26.6.2", - "jest-resolve": "^26.6.2", - "jest-runtime": "^26.6.3" + "@jest/test-utils": "^27.0.0-next.1", + "jest-haste-map": "^27.0.0-next.2", + "jest-resolve": "^27.0.0-next.2", + "jest-runtime": "^27.0.0-next.2" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" diff --git a/packages/jest-resolve-dependencies/tsconfig.json b/packages/jest-resolve-dependencies/tsconfig.json index 5d09fe96e244..433e2ed3f351 100644 --- a/packages/jest-resolve-dependencies/tsconfig.json +++ b/packages/jest-resolve-dependencies/tsconfig.json @@ -5,7 +5,10 @@ "outDir": "build" }, "references": [ + {"path": "../jest-haste-map"}, {"path": "../jest-regex-util"}, + {"path": "../jest-resolve"}, + {"path": "../jest-runtime"}, {"path": "../jest-snapshot"}, {"path": "../jest-types"}, {"path": "../test-utils"} diff --git a/packages/jest-resolve/package.json b/packages/jest-resolve/package.json index 84de400d22bf..12c22e9c23fd 100644 --- a/packages/jest-resolve/package.json +++ b/packages/jest-resolve/package.json @@ -1,6 +1,6 @@ { "name": "jest-resolve", - "version": "26.6.2", + "version": "27.0.0-next.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,19 +14,19 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/types": "^26.6.2", + "@jest/types": "^27.0.0-next.1", "chalk": "^4.0.0", "escalade": "^3.1.1", "graceful-fs": "^4.2.4", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^26.6.2", + "jest-util": "^27.0.0-next.1", "resolve": "^1.18.1", "slash": "^3.0.0" }, "devDependencies": { "@types/graceful-fs": "^4.1.3", "@types/resolve": "^1.17.0", - "jest-haste-map": "^26.6.2" + "jest-haste-map": "^27.0.0-next.2" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" diff --git a/packages/jest-resolve/tsconfig.json b/packages/jest-resolve/tsconfig.json index befa0d307f51..c134ea4e4c28 100644 --- a/packages/jest-resolve/tsconfig.json +++ b/packages/jest-resolve/tsconfig.json @@ -4,5 +4,9 @@ "rootDir": "src", "outDir": "build" }, - "references": [{"path": "../jest-types"}, {"path": "../jest-haste-map"}] + "references": [ + {"path": "../jest-haste-map"}, + {"path": "../jest-types"}, + {"path": "../jest-util"} + ] } diff --git a/packages/jest-runner/package.json b/packages/jest-runner/package.json index f4597cdb881c..bfea0f83e512 100644 --- a/packages/jest-runner/package.json +++ b/packages/jest-runner/package.json @@ -1,6 +1,6 @@ { "name": "jest-runner", - "version": "26.6.3", + "version": "27.0.0-next.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,25 +14,25 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/console": "^26.6.2", - "@jest/environment": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", + "@jest/console": "^27.0.0-next.1", + "@jest/environment": "^27.0.0-next.1", + "@jest/test-result": "^27.0.0-next.1", + "@jest/transform": "^27.0.0-next.2", + "@jest/types": "^27.0.0-next.1", "@types/node": "*", "chalk": "^4.0.0", "emittery": "^0.7.1", "exit": "^0.1.2", "graceful-fs": "^4.2.4", - "jest-config": "^26.6.3", - "jest-docblock": "^26.0.0", - "jest-haste-map": "^26.6.2", - "jest-leak-detector": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-resolve": "^26.6.2", - "jest-runtime": "^26.6.3", - "jest-util": "^26.6.2", - "jest-worker": "^26.6.2", + "jest-config": "^27.0.0-next.2", + "jest-docblock": "^27.0.0-next.0", + "jest-haste-map": "^27.0.0-next.2", + "jest-leak-detector": "^27.0.0-next.1", + "jest-message-util": "^27.0.0-next.1", + "jest-resolve": "^27.0.0-next.2", + "jest-runtime": "^27.0.0-next.2", + "jest-util": "^27.0.0-next.1", + "jest-worker": "^27.0.0-next.2", "source-map-support": "^0.5.6", "throat": "^5.0.0" }, @@ -40,7 +40,7 @@ "@types/exit": "^0.1.30", "@types/graceful-fs": "^4.1.2", "@types/source-map-support": "^0.5.0", - "jest-jasmine2": "^26.6.3" + "jest-jasmine2": "^27.0.0-next.2" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" diff --git a/packages/jest-runner/src/__tests__/testRunner.test.ts b/packages/jest-runner/src/__tests__/testRunner.test.ts index df266697abaf..16fd75e183ad 100644 --- a/packages/jest-runner/src/__tests__/testRunner.test.ts +++ b/packages/jest-runner/src/__tests__/testRunner.test.ts @@ -11,8 +11,8 @@ import TestRunner from '../index'; let mockWorkerFarm; -jest.mock('jest-worker', () => - jest.fn( +jest.mock('jest-worker', () => ({ + Worker: jest.fn( worker => (mockWorkerFarm = { end: jest.fn().mockResolvedValue({forceExited: false}), @@ -21,7 +21,7 @@ jest.mock('jest-worker', () => worker: jest.fn((data, callback) => require(worker)(data, callback)), }), ), -); +})); jest.mock('../testWorker', () => {}); diff --git a/packages/jest-runner/src/index.ts b/packages/jest-runner/src/index.ts index da911414832a..acc8139e1eec 100644 --- a/packages/jest-runner/src/index.ts +++ b/packages/jest-runner/src/index.ts @@ -12,7 +12,7 @@ import throat from 'throat'; import type {SerializableError, TestResult} from '@jest/test-result'; import type {Config} from '@jest/types'; import {deepCyclicCopy} from 'jest-util'; -import Worker, {PromiseWithCustomMessage} from 'jest-worker'; +import {PromiseWithCustomMessage, Worker} from 'jest-worker'; import runTest from './runTest'; import type {SerializableResolver, worker} from './testWorker'; import type { @@ -25,7 +25,6 @@ import type { TestRunnerContext, TestRunnerOptions, TestWatcher, - WatcherState, } from './types'; const TEST_WORKER_PATH = require.resolve('./testWorker'); @@ -239,7 +238,7 @@ export default class TestRunner { }; const onInterrupt = new Promise((_, reject) => { - watcher.on('change', (state: WatcherState) => { + watcher.on('change', state => { if (state.interrupted) { reject(new CancelRun()); } diff --git a/packages/jest-runner/src/types.ts b/packages/jest-runner/src/types.ts index 3d425c045f24..e87d1b126816 100644 --- a/packages/jest-runner/src/types.ts +++ b/packages/jest-runner/src/types.ts @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import type {EventEmitter} from 'events'; +import type {Typed as EmitteryTyped} from 'emittery'; import type {JestEnvironment} from '@jest/environment'; import type { AssertionResult, @@ -79,10 +79,8 @@ export type TestRunnerSerializedContext = { }; // TODO: Should live in `@jest/core` or `jest-watcher` -export type WatcherState = { - interrupted: boolean; -}; -export interface TestWatcher extends EventEmitter { +type WatcherState = {interrupted: boolean}; +export interface TestWatcher extends EmitteryTyped<{change: WatcherState}> { state: WatcherState; setState(state: WatcherState): void; isInterrupted(): boolean; diff --git a/packages/jest-runner/tsconfig.json b/packages/jest-runner/tsconfig.json index d89ad8ced039..7cb8d3a00c88 100644 --- a/packages/jest-runner/tsconfig.json +++ b/packages/jest-runner/tsconfig.json @@ -17,7 +17,7 @@ {"path": "../jest-test-result"}, {"path": "../jest-transform"}, {"path": "../jest-types"}, - {"path": "../jest-worker"}, - {"path": "../jest-util"} + {"path": "../jest-util"}, + {"path": "../jest-worker"} ] } diff --git a/packages/jest-runtime/package.json b/packages/jest-runtime/package.json index 97f3a5078b93..f493baeba8db 100644 --- a/packages/jest-runtime/package.json +++ b/packages/jest-runtime/package.json @@ -1,6 +1,6 @@ { "name": "jest-runtime", - "version": "26.6.3", + "version": "27.0.0-next.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -11,18 +11,17 @@ "types": "./build/index.d.ts", "exports": { ".": "./build/index.js", - "./package.json": "./package.json", - "./bin/jest-runtime": "./bin/jest-runtime.js" + "./package.json": "./package.json" }, "dependencies": { - "@jest/console": "^26.6.2", - "@jest/environment": "^26.6.2", - "@jest/fake-timers": "^26.6.2", - "@jest/globals": "^26.6.2", - "@jest/source-map": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", + "@jest/console": "^27.0.0-next.1", + "@jest/environment": "^27.0.0-next.1", + "@jest/fake-timers": "^27.0.0-next.1", + "@jest/globals": "^27.0.0-next.1", + "@jest/source-map": "^27.0.0-next.0", + "@jest/test-result": "^27.0.0-next.1", + "@jest/transform": "^27.0.0-next.2", + "@jest/types": "^27.0.0-next.1", "@types/yargs": "^15.0.0", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", @@ -30,29 +29,28 @@ "exit": "^0.1.2", "glob": "^7.1.3", "graceful-fs": "^4.2.4", - "jest-haste-map": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-mock": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-resolve": "^26.6.2", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", + "jest-haste-map": "^27.0.0-next.2", + "jest-message-util": "^27.0.0-next.1", + "jest-mock": "^27.0.0-next.1", + "jest-regex-util": "^27.0.0-next.0", + "jest-resolve": "^27.0.0-next.2", + "jest-snapshot": "^27.0.0-next.2", + "jest-util": "^27.0.0-next.1", + "jest-validate": "^27.0.0-next.1", "slash": "^3.0.0", "strip-bom": "^4.0.0", "yargs": "^16.0.3" }, "devDependencies": { - "@jest/test-utils": "^26.6.2", + "@jest/test-utils": "^27.0.0-next.1", "@types/exit": "^0.1.30", "@types/glob": "^7.1.1", "@types/graceful-fs": "^4.1.2", "@types/node": "^14.0.27", "execa": "^5.0.0", - "jest-environment-node": "^26.6.2", + "jest-environment-node": "^27.0.0-next.1", "jest-snapshot-serializer-raw": "^1.1.0" }, - "bin": "./bin/jest-runtime.js", "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" }, diff --git a/packages/jest-runtime/src/index.ts b/packages/jest-runtime/src/index.ts index a07e5c234c14..0b60667ccad8 100644 --- a/packages/jest-runtime/src/index.ts +++ b/packages/jest-runtime/src/index.ts @@ -155,44 +155,44 @@ const supportsTopLevelAwait = export default class Runtime { private readonly _cacheFS: StringMap; - private _config: Config.ProjectConfig; - private _coverageOptions: ShouldInstrumentOptions; + private readonly _config: Config.ProjectConfig; + private readonly _coverageOptions: ShouldInstrumentOptions; private _currentlyExecutingModulePath: string; - private _environment: JestEnvironment; - private _explicitShouldMock: BooleanMap; + private readonly _environment: JestEnvironment; + private readonly _explicitShouldMock: BooleanMap; private _fakeTimersImplementation: | LegacyFakeTimers | ModernFakeTimers | null; - private _internalModuleRegistry: ModuleRegistry; + private readonly _internalModuleRegistry: ModuleRegistry; private _isCurrentlyExecutingManualMock: string | null; private _mainModule: Module | null; - private _mockFactories: Map unknown>; - private _mockMetaDataCache: Map< + private readonly _mockFactories: Map unknown>; + private readonly _mockMetaDataCache: Map< string, MockFunctionMetadata> >; private _mockRegistry: Map; private _isolatedMockRegistry: Map | null; - private _moduleMocker: ModuleMocker; + private readonly _moduleMocker: ModuleMocker; private _isolatedModuleRegistry: ModuleRegistry | null; private _moduleRegistry: ModuleRegistry; - private _esmoduleRegistry: Map; - private _testPath: Config.Path | undefined; - private _resolver: Resolver; + private readonly _esmoduleRegistry: Map; + private readonly _testPath: Config.Path | undefined; + private readonly _resolver: Resolver; private _shouldAutoMock: boolean; - private _shouldMockModuleCache: BooleanMap; - private _shouldUnmockTransitiveDependenciesCache: BooleanMap; - private _sourceMapRegistry: StringMap; - private _scriptTransformer: ScriptTransformer; - private _fileTransforms: Map; + private readonly _shouldMockModuleCache: BooleanMap; + private readonly _shouldUnmockTransitiveDependenciesCache: BooleanMap; + private readonly _sourceMapRegistry: StringMap; + private readonly _scriptTransformer: ScriptTransformer; + private readonly _fileTransforms: Map; private _v8CoverageInstrumenter: CoverageInstrumenter | undefined; private _v8CoverageResult: V8Coverage | undefined; - private _transitiveShouldMock: BooleanMap; + private readonly _transitiveShouldMock: BooleanMap; private _unmockList: RegExp | undefined; - private _virtualMocks: BooleanMap; + private readonly _virtualMocks: BooleanMap; private _moduleImplementation?: typeof nativeModule.Module; - private jestObjectCaches: Map; + private readonly jestObjectCaches: Map; private jestGlobals?: JestGlobals; constructor( @@ -243,9 +243,9 @@ export default class Runtime { this._transitiveShouldMock = new Map(); this._fakeTimersImplementation = - config.timers === 'modern' - ? this._environment.fakeTimersModern - : this._environment.fakeTimers; + config.timers === 'legacy' + ? this._environment.fakeTimers + : this._environment.fakeTimersModern; this._unmockList = unmockRegExpCache.get(config); if (!this._unmockList && config.unmockedModulePathPatterns) { @@ -924,11 +924,6 @@ export default class Runtime { }); } - // TODO - remove in Jest 27 - getSourceMapInfo(_coveredFiles: Set): Record { - return {}; - } - getSourceMaps(): SourceMapRegistry { return fromEntries(this._sourceMapRegistry); } @@ -1563,11 +1558,11 @@ export default class Runtime { return this._fakeTimersImplementation!; }; - const useFakeTimers = (type: string = 'legacy') => { - if (type === 'modern') { - this._fakeTimersImplementation = this._environment.fakeTimersModern; - } else { + const useFakeTimers: Jest['useFakeTimers'] = (type = 'modern') => { + if (type === 'legacy') { this._fakeTimersImplementation = this._environment.fakeTimers; + } else { + this._fakeTimersImplementation = this._environment.fakeTimersModern; } this._fakeTimersImplementation!.useFakeTimers(); return jestObject; diff --git a/packages/jest-runtime/tsconfig.json b/packages/jest-runtime/tsconfig.json index f02568529755..74421a130e70 100644 --- a/packages/jest-runtime/tsconfig.json +++ b/packages/jest-runtime/tsconfig.json @@ -22,7 +22,6 @@ {"path": "../jest-types"}, {"path": "../jest-util"}, {"path": "../jest-validate"}, - {"path": "../pretty-format"}, {"path": "../test-utils"} ] } diff --git a/packages/jest-serializer/package.json b/packages/jest-serializer/package.json index e2364ca00945..740eba117370 100644 --- a/packages/jest-serializer/package.json +++ b/packages/jest-serializer/package.json @@ -1,6 +1,6 @@ { "name": "jest-serializer", - "version": "26.6.2", + "version": "27.0.0-next.0", "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 f45f0df7c946..7454f3ef5030 100644 --- a/packages/jest-snapshot/package.json +++ b/packages/jest-snapshot/package.json @@ -1,6 +1,6 @@ { "name": "jest-snapshot", - "version": "26.6.2", + "version": "27.0.0-next.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -19,21 +19,21 @@ "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/traverse": "^7.7.2", "@babel/types": "^7.0.0", - "@jest/types": "^26.6.2", + "@jest/types": "^27.0.0-next.1", "@types/babel__traverse": "^7.0.4", "@types/prettier": "^2.1.5", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^26.6.2", + "expect": "^27.0.0-next.1", "graceful-fs": "^4.2.4", - "jest-diff": "^26.6.2", - "jest-get-type": "^26.3.0", - "jest-haste-map": "^26.6.2", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-resolve": "^26.6.2", + "jest-diff": "^27.0.0-next.1", + "jest-get-type": "^27.0.0-next.0", + "jest-haste-map": "^27.0.0-next.2", + "jest-matcher-utils": "^27.0.0-next.1", + "jest-message-util": "^27.0.0-next.1", + "jest-resolve": "^27.0.0-next.2", "natural-compare": "^1.4.0", - "pretty-format": "^26.6.2", + "pretty-format": "^27.0.0-next.1", "semver": "^7.3.2" }, "devDependencies": { @@ -41,7 +41,7 @@ "@babel/preset-flow": "^7.7.2", "@babel/preset-react": "^7.7.2", "@babel/traverse": "^7.3.4", - "@jest/test-utils": "^26.6.2", + "@jest/test-utils": "^27.0.0-next.1", "@types/graceful-fs": "^4.1.3", "@types/natural-compare": "^1.4.0", "@types/semver": "^7.1.0", diff --git a/packages/jest-source-map/package.json b/packages/jest-source-map/package.json index 6b4812e68af4..5c7cff48a296 100644 --- a/packages/jest-source-map/package.json +++ b/packages/jest-source-map/package.json @@ -1,6 +1,6 @@ { "name": "@jest/source-map", - "version": "26.6.2", + "version": "27.0.0-next.0", "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 3b62c8900969..65b15d7dabff 100644 --- a/packages/jest-test-result/package.json +++ b/packages/jest-test-result/package.json @@ -1,6 +1,6 @@ { "name": "@jest/test-result", - "version": "26.6.2", + "version": "27.0.0-next.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,8 +14,8 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/console": "^26.6.2", - "@jest/types": "^26.6.2", + "@jest/console": "^27.0.0-next.1", + "@jest/types": "^27.0.0-next.1", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" }, diff --git a/packages/jest-test-result/src/helpers.ts b/packages/jest-test-result/src/helpers.ts index 33233f6cc32f..a749a8c33d53 100644 --- a/packages/jest-test-result/src/helpers.ts +++ b/packages/jest-test-result/src/helpers.ts @@ -72,7 +72,6 @@ export const buildFailureTestResult = ( unmatched: 0, updated: 0, }, - sourceMaps: {}, testExecError: err, testFilePath: testPath, testResults: [], diff --git a/packages/jest-test-result/src/types.ts b/packages/jest-test-result/src/types.ts index d31721d6b231..b75b3846a4c4 100644 --- a/packages/jest-test-result/src/types.ts +++ b/packages/jest-test-result/src/types.ts @@ -113,10 +113,6 @@ export type TestResult = { unmatched: number; updated: number; }; - // TODO - Remove in Jest 26 - sourceMaps?: { - [sourcePath: string]: string; - }; testExecError?: SerializableError; testFilePath: Config.Path; testResults: Array; diff --git a/packages/jest-test-sequencer/package.json b/packages/jest-test-sequencer/package.json index deae0e53b020..7d40f8b2d40f 100644 --- a/packages/jest-test-sequencer/package.json +++ b/packages/jest-test-sequencer/package.json @@ -1,6 +1,6 @@ { "name": "@jest/test-sequencer", - "version": "26.6.3", + "version": "27.0.0-next.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,11 +14,11 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/test-result": "^26.6.2", + "@jest/test-result": "^27.0.0-next.1", "graceful-fs": "^4.2.4", - "jest-haste-map": "^26.6.2", - "jest-runner": "^26.6.3", - "jest-runtime": "^26.6.3" + "jest-haste-map": "^27.0.0-next.2", + "jest-runner": "^27.0.0-next.2", + "jest-runtime": "^27.0.0-next.2" }, "devDependencies": { "@types/graceful-fs": "^4.1.3" diff --git a/packages/jest-test-sequencer/tsconfig.json b/packages/jest-test-sequencer/tsconfig.json index 78fc3a6be9ed..fd37f0a8849a 100644 --- a/packages/jest-test-sequencer/tsconfig.json +++ b/packages/jest-test-sequencer/tsconfig.json @@ -7,7 +7,7 @@ "references": [ {"path": "../jest-haste-map"}, {"path": "../jest-runner"}, - {"path": "../jest-test-result"}, - {"path": "../jest-types"} + {"path": "../jest-runtime"}, + {"path": "../jest-test-result"} ] } diff --git a/packages/jest-transform/package.json b/packages/jest-transform/package.json index 801960774590..3bb4cec021f4 100644 --- a/packages/jest-transform/package.json +++ b/packages/jest-transform/package.json @@ -1,6 +1,6 @@ { "name": "@jest/transform", - "version": "26.6.2", + "version": "27.0.0-next.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -15,15 +15,15 @@ }, "dependencies": { "@babel/core": "^7.1.0", - "@jest/types": "^26.6.2", + "@jest/types": "^27.0.0-next.1", "babel-plugin-istanbul": "^6.0.0", "chalk": "^4.0.0", "convert-source-map": "^1.4.0", "fast-json-stable-stringify": "^2.0.0", "graceful-fs": "^4.2.4", - "jest-haste-map": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-util": "^26.6.2", + "jest-haste-map": "^27.0.0-next.2", + "jest-regex-util": "^27.0.0-next.0", + "jest-util": "^27.0.0-next.1", "micromatch": "^4.0.2", "pirates": "^4.0.1", "slash": "^3.0.0", @@ -31,7 +31,7 @@ "write-file-atomic": "^3.0.0" }, "devDependencies": { - "@jest/test-utils": "^26.6.2", + "@jest/test-utils": "^27.0.0-next.1", "@types/babel__core": "^7.1.0", "@types/convert-source-map": "^1.5.1", "@types/fast-json-stable-stringify": "^2.0.0", diff --git a/packages/jest-transform/src/ScriptTransformer.ts b/packages/jest-transform/src/ScriptTransformer.ts index f519cc67d66c..9e5704517000 100644 --- a/packages/jest-transform/src/ScriptTransformer.ts +++ b/packages/jest-transform/src/ScriptTransformer.ts @@ -64,11 +64,14 @@ async function waitForPromiseWithCleanup( } export default class ScriptTransformer { - private _cache: ProjectCache; + private readonly _cache: ProjectCache; private readonly _cacheFS: StringMap; private readonly _config: Config.ProjectConfig; - private _transformCache: Map; - private _transformConfigCache: Map; + private readonly _transformCache: Map< + Config.Path, + {transformer: Transformer; transformerConfig: unknown} + >; + private readonly _transformConfigCache: Map; constructor( config: Config.ProjectConfig, @@ -102,7 +105,8 @@ export default class ScriptTransformer { options: ReducedTransformOptions, ): string { const configString = this._cache.configString; - const transformer = this._getTransformer(filename); + const {transformer, transformerConfig = {}} = + this._getTransformer(filename) || {}; if (transformer && typeof transformer.getCacheKey === 'function') { return createHash('md5') @@ -112,6 +116,7 @@ export default class ScriptTransformer { cacheFS: this._cacheFS, config: this._config, configString, + transformerConfig, }), ) .update(CACHE_VERSION) @@ -181,28 +186,30 @@ export default class ScriptTransformer { return null; } - const transformer = this._transformCache.get(transformPath); - if (transformer) { - return transformer; + const cached = this._transformCache.get(transformPath); + if (cached) { + return cached; } - let transform: Transformer = require(transformPath); + let transformer: Transformer = require(transformPath); - if (!transform) { + if (!transformer) { throw new TypeError('Jest: a transform must export something.'); } - const transformerConfig = this._transformConfigCache.get(transformPath); - if (typeof transform.createTransformer === 'function') { - transform = transform.createTransformer(transformerConfig); + const transformerConfig = + this._transformConfigCache.get(transformPath) || {}; + if (typeof transformer.createTransformer === 'function') { + transformer = transformer.createTransformer(transformerConfig); } - if (typeof transform.process !== 'function') { + if (typeof transformer.process !== 'function') { throw new TypeError( 'Jest: a transform must export a `process` function.', ); } - this._transformCache.set(transformPath, transform); + const res = {transformer, transformerConfig}; + this._transformCache.set(transformPath, res); - return transform; + return res; } private _instrumentFile( @@ -262,18 +269,19 @@ export default class ScriptTransformer { options: ReducedTransformOptions, ): TransformResult { const filename = tryRealpath(filepath); - const transform = this._getTransformer(filename); + const {transformer, transformerConfig = {}} = + this._getTransformer(filename) || {}; const cacheFilePath = this._getFileCachePath(filename, content, options); let sourceMapPath: Config.Path | null = cacheFilePath + '.map'; // Ignore cache if `config.cache` is set (--no-cache) let code = this._config.cache ? readCodeCacheFile(cacheFilePath) : null; - const shouldCallTransform = transform && this.shouldTransform(filename); + const shouldCallTransform = transformer && this.shouldTransform(filename); // That means that the transform has a custom instrumentation // logic and will handle it based on `config.collectCoverage` option const transformWillInstrument = - shouldCallTransform && transform && transform.canInstrument; + shouldCallTransform && transformer && transformer.canInstrument; if (code) { // This is broken: we return the code, and a path for the source map @@ -292,12 +300,13 @@ export default class ScriptTransformer { map: null, }; - if (transform && shouldCallTransform) { - const processed = transform.process(content, filename, { + if (transformer && shouldCallTransform) { + const processed = transformer.process(content, filename, { ...options, cacheFS: this._cacheFS, config: this._config, configString: this._cache.configString, + transformerConfig, }); if (typeof processed === 'string') { @@ -343,7 +352,7 @@ export default class ScriptTransformer { * */ const shouldEmitSourceMaps = - (transform != null && map != null) || transform == null; + (transformer != null && map != null) || transformer == null; const instrumented = this._instrumentFile( filename, diff --git a/packages/jest-transform/src/__tests__/script_transformer.test.ts b/packages/jest-transform/src/__tests__/ScriptTransformer.test.ts similarity index 99% rename from packages/jest-transform/src/__tests__/script_transformer.test.ts rename to packages/jest-transform/src/__tests__/ScriptTransformer.test.ts index 7be705772ae0..88f4faddc9d7 100644 --- a/packages/jest-transform/src/__tests__/script_transformer.test.ts +++ b/packages/jest-transform/src/__tests__/ScriptTransformer.test.ts @@ -663,7 +663,10 @@ describe('ScriptTransformer', () => { }); it('passes expected transform options to getCacheKey', () => { - config = {...config, transform: [['\\.js$', 'test_preprocessor', {}]]}; + config = { + ...config, + transform: [['\\.js$', 'test_preprocessor', {configKey: 'configValue'}]], + }; const scriptTransformer = new ScriptTransformer(config); scriptTransformer.transform( @@ -779,8 +782,8 @@ describe('ScriptTransformer', () => { scriptTransformer.transform(fileName2, getCoverageOptions()); - expect(testPreprocessor.getCacheKey.mock.calls[0][2].cacheFS).toBeDefined() - expect(testPreprocessor.process.mock.calls[0][2].cacheFS).toBeDefined() + expect(testPreprocessor.getCacheKey.mock.calls[0][2].cacheFS).toBeDefined(); + expect(testPreprocessor.process.mock.calls[0][2].cacheFS).toBeDefined(); expect(fs.readFileSync).toHaveBeenCalledTimes(1); expect(fs.readFileSync).toBeCalledWith(fileName1, 'utf8'); }); diff --git a/packages/jest-transform/src/__tests__/__snapshots__/script_transformer.test.ts.snap b/packages/jest-transform/src/__tests__/__snapshots__/ScriptTransformer.test.ts.snap similarity index 96% rename from packages/jest-transform/src/__tests__/__snapshots__/script_transformer.test.ts.snap rename to packages/jest-transform/src/__tests__/__snapshots__/ScriptTransformer.test.ts.snap index 4f4ad1509f15..453952e23747 100644 --- a/packages/jest-transform/src/__tests__/__snapshots__/script_transformer.test.ts.snap +++ b/packages/jest-transform/src/__tests__/__snapshots__/ScriptTransformer.test.ts.snap @@ -72,7 +72,9 @@ exports[`ScriptTransformer passes expected transform options to getCacheKey 1`] Array [ "\\\\.js$", "test_preprocessor", - Object {}, + Object { + "configKey": "configValue", + }, ], ], "transformIgnorePatterns": Array [ @@ -81,13 +83,16 @@ exports[`ScriptTransformer passes expected transform options to getCacheKey 1`] "unmockedModulePathPatterns": undefined, "watchPathIgnorePatterns": Array [], }, - "configString": "{\\"automock\\":false,\\"cache\\":true,\\"cacheDirectory\\":\\"/cache/\\",\\"clearMocks\\":false,\\"coveragePathIgnorePatterns\\":[],\\"cwd\\":\\"/test_root_dir/\\",\\"detectLeaks\\":false,\\"detectOpenHandles\\":false,\\"errorOnDeprecated\\":false,\\"extensionsToTreatAsEsm\\":[],\\"extraGlobals\\":[],\\"forceCoverageMatch\\":[],\\"globals\\":{},\\"haste\\":{},\\"injectGlobals\\":true,\\"moduleDirectories\\":[],\\"moduleFileExtensions\\":[\\"js\\"],\\"moduleLoader\\":\\"/test_module_loader_path\\",\\"moduleNameMapper\\":[],\\"modulePathIgnorePatterns\\":[],\\"modulePaths\\":[],\\"name\\":\\"test\\",\\"prettierPath\\":\\"prettier\\",\\"resetMocks\\":false,\\"resetModules\\":false,\\"restoreMocks\\":false,\\"rootDir\\":\\"/\\",\\"roots\\":[],\\"runner\\":\\"jest-runner\\",\\"setupFiles\\":[],\\"setupFilesAfterEnv\\":[],\\"skipFilter\\":false,\\"skipNodeResolution\\":false,\\"slowTestThreshold\\":5,\\"snapshotSerializers\\":[],\\"testEnvironment\\":\\"node\\",\\"testEnvironmentOptions\\":{},\\"testLocationInResults\\":false,\\"testMatch\\":[],\\"testPathIgnorePatterns\\":[],\\"testRegex\\":[\\"\\\\\\\\.test\\\\\\\\.js$\\"],\\"testRunner\\":\\"jest-circus/runner\\",\\"testURL\\":\\"http://localhost\\",\\"timers\\":\\"real\\",\\"transform\\":[[\\"\\\\\\\\.js$\\",\\"test_preprocessor\\",{}]],\\"transformIgnorePatterns\\":[\\"/node_modules/\\"],\\"watchPathIgnorePatterns\\":[]}", + "configString": "{\\"automock\\":false,\\"cache\\":true,\\"cacheDirectory\\":\\"/cache/\\",\\"clearMocks\\":false,\\"coveragePathIgnorePatterns\\":[],\\"cwd\\":\\"/test_root_dir/\\",\\"detectLeaks\\":false,\\"detectOpenHandles\\":false,\\"errorOnDeprecated\\":false,\\"extensionsToTreatAsEsm\\":[],\\"extraGlobals\\":[],\\"forceCoverageMatch\\":[],\\"globals\\":{},\\"haste\\":{},\\"injectGlobals\\":true,\\"moduleDirectories\\":[],\\"moduleFileExtensions\\":[\\"js\\"],\\"moduleLoader\\":\\"/test_module_loader_path\\",\\"moduleNameMapper\\":[],\\"modulePathIgnorePatterns\\":[],\\"modulePaths\\":[],\\"name\\":\\"test\\",\\"prettierPath\\":\\"prettier\\",\\"resetMocks\\":false,\\"resetModules\\":false,\\"restoreMocks\\":false,\\"rootDir\\":\\"/\\",\\"roots\\":[],\\"runner\\":\\"jest-runner\\",\\"setupFiles\\":[],\\"setupFilesAfterEnv\\":[],\\"skipFilter\\":false,\\"skipNodeResolution\\":false,\\"slowTestThreshold\\":5,\\"snapshotSerializers\\":[],\\"testEnvironment\\":\\"node\\",\\"testEnvironmentOptions\\":{},\\"testLocationInResults\\":false,\\"testMatch\\":[],\\"testPathIgnorePatterns\\":[],\\"testRegex\\":[\\"\\\\\\\\.test\\\\\\\\.js$\\"],\\"testRunner\\":\\"jest-circus/runner\\",\\"testURL\\":\\"http://localhost\\",\\"timers\\":\\"real\\",\\"transform\\":[[\\"\\\\\\\\.js$\\",\\"test_preprocessor\\",{\\"configKey\\":\\"configValue\\"}]],\\"transformIgnorePatterns\\":[\\"/node_modules/\\"],\\"watchPathIgnorePatterns\\":[]}", "coverageProvider": "babel", "instrument": true, "supportsDynamicImport": false, "supportsExportNamespaceFrom": false, "supportsStaticESM": false, "supportsTopLevelAwait": false, + "transformerConfig": Object { + "configKey": "configValue", + }, }, ], ], @@ -256,7 +261,7 @@ exports[`ScriptTransformer uses multiple preprocessors 1`] = ` const TRANSFORMED = { filename: '/fruits/banana.js', script: 'module.exports = "banana";', - config: '{"collectCoverage":false,"collectCoverageFrom":[],"coverageProvider":"babel","supportsDynamicImport":false,"supportsExportNamespaceFrom":false,"supportsStaticESM":false,"supportsTopLevelAwait":false,"instrument":false,"cacheFS":{},"config":{"automock":false,"cache":true,"cacheDirectory":"/cache/","clearMocks":false,"coveragePathIgnorePatterns":[],"cwd":"/test_root_dir/","detectLeaks":false,"detectOpenHandles":false,"errorOnDeprecated":false,"extensionsToTreatAsEsm":[],"extraGlobals":[],"forceCoverageMatch":[],"globals":{},"haste":{},"injectGlobals":true,"moduleDirectories":[],"moduleFileExtensions":["js"],"moduleLoader":"/test_module_loader_path","moduleNameMapper":[],"modulePathIgnorePatterns":[],"modulePaths":[],"name":"test","prettierPath":"prettier","resetMocks":false,"resetModules":false,"restoreMocks":false,"rootDir":"/","roots":[],"runner":"jest-runner","setupFiles":[],"setupFilesAfterEnv":[],"skipFilter":false,"skipNodeResolution":false,"slowTestThreshold":5,"snapshotSerializers":[],"testEnvironment":"node","testEnvironmentOptions":{},"testLocationInResults":false,"testMatch":[],"testPathIgnorePatterns":[],"testRegex":["\\\\.test\\\\.js$"],"testRunner":"jest-circus/runner","testURL":"http://localhost","timers":"real","transform":[["\\\\.js$","test_preprocessor",{}],["\\\\.css$","css-preprocessor",{}]],"transformIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":[]},"configString":"{\\"automock\\":false,\\"cache\\":true,\\"cacheDirectory\\":\\"/cache/\\",\\"clearMocks\\":false,\\"coveragePathIgnorePatterns\\":[],\\"cwd\\":\\"/test_root_dir/\\",\\"detectLeaks\\":false,\\"detectOpenHandles\\":false,\\"errorOnDeprecated\\":false,\\"extensionsToTreatAsEsm\\":[],\\"extraGlobals\\":[],\\"forceCoverageMatch\\":[],\\"globals\\":{},\\"haste\\":{},\\"injectGlobals\\":true,\\"moduleDirectories\\":[],\\"moduleFileExtensions\\":[\\"js\\"],\\"moduleLoader\\":\\"/test_module_loader_path\\",\\"moduleNameMapper\\":[],\\"modulePathIgnorePatterns\\":[],\\"modulePaths\\":[],\\"name\\":\\"test\\",\\"prettierPath\\":\\"prettier\\",\\"resetMocks\\":false,\\"resetModules\\":false,\\"restoreMocks\\":false,\\"rootDir\\":\\"/\\",\\"roots\\":[],\\"runner\\":\\"jest-runner\\",\\"setupFiles\\":[],\\"setupFilesAfterEnv\\":[],\\"skipFilter\\":false,\\"skipNodeResolution\\":false,\\"slowTestThreshold\\":5,\\"snapshotSerializers\\":[],\\"testEnvironment\\":\\"node\\",\\"testEnvironmentOptions\\":{},\\"testLocationInResults\\":false,\\"testMatch\\":[],\\"testPathIgnorePatterns\\":[],\\"testRegex\\":[\\"\\\\\\\\.test\\\\\\\\.js$\\"],\\"testRunner\\":\\"jest-circus/runner\\",\\"testURL\\":\\"http://localhost\\",\\"timers\\":\\"real\\",\\"transform\\":[[\\"\\\\\\\\.js$\\",\\"test_preprocessor\\",{}],[\\"\\\\\\\\.css$\\",\\"css-preprocessor\\",{}]],\\"transformIgnorePatterns\\":[\\"/node_modules/\\"],\\"watchPathIgnorePatterns\\":[]}"}', + config: '{"collectCoverage":false,"collectCoverageFrom":[],"coverageProvider":"babel","supportsDynamicImport":false,"supportsExportNamespaceFrom":false,"supportsStaticESM":false,"supportsTopLevelAwait":false,"instrument":false,"cacheFS":{},"config":{"automock":false,"cache":true,"cacheDirectory":"/cache/","clearMocks":false,"coveragePathIgnorePatterns":[],"cwd":"/test_root_dir/","detectLeaks":false,"detectOpenHandles":false,"errorOnDeprecated":false,"extensionsToTreatAsEsm":[],"extraGlobals":[],"forceCoverageMatch":[],"globals":{},"haste":{},"injectGlobals":true,"moduleDirectories":[],"moduleFileExtensions":["js"],"moduleLoader":"/test_module_loader_path","moduleNameMapper":[],"modulePathIgnorePatterns":[],"modulePaths":[],"name":"test","prettierPath":"prettier","resetMocks":false,"resetModules":false,"restoreMocks":false,"rootDir":"/","roots":[],"runner":"jest-runner","setupFiles":[],"setupFilesAfterEnv":[],"skipFilter":false,"skipNodeResolution":false,"slowTestThreshold":5,"snapshotSerializers":[],"testEnvironment":"node","testEnvironmentOptions":{},"testLocationInResults":false,"testMatch":[],"testPathIgnorePatterns":[],"testRegex":["\\\\.test\\\\.js$"],"testRunner":"jest-circus/runner","testURL":"http://localhost","timers":"real","transform":[["\\\\.js$","test_preprocessor",{}],["\\\\.css$","css-preprocessor",{}]],"transformIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":[]},"configString":"{\\"automock\\":false,\\"cache\\":true,\\"cacheDirectory\\":\\"/cache/\\",\\"clearMocks\\":false,\\"coveragePathIgnorePatterns\\":[],\\"cwd\\":\\"/test_root_dir/\\",\\"detectLeaks\\":false,\\"detectOpenHandles\\":false,\\"errorOnDeprecated\\":false,\\"extensionsToTreatAsEsm\\":[],\\"extraGlobals\\":[],\\"forceCoverageMatch\\":[],\\"globals\\":{},\\"haste\\":{},\\"injectGlobals\\":true,\\"moduleDirectories\\":[],\\"moduleFileExtensions\\":[\\"js\\"],\\"moduleLoader\\":\\"/test_module_loader_path\\",\\"moduleNameMapper\\":[],\\"modulePathIgnorePatterns\\":[],\\"modulePaths\\":[],\\"name\\":\\"test\\",\\"prettierPath\\":\\"prettier\\",\\"resetMocks\\":false,\\"resetModules\\":false,\\"restoreMocks\\":false,\\"rootDir\\":\\"/\\",\\"roots\\":[],\\"runner\\":\\"jest-runner\\",\\"setupFiles\\":[],\\"setupFilesAfterEnv\\":[],\\"skipFilter\\":false,\\"skipNodeResolution\\":false,\\"slowTestThreshold\\":5,\\"snapshotSerializers\\":[],\\"testEnvironment\\":\\"node\\",\\"testEnvironmentOptions\\":{},\\"testLocationInResults\\":false,\\"testMatch\\":[],\\"testPathIgnorePatterns\\":[],\\"testRegex\\":[\\"\\\\\\\\.test\\\\\\\\.js$\\"],\\"testRunner\\":\\"jest-circus/runner\\",\\"testURL\\":\\"http://localhost\\",\\"timers\\":\\"real\\",\\"transform\\":[[\\"\\\\\\\\.js$\\",\\"test_preprocessor\\",{}],[\\"\\\\\\\\.css$\\",\\"css-preprocessor\\",{}]],\\"transformIgnorePatterns\\":[\\"/node_modules/\\"],\\"watchPathIgnorePatterns\\":[]}","transformerConfig":{}}', }; `; @@ -273,7 +278,7 @@ exports[`ScriptTransformer uses the supplied preprocessor 1`] = ` const TRANSFORMED = { filename: '/fruits/banana.js', script: 'module.exports = "banana";', - config: '{"collectCoverage":false,"collectCoverageFrom":[],"coverageProvider":"babel","supportsDynamicImport":false,"supportsExportNamespaceFrom":false,"supportsStaticESM":false,"supportsTopLevelAwait":false,"instrument":false,"cacheFS":{},"config":{"automock":false,"cache":true,"cacheDirectory":"/cache/","clearMocks":false,"coveragePathIgnorePatterns":[],"cwd":"/test_root_dir/","detectLeaks":false,"detectOpenHandles":false,"errorOnDeprecated":false,"extensionsToTreatAsEsm":[],"extraGlobals":[],"forceCoverageMatch":[],"globals":{},"haste":{},"injectGlobals":true,"moduleDirectories":[],"moduleFileExtensions":["js"],"moduleLoader":"/test_module_loader_path","moduleNameMapper":[],"modulePathIgnorePatterns":[],"modulePaths":[],"name":"test","prettierPath":"prettier","resetMocks":false,"resetModules":false,"restoreMocks":false,"rootDir":"/","roots":[],"runner":"jest-runner","setupFiles":[],"setupFilesAfterEnv":[],"skipFilter":false,"skipNodeResolution":false,"slowTestThreshold":5,"snapshotSerializers":[],"testEnvironment":"node","testEnvironmentOptions":{},"testLocationInResults":false,"testMatch":[],"testPathIgnorePatterns":[],"testRegex":["\\\\.test\\\\.js$"],"testRunner":"jest-circus/runner","testURL":"http://localhost","timers":"real","transform":[["\\\\.js$","test_preprocessor",{}]],"transformIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":[]},"configString":"{\\"automock\\":false,\\"cache\\":true,\\"cacheDirectory\\":\\"/cache/\\",\\"clearMocks\\":false,\\"coveragePathIgnorePatterns\\":[],\\"cwd\\":\\"/test_root_dir/\\",\\"detectLeaks\\":false,\\"detectOpenHandles\\":false,\\"errorOnDeprecated\\":false,\\"extensionsToTreatAsEsm\\":[],\\"extraGlobals\\":[],\\"forceCoverageMatch\\":[],\\"globals\\":{},\\"haste\\":{},\\"injectGlobals\\":true,\\"moduleDirectories\\":[],\\"moduleFileExtensions\\":[\\"js\\"],\\"moduleLoader\\":\\"/test_module_loader_path\\",\\"moduleNameMapper\\":[],\\"modulePathIgnorePatterns\\":[],\\"modulePaths\\":[],\\"name\\":\\"test\\",\\"prettierPath\\":\\"prettier\\",\\"resetMocks\\":false,\\"resetModules\\":false,\\"restoreMocks\\":false,\\"rootDir\\":\\"/\\",\\"roots\\":[],\\"runner\\":\\"jest-runner\\",\\"setupFiles\\":[],\\"setupFilesAfterEnv\\":[],\\"skipFilter\\":false,\\"skipNodeResolution\\":false,\\"slowTestThreshold\\":5,\\"snapshotSerializers\\":[],\\"testEnvironment\\":\\"node\\",\\"testEnvironmentOptions\\":{},\\"testLocationInResults\\":false,\\"testMatch\\":[],\\"testPathIgnorePatterns\\":[],\\"testRegex\\":[\\"\\\\\\\\.test\\\\\\\\.js$\\"],\\"testRunner\\":\\"jest-circus/runner\\",\\"testURL\\":\\"http://localhost\\",\\"timers\\":\\"real\\",\\"transform\\":[[\\"\\\\\\\\.js$\\",\\"test_preprocessor\\",{}]],\\"transformIgnorePatterns\\":[\\"/node_modules/\\"],\\"watchPathIgnorePatterns\\":[]}"}', + config: '{"collectCoverage":false,"collectCoverageFrom":[],"coverageProvider":"babel","supportsDynamicImport":false,"supportsExportNamespaceFrom":false,"supportsStaticESM":false,"supportsTopLevelAwait":false,"instrument":false,"cacheFS":{},"config":{"automock":false,"cache":true,"cacheDirectory":"/cache/","clearMocks":false,"coveragePathIgnorePatterns":[],"cwd":"/test_root_dir/","detectLeaks":false,"detectOpenHandles":false,"errorOnDeprecated":false,"extensionsToTreatAsEsm":[],"extraGlobals":[],"forceCoverageMatch":[],"globals":{},"haste":{},"injectGlobals":true,"moduleDirectories":[],"moduleFileExtensions":["js"],"moduleLoader":"/test_module_loader_path","moduleNameMapper":[],"modulePathIgnorePatterns":[],"modulePaths":[],"name":"test","prettierPath":"prettier","resetMocks":false,"resetModules":false,"restoreMocks":false,"rootDir":"/","roots":[],"runner":"jest-runner","setupFiles":[],"setupFilesAfterEnv":[],"skipFilter":false,"skipNodeResolution":false,"slowTestThreshold":5,"snapshotSerializers":[],"testEnvironment":"node","testEnvironmentOptions":{},"testLocationInResults":false,"testMatch":[],"testPathIgnorePatterns":[],"testRegex":["\\\\.test\\\\.js$"],"testRunner":"jest-circus/runner","testURL":"http://localhost","timers":"real","transform":[["\\\\.js$","test_preprocessor",{}]],"transformIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":[]},"configString":"{\\"automock\\":false,\\"cache\\":true,\\"cacheDirectory\\":\\"/cache/\\",\\"clearMocks\\":false,\\"coveragePathIgnorePatterns\\":[],\\"cwd\\":\\"/test_root_dir/\\",\\"detectLeaks\\":false,\\"detectOpenHandles\\":false,\\"errorOnDeprecated\\":false,\\"extensionsToTreatAsEsm\\":[],\\"extraGlobals\\":[],\\"forceCoverageMatch\\":[],\\"globals\\":{},\\"haste\\":{},\\"injectGlobals\\":true,\\"moduleDirectories\\":[],\\"moduleFileExtensions\\":[\\"js\\"],\\"moduleLoader\\":\\"/test_module_loader_path\\",\\"moduleNameMapper\\":[],\\"modulePathIgnorePatterns\\":[],\\"modulePaths\\":[],\\"name\\":\\"test\\",\\"prettierPath\\":\\"prettier\\",\\"resetMocks\\":false,\\"resetModules\\":false,\\"restoreMocks\\":false,\\"rootDir\\":\\"/\\",\\"roots\\":[],\\"runner\\":\\"jest-runner\\",\\"setupFiles\\":[],\\"setupFilesAfterEnv\\":[],\\"skipFilter\\":false,\\"skipNodeResolution\\":false,\\"slowTestThreshold\\":5,\\"snapshotSerializers\\":[],\\"testEnvironment\\":\\"node\\",\\"testEnvironmentOptions\\":{},\\"testLocationInResults\\":false,\\"testMatch\\":[],\\"testPathIgnorePatterns\\":[],\\"testRegex\\":[\\"\\\\\\\\.test\\\\\\\\.js$\\"],\\"testRunner\\":\\"jest-circus/runner\\",\\"testURL\\":\\"http://localhost\\",\\"timers\\":\\"real\\",\\"transform\\":[[\\"\\\\\\\\.js$\\",\\"test_preprocessor\\",{}]],\\"transformIgnorePatterns\\":[\\"/node_modules/\\"],\\"watchPathIgnorePatterns\\":[]}","transformerConfig":{}}', }; `; diff --git a/packages/jest-transform/src/__tests__/should_instrument.test.ts b/packages/jest-transform/src/__tests__/shouldInstrument.test.ts similarity index 100% rename from packages/jest-transform/src/__tests__/should_instrument.test.ts rename to packages/jest-transform/src/__tests__/shouldInstrument.test.ts diff --git a/packages/jest-transform/src/types.ts b/packages/jest-transform/src/types.ts index 1900beb56245..97492c0f46b5 100644 --- a/packages/jest-transform/src/types.ts +++ b/packages/jest-transform/src/types.ts @@ -52,12 +52,15 @@ export interface ReducedTransformOptions extends CallerTransformOptions { export type StringMap = Map; -export interface TransformOptions extends ReducedTransformOptions { +export interface TransformOptions + extends ReducedTransformOptions { /** a cached file system which is used in jest-runtime - useful to improve performance */ cacheFS: StringMap; config: Config.ProjectConfig; /** A stringified version of the configuration - useful in cache busting */ configString: string; + /** the options passed through Jest's config by the user */ + transformerConfig: OptionType; } export interface Transformer { @@ -67,12 +70,12 @@ export interface Transformer { getCacheKey?: ( sourceText: string, sourcePath: Config.Path, - options: TransformOptions, + options: TransformOptions, ) => string; process: ( sourceText: string, sourcePath: Config.Path, - options: TransformOptions, + options: TransformOptions, ) => TransformedSource; } diff --git a/packages/jest-types/package.json b/packages/jest-types/package.json index 80c2cc7180ad..c8389e936493 100644 --- a/packages/jest-types/package.json +++ b/packages/jest-types/package.json @@ -1,6 +1,6 @@ { "name": "@jest/types", - "version": "26.6.2", + "version": "27.0.0-next.1", "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 40da453ae5e8..8b8243994a0e 100644 --- a/packages/jest-types/src/Config.ts +++ b/packages/jest-types/src/Config.ts @@ -155,7 +155,6 @@ export type InitialOptions = Partial<{ logHeapUsage: boolean; lastCommit: boolean; listTests: boolean; - mapCoverage: boolean; maxConcurrency: number; maxWorkers: number | string; moduleDirectories: Array; diff --git a/packages/jest-types/src/Transform.ts b/packages/jest-types/src/Transform.ts index 6371a226c201..43e9ff986eb1 100644 --- a/packages/jest-types/src/Transform.ts +++ b/packages/jest-types/src/Transform.ts @@ -9,6 +9,5 @@ export type TransformResult = { code: string; originalCode: string; - mapCoverage?: boolean; // TODO - Remove in Jest 27 sourceMapPath: string | null; }; diff --git a/packages/jest-util/package.json b/packages/jest-util/package.json index edcf6c831d6f..cf741553e2bb 100644 --- a/packages/jest-util/package.json +++ b/packages/jest-util/package.json @@ -1,6 +1,6 @@ { "name": "jest-util", - "version": "26.6.2", + "version": "27.0.0-next.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,7 +14,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/types": "^26.6.2", + "@jest/types": "^27.0.0-next.1", "@types/node": "*", "chalk": "^4.0.0", "graceful-fs": "^4.2.4", diff --git a/packages/jest-validate/package.json b/packages/jest-validate/package.json index cfa7b87b6c83..e9052212d113 100644 --- a/packages/jest-validate/package.json +++ b/packages/jest-validate/package.json @@ -1,6 +1,6 @@ { "name": "jest-validate", - "version": "26.6.2", + "version": "27.0.0-next.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,12 +14,12 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/types": "^26.6.2", + "@jest/types": "^27.0.0-next.1", "camelcase": "^6.0.0", "chalk": "^4.0.0", - "jest-get-type": "^26.3.0", + "jest-get-type": "^27.0.0-next.0", "leven": "^3.1.0", - "pretty-format": "^26.6.2" + "pretty-format": "^27.0.0-next.1" }, "devDependencies": { "@types/yargs": "^15.0.3" diff --git a/packages/jest-validate/src/__tests__/validate.test.ts b/packages/jest-validate/src/__tests__/validate.test.ts index 60a6f0bc357b..4877e6d375b9 100644 --- a/packages/jest-validate/src/__tests__/validate.test.ts +++ b/packages/jest-validate/src/__tests__/validate.test.ts @@ -100,40 +100,6 @@ test.each([ }, ); -test('respects recursiveBlacklist', () => { - const warn = console.warn; - console.warn = jest.fn(); - const config = { - something: { - nested: { - some_random_key: 'value', - some_random_key2: 'value2', - }, - }, - }; - const exampleConfig = { - something: { - nested: { - test: true, - }, - }, - }; - - validate(config, {exampleConfig}); - - expect(console.warn).toBeCalled(); - - console.warn.mockReset(); - - validate(config, { - exampleConfig, - recursiveBlacklist: ['something.nested'], - }); - - expect(console.warn).not.toBeCalled(); - console.warn = warn; -}); - test('respects recursiveDenylist', () => { const warn = console.warn; console.warn = jest.fn(); diff --git a/packages/jest-validate/src/types.ts b/packages/jest-validate/src/types.ts index aba81d819edc..4c8f6beacda7 100644 --- a/packages/jest-validate/src/types.ts +++ b/packages/jest-validate/src/types.ts @@ -34,7 +34,6 @@ export type ValidationOptions = { ) => void; exampleConfig: Record; recursive?: boolean; - recursiveBlacklist?: Array; recursiveDenylist?: Array; title?: Title; unknown?: ( diff --git a/packages/jest-validate/src/validate.ts b/packages/jest-validate/src/validate.ts index ea2704e9a133..37844a223d77 100644 --- a/packages/jest-validate/src/validate.ts +++ b/packages/jest-validate/src/validate.ts @@ -70,11 +70,7 @@ const _validate = ( options.error(key, config[key], exampleConfig[key], options, path); } } else if ( - shouldSkipValidationForPath( - path, - key, - options.recursiveDenylist || options.recursiveBlacklist, - ) + shouldSkipValidationForPath(path, key, options.recursiveDenylist) ) { // skip validating unknown options inside blacklisted paths } else { @@ -85,12 +81,8 @@ const _validate = ( if ( options.recursive && !Array.isArray(exampleConfig[key]) && - (options.recursiveDenylist || options.recursiveBlacklist) && - !shouldSkipValidationForPath( - path, - key, - options.recursiveDenylist || options.recursiveBlacklist, - ) + options.recursiveDenylist && + !shouldSkipValidationForPath(path, key, options.recursiveDenylist) ) { _validate(config[key], exampleConfig[key], options, [...path, key]); } @@ -112,7 +104,7 @@ const validate = ( // Preserve default denylist entries even with user-supplied denylist const combinedDenylist: Array = [ ...(defaultConfig.recursiveDenylist || []), - ...(options.recursiveDenylist || options.recursiveBlacklist || []), + ...(options.recursiveDenylist || []), ]; const defaultedOptions: ValidationOptions = Object.assign({ diff --git a/packages/jest-watcher/package.json b/packages/jest-watcher/package.json index 550ee376fb32..67f374cd41b9 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": "26.6.2", + "version": "27.0.0-next.1", "main": "./build/index.js", "types": "./build/index.d.ts", "exports": { @@ -9,12 +9,12 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", + "@jest/test-result": "^27.0.0-next.1", + "@jest/types": "^27.0.0-next.1", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "jest-util": "^26.6.2", + "jest-util": "^27.0.0-next.1", "string-length": "^4.0.1" }, "repository": { diff --git a/packages/jest-worker/README.md b/packages/jest-worker/README.md index d0523c940040..38b7dd60b89b 100644 --- a/packages/jest-worker/README.md +++ b/packages/jest-worker/README.md @@ -181,7 +181,7 @@ This example covers the usage with a `computeWorkerKey` method: ### File `parent.js` ```javascript -import JestWorker from 'jest-worker'; +import {Worker as JestWorker} from 'jest-worker'; async function main() { const myWorker = new JestWorker(require.resolve('./Worker'), { diff --git a/packages/jest-worker/package.json b/packages/jest-worker/package.json index 17450625a8e7..35ccb2aab02d 100644 --- a/packages/jest-worker/package.json +++ b/packages/jest-worker/package.json @@ -1,6 +1,6 @@ { "name": "jest-worker", - "version": "26.6.2", + "version": "27.0.0-next.2", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/jest-worker/src/__performance_tests__/test.js b/packages/jest-worker/src/__performance_tests__/test.js index 3a688eae05e4..53dbc688b76f 100644 --- a/packages/jest-worker/src/__performance_tests__/test.js +++ b/packages/jest-worker/src/__performance_tests__/test.js @@ -10,7 +10,7 @@ const assert = require('assert'); // eslint-disable-next-line import/no-extraneous-dependencies const workerFarm = require('worker-farm'); -const JestWorker = require('../../build').default; +const JestWorker = require('../../build').Worker; // Typical tests: node --expose-gc test.js empty 100000 // node --expose-gc test.js loadTest 10000 diff --git a/packages/jest-worker/src/__tests__/index.test.js b/packages/jest-worker/src/__tests__/index.test.js index 5fbd5293fef5..ec6f091289d5 100644 --- a/packages/jest-worker/src/__tests__/index.test.js +++ b/packages/jest-worker/src/__tests__/index.test.js @@ -52,7 +52,7 @@ beforeEach(() => { virtual: true, }); - Farm = require('..').default; + Farm = require('..').Worker; Queue = require('../Farm').default; WorkerPool = require('../WorkerPool').default; }); diff --git a/packages/jest-worker/src/__tests__/process-integration.test.js b/packages/jest-worker/src/__tests__/process-integration.test.js index b2d716669915..efc19257e57f 100644 --- a/packages/jest-worker/src/__tests__/process-integration.test.js +++ b/packages/jest-worker/src/__tests__/process-integration.test.js @@ -55,7 +55,7 @@ describe('Jest Worker Integration', () => { }, })); - Farm = require('../index').default; + Farm = require('../index').Worker; }); afterEach(() => { diff --git a/packages/jest-worker/src/__tests__/thread-integration.test.js b/packages/jest-worker/src/__tests__/thread-integration.test.js index fb97ecf24b30..206871f00940 100644 --- a/packages/jest-worker/src/__tests__/thread-integration.test.js +++ b/packages/jest-worker/src/__tests__/thread-integration.test.js @@ -56,7 +56,7 @@ describe('Jest Worker Process Integration', () => { }; }); - Farm = require('../index').default; + Farm = require('../index').Worker; }); afterEach(() => { diff --git a/packages/jest-worker/src/index.ts b/packages/jest-worker/src/index.ts index 5b2613acda37..19ee73b156cc 100644 --- a/packages/jest-worker/src/index.ts +++ b/packages/jest-worker/src/index.ts @@ -67,7 +67,7 @@ function getExposedMethods( * processed by the same worker. This is specially useful if your workers * are caching results. */ -export default class JestWorker { +export class Worker { private _ending: boolean; private _farm: Farm; private _options: FarmOptions; diff --git a/packages/jest/package.json b/packages/jest/package.json index 2732eef666f7..d12716f0f1b7 100644 --- a/packages/jest/package.json +++ b/packages/jest/package.json @@ -1,7 +1,7 @@ { "name": "jest", "description": "Delightful JavaScript Testing.", - "version": "26.6.3", + "version": "27.0.0-next.2", "main": "./build/jest.js", "types": "./build/jest.d.ts", "exports": { @@ -10,9 +10,9 @@ "./bin/jest": "./bin/jest.js" }, "dependencies": { - "@jest/core": "^26.6.3", + "@jest/core": "^27.0.0-next.2", "import-local": "^3.0.2", - "jest-cli": "^26.6.3" + "jest-cli": "^27.0.0-next.2" }, "bin": "./bin/jest.js", "engines": { diff --git a/packages/pretty-format/package.json b/packages/pretty-format/package.json index d108afe068b8..542873a7a278 100644 --- a/packages/pretty-format/package.json +++ b/packages/pretty-format/package.json @@ -1,6 +1,6 @@ { "name": "pretty-format", - "version": "26.6.2", + "version": "27.0.0-next.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -16,7 +16,7 @@ }, "author": "James Kyle ", "dependencies": { - "@jest/types": "^26.6.2", + "@jest/types": "^27.0.0-next.1", "ansi-regex": "^5.0.0", "ansi-styles": "^5.0.0", "react-is": "^17.0.1" @@ -26,7 +26,7 @@ "@types/react-is": "^17.0.0", "@types/react-test-renderer": "*", "immutable": "4.0.0-rc.9", - "jest-util": "^26.6.2", + "jest-util": "^27.0.0-next.1", "react": "*", "react-dom": "*", "react-test-renderer": "*" diff --git a/packages/pretty-format/tsconfig.json b/packages/pretty-format/tsconfig.json index 3046cb6b9b6a..23c08b0da24e 100644 --- a/packages/pretty-format/tsconfig.json +++ b/packages/pretty-format/tsconfig.json @@ -4,5 +4,5 @@ "rootDir": "src", "outDir": "build" }, - "references": [{"path": "../jest-types"}] + "references": [{"path": "../jest-types"}, {"path": "../jest-util"}] } diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json index 58d9c080b3b5..620b4a3bbb85 100644 --- a/packages/test-utils/package.json +++ b/packages/test-utils/package.json @@ -1,6 +1,6 @@ { "name": "@jest/test-utils", - "version": "26.6.2", + "version": "27.0.0-next.1", "private": true, "license": "MIT", "main": "./build/index.js", @@ -10,13 +10,13 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/types": "^26.6.2", + "@jest/types": "^27.0.0-next.1", "@types/jest": "*", "@types/node": "*", "@types/semver": "^7.1.0", "ansi-regex": "^5.0.0", "ansi-styles": "^5.0.0", - "pretty-format": "^26.6.2", + "pretty-format": "^27.0.0-next.1", "semver": "^7.3.2" }, "engines": { diff --git a/patches/react-native.patch b/patches/react-native.patch new file mode 100644 index 000000000000..0720ad2a58f4 --- /dev/null +++ b/patches/react-native.patch @@ -0,0 +1,13 @@ +diff --git a/jest/preprocessor.js b/jest/preprocessor.js +index 5920c0a6f23c056f27366fabf32dd13c6f86465b..2658e52f9127ac58849e7f830f6342d8b683672c 100644 +--- a/jest/preprocessor.js ++++ b/jest/preprocessor.js +@@ -64,8 +64,6 @@ module.exports = { + [require('@babel/plugin-transform-flow-strip-types')], + [ + require('@babel/plugin-proposal-class-properties'), +- // use `this.foo = bar` instead of `this.defineProperty('foo', ...)` +- {loose: true}, + ], + [require('@babel/plugin-transform-computed-properties')], + [require('@babel/plugin-transform-destructuring')], diff --git a/scripts/buildTs.js b/scripts/buildTs.js index 5630d61f9315..adb7cfc9fa00 100644 --- a/scripts/buildTs.js +++ b/scripts/buildTs.js @@ -15,6 +15,7 @@ const util = require('util'); const chalk = require('chalk'); const execa = require('execa'); const globby = require('globby'); +const stripJsonComments = require('strip-json-comments'); const throat = require('throat'); const {getPackages} = require('./buildUtils'); @@ -27,8 +28,22 @@ const readFilePromise = util.promisify(fs.readFile); fs.existsSync(path.resolve(p, 'tsconfig.json')), ); + const {stdout: allWorkspacesString} = await execa('yarn', [ + 'workspaces', + 'list', + '--json', + ]); + + const workspacesWithTs = new Map( + JSON.parse(`[${allWorkspacesString.split('\n').join(',')}]`) + .filter(({location}) => + packagesWithTs.some(pkg => pkg.endsWith(location)), + ) + .map(({location, name}) => [name, location]), + ); + packagesWithTs.forEach(pkgDir => { - const pkg = require(pkgDir + '/package.json'); + const pkg = require(`${pkgDir}/package.json`); assert.ok(pkg.types, `Package ${pkg.name} is missing \`types\` field`); @@ -37,6 +52,47 @@ const readFilePromise = util.promisify(fs.readFile); pkg.main.replace(/\.js$/, '.d.ts'), `\`main\` and \`types\` field of ${pkg.name} does not match`, ); + + const jestDependenciesOfPackage = Object.keys(pkg.dependencies || {}) + .concat(Object.keys(pkg.devDependencies || {})) + .filter(dep => workspacesWithTs.has(dep)) + .filter(dep => { + // nothing should depend on these + if (dep === 'jest-circus' || dep === 'jest-jasmine2') { + return false; + } + + // these are just `require.resolve`-ed + if (pkg.name === 'jest-config') { + if (dep === '@jest/test-sequencer' || dep === 'babel-jest') { + return false; + } + } + + return true; + }) + .map(dep => + path.relative(pkgDir, `${pkgDir}/../../${workspacesWithTs.get(dep)}`), + ) + .sort(); + + if (jestDependenciesOfPackage.length > 0) { + const tsConfig = JSON.parse( + stripJsonComments(fs.readFileSync(`${pkgDir}/tsconfig.json`, 'utf8')), + ); + + const references = tsConfig.references.map(({path}) => path); + + assert.deepStrictEqual( + references, + jestDependenciesOfPackage, + `Expected declared references to match dependencies in packages ${ + pkg.name + }. Got:\n\n${references.join( + '\n', + )}\nExpected:\n\n${jestDependenciesOfPackage.join('\n')}`, + ); + } }); const args = ['tsc', '-b', ...packagesWithTs, ...process.argv.slice(2)]; diff --git a/scripts/buildUtils.js b/scripts/buildUtils.js index 43a5e7fec6e3..7a886d2f706d 100644 --- a/scripts/buildUtils.js +++ b/scripts/buildUtils.js @@ -55,6 +55,18 @@ module.exports.getPackages = function getPackages() { }, `Package ${pkg.name} does not export correct files`, ); + + if (pkg.bin) { + Object.entries(pkg.bin).forEach(([binName, binPath]) => { + const fullBinPath = path.resolve(packageDir, binPath); + + if (!fs.existsSync(fullBinPath)) { + throw new Error( + `Binary in package ${pkg.name} with name "${binName}" at ${binPath} does not exist`, + ); + } + }); + } }); return packages; diff --git a/website/versioned_docs/version-22.x/TutorialReactNative.md b/website/versioned_docs/version-22.x/TutorialReactNative.md index 8b4b8e4330b3..e3456c2a057d 100644 --- a/website/versioned_docs/version-22.x/TutorialReactNative.md +++ b/website/versioned_docs/version-22.x/TutorialReactNative.md @@ -193,7 +193,7 @@ Or if you'd like to create your own manual mock, you can do something like this: ```js jest.mock('Text', () => { const RealComponent = jest.requireActual('Text'); - const React = require('React'); + const React = require('react'); class Text extends React.Component { render() { return React.createElement('Text', this.props, this.props.children); diff --git a/website/versioned_docs/version-25.x/ExpectAPI.md b/website/versioned_docs/version-25.x/ExpectAPI.md index c3e8ee6a6284..d20578d74b6f 100644 --- a/website/versioned_docs/version-25.x/ExpectAPI.md +++ b/website/versioned_docs/version-25.x/ExpectAPI.md @@ -256,6 +256,41 @@ it('stores only 10 characters', () => { }); ``` +#### async + +If your custom inline snapshot matcher is async i.e. uses `async`-`await` you might encounter an error like "Multiple inline snapshots for the same call are not supported". Jest needs additional context information to find where the custom inline snapshot matcher was used to update the snapshots properly. + +```js +const {toMatchInlineSnapshot} = require('jest-snapshot'); + +expect.extend({ + async toMatchObservationInlineSnapshot(fn, ...rest) { + // The error (and its stacktrace) must be created before any `await` + this.error = new Error(); + + // The implementation of `observe` doesn't matter. + // It only matters that the custom snapshot matcher is async. + const observation = await observe(async () => { + await fn(); + }); + + return toMatchInlineSnapshot.call(this, recording, ...rest); + }, +}); + +it('observes something', async () => { + await expect(async () => { + return 'async action'; + }).toMatchTrimmedInlineSnapshot(); + /* + The snapshot will be added inline like + await expect(async () => { + return 'async action'; + }).toMatchTrimmedInlineSnapshot(`"async action"`); + */ +}); +``` + ### `expect.anything()` `expect.anything()` matches anything but `null` or `undefined`. You can use it inside `toEqual` or `toBeCalledWith` instead of a literal value. For example, if you want to check that a mock function is called with a non-null argument: diff --git a/website/versioned_docs/version-25.x/TutorialReactNative.md b/website/versioned_docs/version-25.x/TutorialReactNative.md index 712cdd72946b..b4d85e83fc40 100644 --- a/website/versioned_docs/version-25.x/TutorialReactNative.md +++ b/website/versioned_docs/version-25.x/TutorialReactNative.md @@ -193,7 +193,7 @@ Or if you'd like to create your own manual mock, you can do something like this: ```js jest.mock('Text', () => { const RealComponent = jest.requireActual('Text'); - const React = require('React'); + const React = require('react'); class Text extends React.Component { render() { return React.createElement('Text', this.props, this.props.children); diff --git a/yarn.lock b/yarn.lock index 363699de02e6..ff658db33ebe 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1741,16 +1741,16 @@ __metadata: languageName: node linkType: hard -"@jest/console@^26.6.2, @jest/console@workspace:packages/jest-console": +"@jest/console@^27.0.0-next.1, @jest/console@workspace:packages/jest-console": version: 0.0.0-use.local resolution: "@jest/console@workspace:packages/jest-console" dependencies: - "@jest/test-utils": ^26.6.2 - "@jest/types": ^26.6.2 + "@jest/test-utils": ^27.0.0-next.1 + "@jest/types": ^27.0.0-next.1 "@types/node": "*" chalk: ^4.0.0 - jest-message-util: ^26.6.2 - jest-util: ^26.6.2 + jest-message-util: ^27.0.0-next.1 + jest-util: ^27.0.0-next.1 slash: ^3.0.0 languageName: unknown linkType: soft @@ -1766,17 +1766,31 @@ __metadata: languageName: node linkType: hard -"@jest/core@^26.6.3, @jest/core@workspace:packages/jest-core": +"@jest/console@npm:^26.6.2": + version: 26.6.2 + resolution: "@jest/console@npm:26.6.2" + dependencies: + "@jest/types": ^26.6.2 + "@types/node": "*" + chalk: ^4.0.0 + jest-message-util: ^26.6.2 + jest-util: ^26.6.2 + slash: ^3.0.0 + checksum: 72920a893e4a622ce96786eb1d3f6ef0c88c9d1ec32fffbde4e25f582b5f1ccd5f5b7a370c0b1a4917fb74c046467f43422c0039c497df4b307527910759e0a5 + languageName: node + linkType: hard + +"@jest/core@^27.0.0-next.2, @jest/core@workspace:packages/jest-core": version: 0.0.0-use.local resolution: "@jest/core@workspace:packages/jest-core" dependencies: - "@jest/console": ^26.6.2 - "@jest/reporters": ^26.6.2 - "@jest/test-result": ^26.6.2 - "@jest/test-sequencer": ^26.6.3 - "@jest/test-utils": ^26.6.2 - "@jest/transform": ^26.6.2 - "@jest/types": ^26.6.2 + "@jest/console": ^27.0.0-next.1 + "@jest/reporters": ^27.0.0-next.2 + "@jest/test-result": ^27.0.0-next.1 + "@jest/test-sequencer": ^27.0.0-next.2 + "@jest/test-utils": ^27.0.0-next.1 + "@jest/transform": ^27.0.0-next.2 + "@jest/types": ^27.0.0-next.1 "@types/exit": ^0.1.30 "@types/graceful-fs": ^4.1.2 "@types/micromatch": ^4.0.0 @@ -1784,22 +1798,23 @@ __metadata: "@types/rimraf": ^3.0.0 ansi-escapes: ^4.2.1 chalk: ^4.0.0 + emittery: ^0.7.2 exit: ^0.1.2 graceful-fs: ^4.2.4 - jest-changed-files: ^26.6.2 - jest-config: ^26.6.3 - jest-haste-map: ^26.6.2 - jest-message-util: ^26.6.2 - jest-regex-util: ^26.0.0 - jest-resolve: ^26.6.2 - jest-resolve-dependencies: ^26.6.3 - jest-runner: ^26.6.3 - jest-runtime: ^26.6.3 - jest-snapshot: ^26.6.2 + jest-changed-files: ^27.0.0-next.1 + jest-config: ^27.0.0-next.2 + jest-haste-map: ^27.0.0-next.2 + jest-message-util: ^27.0.0-next.1 + jest-regex-util: ^27.0.0-next.0 + jest-resolve: ^27.0.0-next.2 + jest-resolve-dependencies: ^27.0.0-next.2 + jest-runner: ^27.0.0-next.2 + jest-runtime: ^27.0.0-next.2 + jest-snapshot: ^27.0.0-next.2 jest-snapshot-serializer-raw: ^1.1.0 - jest-util: ^26.6.2 - jest-validate: ^26.6.2 - jest-watcher: ^26.6.2 + jest-util: ^27.0.0-next.1 + jest-validate: ^27.0.0-next.1 + jest-watcher: ^27.0.0-next.1 micromatch: ^4.0.2 p-each-series: ^2.1.0 rimraf: ^3.0.0 @@ -1812,34 +1827,34 @@ __metadata: version: 0.0.0-use.local resolution: "@jest/create-cache-key-function@workspace:packages/jest-create-cache-key-function" dependencies: - "@jest/types": ^26.6.2 + "@jest/types": ^27.0.0-next.1 "@types/node": "*" languageName: unknown linkType: soft -"@jest/environment@^26.6.2, @jest/environment@workspace:packages/jest-environment": +"@jest/environment@^27.0.0-next.1, @jest/environment@workspace:packages/jest-environment": version: 0.0.0-use.local resolution: "@jest/environment@workspace:packages/jest-environment" dependencies: - "@jest/fake-timers": ^26.6.2 - "@jest/types": ^26.6.2 + "@jest/fake-timers": ^27.0.0-next.1 + "@jest/types": ^27.0.0-next.1 "@types/node": "*" - jest-mock: ^26.6.2 + jest-mock: ^27.0.0-next.1 languageName: unknown linkType: soft -"@jest/fake-timers@^26.6.2, @jest/fake-timers@workspace:packages/jest-fake-timers": +"@jest/fake-timers@^27.0.0-next.1, @jest/fake-timers@workspace:packages/jest-fake-timers": version: 0.0.0-use.local resolution: "@jest/fake-timers@workspace:packages/jest-fake-timers" dependencies: - "@jest/types": ^26.6.2 + "@jest/types": ^27.0.0-next.1 "@sinonjs/fake-timers": ^6.0.1 "@types/node": "*" "@types/sinonjs__fake-timers": ^6.0.1 - jest-message-util: ^26.6.2 - jest-mock: ^26.6.2 + jest-message-util: ^27.0.0-next.1 + jest-mock: ^27.0.0-next.1 jest-snapshot-serializer-raw: ^1.1.0 - jest-util: ^26.6.2 + jest-util: ^27.0.0-next.1 languageName: unknown linkType: soft @@ -1854,13 +1869,13 @@ __metadata: languageName: node linkType: hard -"@jest/globals@^26.6.2, @jest/globals@workspace:*, @jest/globals@workspace:packages/jest-globals": +"@jest/globals@^27.0.0-next.1, @jest/globals@workspace:*, @jest/globals@workspace:packages/jest-globals": version: 0.0.0-use.local resolution: "@jest/globals@workspace:packages/jest-globals" dependencies: - "@jest/environment": ^26.6.2 - "@jest/types": ^26.6.2 - expect: ^26.6.2 + "@jest/environment": ^27.0.0-next.1 + "@jest/types": ^27.0.0-next.1 + expect: ^27.0.0-next.1 languageName: unknown linkType: soft @@ -1899,7 +1914,7 @@ __metadata: debug: ^4.0.1 dedent: ^0.7.0 eslint: ^7.7.0 - eslint-config-prettier: ^6.1.0 + eslint-config-prettier: ^7.0.0 eslint-plugin-eslint-comments: ^3.1.2 eslint-plugin-import: ^2.6.0 eslint-plugin-jest: ^24.0.0 @@ -1941,6 +1956,7 @@ __metadata: stealthy-require: ^1.1.1 string-length: ^4.0.1 strip-ansi: ^6.0.0 + strip-json-comments: ^3.1.1 tempy: ^1.0.0 throat: ^5.0.0 ts-node: ^9.0.0 @@ -1950,16 +1966,16 @@ __metadata: languageName: unknown linkType: soft -"@jest/reporters@^26.6.2, @jest/reporters@workspace:packages/jest-reporters": +"@jest/reporters@^27.0.0-next.2, @jest/reporters@workspace:packages/jest-reporters": version: 0.0.0-use.local resolution: "@jest/reporters@workspace:packages/jest-reporters" dependencies: "@bcoe/v8-coverage": ^0.2.3 - "@jest/console": ^26.6.2 - "@jest/test-result": ^26.6.2 - "@jest/test-utils": ^26.6.2 - "@jest/transform": ^26.6.2 - "@jest/types": ^26.6.2 + "@jest/console": ^27.0.0-next.1 + "@jest/test-result": ^27.0.0-next.1 + "@jest/test-utils": ^27.0.0-next.1 + "@jest/transform": ^27.0.0-next.2 + "@jest/types": ^27.0.0-next.1 "@types/exit": ^0.1.30 "@types/glob": ^7.1.1 "@types/graceful-fs": ^4.1.3 @@ -1979,10 +1995,10 @@ __metadata: istanbul-lib-report: ^3.0.0 istanbul-lib-source-maps: ^4.0.0 istanbul-reports: ^3.0.2 - jest-haste-map: ^26.6.2 - jest-resolve: ^26.6.2 - jest-util: ^26.6.2 - jest-worker: ^26.6.2 + jest-haste-map: ^27.0.0-next.2 + jest-resolve: ^27.0.0-next.2 + jest-util: ^27.0.0-next.1 + jest-worker: ^27.0.0-next.2 mock-fs: ^4.4.1 node-notifier: ^8.0.0 slash: ^3.0.0 @@ -1997,7 +2013,7 @@ __metadata: languageName: unknown linkType: soft -"@jest/source-map@^26.6.2, @jest/source-map@workspace:packages/jest-source-map": +"@jest/source-map@^27.0.0-next.0, @jest/source-map@workspace:packages/jest-source-map": version: 0.0.0-use.local resolution: "@jest/source-map@workspace:packages/jest-source-map" dependencies: @@ -2019,12 +2035,12 @@ __metadata: languageName: node linkType: hard -"@jest/test-result@^26.6.2, @jest/test-result@workspace:packages/jest-test-result": +"@jest/test-result@^27.0.0-next.1, @jest/test-result@workspace:packages/jest-test-result": version: 0.0.0-use.local resolution: "@jest/test-result@workspace:packages/jest-test-result" dependencies: - "@jest/console": ^26.6.2 - "@jest/types": ^26.6.2 + "@jest/console": ^27.0.0-next.1 + "@jest/types": ^27.0.0-next.1 "@types/istanbul-lib-coverage": ^2.0.0 collect-v8-coverage: ^1.0.0 languageName: unknown @@ -2041,41 +2057,53 @@ __metadata: languageName: node linkType: hard -"@jest/test-sequencer@^26.6.3, @jest/test-sequencer@workspace:packages/jest-test-sequencer": +"@jest/test-result@npm:^26.6.2": + version: 26.6.2 + resolution: "@jest/test-result@npm:26.6.2" + dependencies: + "@jest/console": ^26.6.2 + "@jest/types": ^26.6.2 + "@types/istanbul-lib-coverage": ^2.0.0 + collect-v8-coverage: ^1.0.0 + checksum: 0ecd35212bb19f2dee97d795193897780729c446739715a52cb37ed248020ad6a32bc2e9563812f56028be19c651237403c7dfec9ed967f443d9afcc385dd9dc + languageName: node + linkType: hard + +"@jest/test-sequencer@^27.0.0-next.2, @jest/test-sequencer@workspace:packages/jest-test-sequencer": version: 0.0.0-use.local resolution: "@jest/test-sequencer@workspace:packages/jest-test-sequencer" dependencies: - "@jest/test-result": ^26.6.2 + "@jest/test-result": ^27.0.0-next.1 "@types/graceful-fs": ^4.1.3 graceful-fs: ^4.2.4 - jest-haste-map: ^26.6.2 - jest-runner: ^26.6.3 - jest-runtime: ^26.6.3 + jest-haste-map: ^27.0.0-next.2 + jest-runner: ^27.0.0-next.2 + jest-runtime: ^27.0.0-next.2 languageName: unknown linkType: soft -"@jest/test-utils@^26.6.2, @jest/test-utils@workspace:*, @jest/test-utils@workspace:packages/test-utils": +"@jest/test-utils@^27.0.0-next.1, @jest/test-utils@workspace:*, @jest/test-utils@workspace:packages/test-utils": version: 0.0.0-use.local resolution: "@jest/test-utils@workspace:packages/test-utils" dependencies: - "@jest/types": ^26.6.2 + "@jest/types": ^27.0.0-next.1 "@types/jest": "*" "@types/node": "*" "@types/semver": ^7.1.0 ansi-regex: ^5.0.0 ansi-styles: ^5.0.0 - pretty-format: ^26.6.2 + pretty-format: ^27.0.0-next.1 semver: ^7.3.2 languageName: unknown linkType: soft -"@jest/transform@^26.6.2, @jest/transform@workspace:packages/jest-transform": +"@jest/transform@^27.0.0-next.2, @jest/transform@workspace:packages/jest-transform": version: 0.0.0-use.local resolution: "@jest/transform@workspace:packages/jest-transform" dependencies: "@babel/core": ^7.1.0 - "@jest/test-utils": ^26.6.2 - "@jest/types": ^26.6.2 + "@jest/test-utils": ^27.0.0-next.1 + "@jest/types": ^27.0.0-next.1 "@types/babel__core": ^7.1.0 "@types/convert-source-map": ^1.5.1 "@types/fast-json-stable-stringify": ^2.0.0 @@ -2088,10 +2116,10 @@ __metadata: dedent: ^0.7.0 fast-json-stable-stringify: ^2.0.0 graceful-fs: ^4.2.4 - jest-haste-map: ^26.6.2 - jest-regex-util: ^26.0.0 + jest-haste-map: ^27.0.0-next.2 + jest-regex-util: ^27.0.0-next.0 jest-snapshot-serializer-raw: ^1.1.0 - jest-util: ^26.6.2 + jest-util: ^27.0.0-next.1 micromatch: ^4.0.2 pirates: ^4.0.1 slash: ^3.0.0 @@ -2100,7 +2128,7 @@ __metadata: languageName: unknown linkType: soft -"@jest/types@^26.6.1, @jest/types@^26.6.2, @jest/types@workspace:packages/jest-types": +"@jest/types@^27.0.0-next.1, @jest/types@workspace:packages/jest-types": version: 0.0.0-use.local resolution: "@jest/types@workspace:packages/jest-types" dependencies: @@ -2135,6 +2163,19 @@ __metadata: languageName: node linkType: hard +"@jest/types@npm:^26.6.1, @jest/types@npm:^26.6.2": + version: 26.6.2 + resolution: "@jest/types@npm:26.6.2" + dependencies: + "@types/istanbul-lib-coverage": ^2.0.0 + "@types/istanbul-reports": ^3.0.0 + "@types/node": "*" + "@types/yargs": ^15.0.0 + chalk: ^4.0.0 + checksum: 5c511d7807f414b298299ae4a053abf265f39984942e0eefdfb17a7986a36f1047e0fd9a6f785bdddbf7343a5737595dfabe148719a80e118dd77486502009cc + languageName: node + linkType: hard + "@lerna/add@npm:3.21.0": version: 3.21.0 resolution: "@lerna/add@npm:3.21.0" @@ -4840,18 +4881,18 @@ __metadata: languageName: node linkType: hard -"babel-jest@*, babel-jest@^26.6.3, babel-jest@workspace:packages/babel-jest": +"babel-jest@workspace:*, babel-jest@workspace:packages/babel-jest": version: 0.0.0-use.local resolution: "babel-jest@workspace:packages/babel-jest" dependencies: "@babel/core": ^7.1.0 - "@jest/test-utils": ^26.6.2 - "@jest/transform": ^26.6.2 - "@jest/types": ^26.6.2 + "@jest/test-utils": ^27.0.0-next.1 + "@jest/transform": ^27.0.0-next.2 + "@jest/types": ^27.0.0-next.1 "@types/babel__core": ^7.1.7 "@types/graceful-fs": ^4.1.3 babel-plugin-istanbul: ^6.0.0 - babel-preset-jest: ^26.6.2 + babel-preset-jest: ^27.0.0-next.0 chalk: ^4.0.0 graceful-fs: ^4.2.4 slash: ^3.0.0 @@ -4882,7 +4923,7 @@ __metadata: languageName: node linkType: hard -"babel-plugin-jest-hoist@^26.6.2, babel-plugin-jest-hoist@workspace:packages/babel-plugin-jest-hoist": +"babel-plugin-jest-hoist@^27.0.0-next.0, babel-plugin-jest-hoist@workspace:packages/babel-plugin-jest-hoist": version: 0.0.0-use.local resolution: "babel-plugin-jest-hoist@workspace:packages/babel-plugin-jest-hoist" dependencies: @@ -4996,11 +5037,11 @@ __metadata: languageName: node linkType: hard -"babel-preset-jest@^26.6.2, babel-preset-jest@workspace:packages/babel-preset-jest": +"babel-preset-jest@^27.0.0-next.0, babel-preset-jest@workspace:packages/babel-preset-jest": version: 0.0.0-use.local resolution: "babel-preset-jest@workspace:packages/babel-preset-jest" dependencies: - babel-plugin-jest-hoist: ^26.6.2 + babel-plugin-jest-hoist: ^27.0.0-next.0 babel-preset-current-node-syntax: ^1.0.0 peerDependencies: "@babel/core": ^7.0.0 @@ -7290,7 +7331,7 @@ __metadata: languageName: node linkType: hard -"diff-sequences@^26.6.2, diff-sequences@workspace:packages/diff-sequences": +"diff-sequences@^27.0.0-next.0, diff-sequences@workspace:packages/diff-sequences": version: 0.0.0-use.local resolution: "diff-sequences@workspace:packages/diff-sequences" dependencies: @@ -7623,7 +7664,7 @@ __metadata: languageName: node linkType: hard -"emittery@npm:^0.7.1": +"emittery@npm:^0.7.1, emittery@npm:^0.7.2": version: 0.7.2 resolution: "emittery@npm:0.7.2" checksum: 34acfef51922a1b73d75cb658bf43ecb279633b263ffa831fb87697abbbd3aa4241ef15d204eeaa6a3c62656bd7563de7145c416a2bb18c4805e54ce6d7cdac6 @@ -7965,16 +8006,14 @@ __metadata: languageName: node linkType: hard -"eslint-config-prettier@npm:^6.1.0": - version: 6.15.0 - resolution: "eslint-config-prettier@npm:6.15.0" - dependencies: - get-stdin: ^6.0.0 +"eslint-config-prettier@npm:^7.0.0": + version: 7.0.0 + resolution: "eslint-config-prettier@npm:7.0.0" peerDependencies: - eslint: ">=3.14.1" + eslint: ">=7.0.0" bin: - eslint-config-prettier-check: bin/cli.js - checksum: a790bc61699e43a2edc5453488576cd977fad3b3cf99c129c10760ce6970d422923fddf80b65b2b10a93c00af0180a854e4b7824cc268e5957826cbe5b969e90 + eslint-config-prettier: bin/cli.js + checksum: b7c543080e32829dba5f3db970c5f3c3b47f1de8df89b4226105afbecae561e026b6fe9f2cb16bf08ab1a6f1f544d9303c9c8c0919cbb51a9d2c8a640779624a languageName: node linkType: hard @@ -8561,20 +8600,20 @@ __metadata: languageName: node linkType: hard -"expect@^26.6.2, expect@workspace:packages/expect": +"expect@^27.0.0-next.1, expect@workspace:packages/expect": version: 0.0.0-use.local resolution: "expect@workspace:packages/expect" dependencies: - "@jest/test-utils": ^26.6.2 - "@jest/types": ^26.6.2 + "@jest/test-utils": ^27.0.0-next.1 + "@jest/types": ^27.0.0-next.1 ansi-styles: ^5.0.0 chalk: ^4.0.0 fast-check: ^2.0.0 immutable: ^4.0.0-rc.12 - jest-get-type: ^26.3.0 - jest-matcher-utils: ^26.6.2 - jest-message-util: ^26.6.2 - jest-regex-util: ^26.0.0 + jest-get-type: ^27.0.0-next.0 + jest-matcher-utils: ^27.0.0-next.1 + jest-message-util: ^27.0.0-next.1 + jest-regex-util: ^27.0.0-next.0 languageName: unknown linkType: soft @@ -9525,13 +9564,6 @@ fsevents@^1.2.7: languageName: node linkType: hard -"get-stdin@npm:^6.0.0": - version: 6.0.0 - resolution: "get-stdin@npm:6.0.0" - checksum: b51d664838aef7f8353dc57371ce59cea54d8d584fec015a9d89d24561e95b97806d5b5ba120bc81574c9ed63cb3e210176ffa0ff9263c7e7ba4d56d0fe54913 - languageName: node - linkType: hard - "get-stream@npm:3.0.0, get-stream@npm:^3.0.0": version: 3.0.0 resolution: "get-stream@npm:3.0.0" @@ -11490,26 +11522,26 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-changed-files@^26.6.2, jest-changed-files@workspace:*, jest-changed-files@workspace:packages/jest-changed-files": +"jest-changed-files@^27.0.0-next.1, jest-changed-files@workspace:*, jest-changed-files@workspace:packages/jest-changed-files": version: 0.0.0-use.local resolution: "jest-changed-files@workspace:packages/jest-changed-files" dependencies: - "@jest/types": ^26.6.2 + "@jest/types": ^27.0.0-next.1 execa: ^5.0.0 throat: ^5.0.0 languageName: unknown linkType: soft -"jest-circus@^26.6.3, jest-circus@workspace:packages/jest-circus": +"jest-circus@^27.0.0-next.2, jest-circus@workspace:packages/jest-circus": version: 0.0.0-use.local resolution: "jest-circus@workspace:packages/jest-circus" dependencies: "@babel/core": ^7.1.0 "@babel/register": ^7.0.0 - "@jest/environment": ^26.6.2 - "@jest/test-result": ^26.6.2 - "@jest/test-utils": ^26.6.2 - "@jest/types": ^26.6.2 + "@jest/environment": ^27.0.0-next.1 + "@jest/test-result": ^27.0.0-next.1 + "@jest/test-utils": ^27.0.0-next.1 + "@jest/types": ^27.0.0-next.1 "@types/co": ^4.6.0 "@types/dedent": ^0.7.0 "@types/graceful-fs": ^4.1.3 @@ -11519,31 +11551,31 @@ fsevents@^1.2.7: co: ^4.6.0 dedent: ^0.7.0 execa: ^5.0.0 - expect: ^26.6.2 + expect: ^27.0.0-next.1 graceful-fs: ^4.2.4 is-generator-fn: ^2.0.0 - jest-each: ^26.6.2 - jest-matcher-utils: ^26.6.2 - jest-message-util: ^26.6.2 - jest-runner: ^26.6.3 - jest-runtime: ^26.6.3 - jest-snapshot: ^26.6.2 + jest-each: ^27.0.0-next.1 + jest-matcher-utils: ^27.0.0-next.1 + jest-message-util: ^27.0.0-next.1 + jest-runner: ^27.0.0-next.2 + jest-runtime: ^27.0.0-next.2 + jest-snapshot: ^27.0.0-next.2 jest-snapshot-serializer-raw: ^1.1.0 - jest-util: ^26.6.2 - pretty-format: ^26.6.2 + jest-util: ^27.0.0-next.1 + pretty-format: ^27.0.0-next.1 stack-utils: ^2.0.3 throat: ^5.0.0 languageName: unknown linkType: soft -"jest-cli@^26.6.3, jest-cli@workspace:packages/jest-cli": +"jest-cli@^27.0.0-next.2, jest-cli@workspace:packages/jest-cli": version: 0.0.0-use.local resolution: "jest-cli@workspace:packages/jest-cli" dependencies: - "@jest/core": ^26.6.3 - "@jest/test-result": ^26.6.2 - "@jest/test-utils": ^26.6.2 - "@jest/types": ^26.6.2 + "@jest/core": ^27.0.0-next.2 + "@jest/test-result": ^27.0.0-next.1 + "@jest/test-utils": ^27.0.0-next.1 + "@jest/types": ^27.0.0-next.1 "@types/exit": ^0.1.30 "@types/graceful-fs": ^4.1.3 "@types/is-ci": ^2.0.0 @@ -11554,9 +11586,9 @@ fsevents@^1.2.7: graceful-fs: ^4.2.4 import-local: ^3.0.2 is-ci: ^2.0.0 - jest-config: ^26.6.3 - jest-util: ^26.6.2 - jest-validate: ^26.6.2 + jest-config: ^27.0.0-next.2 + jest-util: ^27.0.0-next.1 + jest-validate: ^27.0.0-next.1 prompts: ^2.0.1 yargs: ^16.0.3 bin: @@ -11564,34 +11596,34 @@ fsevents@^1.2.7: languageName: unknown linkType: soft -"jest-config@^26.6.3, jest-config@workspace:packages/jest-config": +"jest-config@^27.0.0-next.2, jest-config@workspace:packages/jest-config": version: 0.0.0-use.local resolution: "jest-config@workspace:packages/jest-config" dependencies: "@babel/core": ^7.1.0 - "@jest/test-sequencer": ^26.6.3 - "@jest/types": ^26.6.2 + "@jest/test-sequencer": ^27.0.0-next.2 + "@jest/types": ^27.0.0-next.1 "@types/babel__core": ^7.0.4 "@types/glob": ^7.1.1 "@types/graceful-fs": ^4.1.3 "@types/micromatch": ^4.0.0 - babel-jest: ^26.6.3 + babel-jest: ^27.0.0-next.2 chalk: ^4.0.0 deepmerge: ^4.2.2 glob: ^7.1.1 graceful-fs: ^4.2.4 - jest-circus: ^26.6.3 - jest-environment-jsdom: ^26.6.2 - jest-environment-node: ^26.6.2 - jest-get-type: ^26.3.0 - jest-jasmine2: ^26.6.3 - jest-regex-util: ^26.0.0 - jest-resolve: ^26.6.2 + jest-circus: ^27.0.0-next.2 + jest-environment-jsdom: ^27.0.0-next.1 + jest-environment-node: ^27.0.0-next.1 + jest-get-type: ^27.0.0-next.0 + jest-jasmine2: ^27.0.0-next.2 + jest-regex-util: ^27.0.0-next.0 + jest-resolve: ^27.0.0-next.2 jest-snapshot-serializer-raw: ^1.1.0 - jest-util: ^26.6.2 - jest-validate: ^26.6.2 + jest-util: ^27.0.0-next.1 + jest-validate: ^27.0.0-next.1 micromatch: ^4.0.2 - pretty-format: ^26.6.2 + pretty-format: ^27.0.0-next.1 strip-ansi: ^6.0.0 ts-node: ^9.0.0 typescript: ^4.0.3 @@ -11603,15 +11635,15 @@ fsevents@^1.2.7: languageName: unknown linkType: soft -"jest-diff@^26.6.2, jest-diff@workspace:packages/jest-diff": +"jest-diff@^27.0.0-next.1, jest-diff@workspace:packages/jest-diff": version: 0.0.0-use.local resolution: "jest-diff@workspace:packages/jest-diff" dependencies: - "@jest/test-utils": ^26.6.2 + "@jest/test-utils": ^27.0.0-next.1 chalk: ^4.0.0 - diff-sequences: ^26.6.2 - jest-get-type: ^26.3.0 - pretty-format: ^26.6.2 + diff-sequences: ^27.0.0-next.0 + jest-get-type: ^27.0.0-next.0 + pretty-format: ^27.0.0-next.1 strip-ansi: ^6.0.0 languageName: unknown linkType: soft @@ -11628,7 +11660,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-docblock@^26.0.0, jest-docblock@workspace:packages/jest-docblock": +"jest-docblock@^27.0.0-next.0, jest-docblock@workspace:packages/jest-docblock": version: 0.0.0-use.local resolution: "jest-docblock@workspace:packages/jest-docblock" dependencies: @@ -11637,49 +11669,58 @@ fsevents@^1.2.7: languageName: unknown linkType: soft -"jest-each@^26.6.2, jest-each@workspace:packages/jest-each": +"jest-docblock@npm:^26.0.0": + version: 26.0.0 + resolution: "jest-docblock@npm:26.0.0" + dependencies: + detect-newline: ^3.0.0 + checksum: 54b8ea1c8445a4b15e9ee5035f1bd60b0d492b87258995133a1b5df43a07803c93b54e8adaa45eae05778bd61ad57745491c625e7aa65198a9aa4f0c79030b56 + languageName: node + linkType: hard + +"jest-each@^27.0.0-next.1, jest-each@workspace:packages/jest-each": version: 0.0.0-use.local resolution: "jest-each@workspace:packages/jest-each" dependencies: - "@jest/types": ^26.6.2 + "@jest/types": ^27.0.0-next.1 chalk: ^4.0.0 - jest-get-type: ^26.3.0 - jest-util: ^26.6.2 - pretty-format: ^26.6.2 + jest-get-type: ^27.0.0-next.0 + jest-util: ^27.0.0-next.1 + pretty-format: ^27.0.0-next.1 languageName: unknown linkType: soft -"jest-environment-jsdom@^26.6.2, jest-environment-jsdom@workspace:packages/jest-environment-jsdom": +"jest-environment-jsdom@^27.0.0-next.1, jest-environment-jsdom@workspace:packages/jest-environment-jsdom": version: 0.0.0-use.local resolution: "jest-environment-jsdom@workspace:packages/jest-environment-jsdom" dependencies: - "@jest/environment": ^26.6.2 - "@jest/fake-timers": ^26.6.2 - "@jest/test-utils": ^26.6.2 - "@jest/types": ^26.6.2 + "@jest/environment": ^27.0.0-next.1 + "@jest/fake-timers": ^27.0.0-next.1 + "@jest/test-utils": ^27.0.0-next.1 + "@jest/types": ^27.0.0-next.1 "@types/jsdom": ^16.2.4 "@types/node": "*" - jest-mock: ^26.6.2 - jest-util: ^26.6.2 + jest-mock: ^27.0.0-next.1 + jest-util: ^27.0.0-next.1 jsdom: ^16.4.0 languageName: unknown linkType: soft -"jest-environment-node@*, jest-environment-node@^26.6.2, jest-environment-node@workspace:packages/jest-environment-node": +"jest-environment-node@workspace:*, jest-environment-node@workspace:packages/jest-environment-node": version: 0.0.0-use.local resolution: "jest-environment-node@workspace:packages/jest-environment-node" dependencies: - "@jest/environment": ^26.6.2 - "@jest/fake-timers": ^26.6.2 - "@jest/test-utils": ^26.6.2 - "@jest/types": ^26.6.2 + "@jest/environment": ^27.0.0-next.1 + "@jest/fake-timers": ^27.0.0-next.1 + "@jest/test-utils": ^27.0.0-next.1 + "@jest/types": ^27.0.0-next.1 "@types/node": "*" - jest-mock: ^26.6.2 - jest-util: ^26.6.2 + jest-mock: ^27.0.0-next.1 + jest-util: ^27.0.0-next.1 languageName: unknown linkType: soft -"jest-get-type@^26.3.0, jest-get-type@workspace:packages/jest-get-type": +"jest-get-type@^27.0.0-next.0, jest-get-type@workspace:packages/jest-get-type": version: 0.0.0-use.local resolution: "jest-get-type@workspace:packages/jest-get-type" languageName: unknown @@ -11699,12 +11740,12 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-haste-map@^26.6.2, jest-haste-map@workspace:packages/jest-haste-map": +"jest-haste-map@^27.0.0-next.2, jest-haste-map@workspace:packages/jest-haste-map": version: 0.0.0-use.local resolution: "jest-haste-map@workspace:packages/jest-haste-map" dependencies: - "@jest/test-utils": ^26.6.2 - "@jest/types": ^26.6.2 + "@jest/test-utils": ^27.0.0-next.1 + "@jest/types": ^27.0.0-next.1 "@types/anymatch": ^1.3.1 "@types/fb-watchman": ^2.0.0 "@types/graceful-fs": ^4.1.2 @@ -11714,11 +11755,11 @@ fsevents@^1.2.7: fb-watchman: ^2.0.0 fsevents: ^2.1.2 graceful-fs: ^4.2.4 - jest-regex-util: ^26.0.0 - jest-serializer: ^26.6.2 + jest-regex-util: ^27.0.0-next.0 + jest-serializer: ^27.0.0-next.0 jest-snapshot-serializer-raw: ^1.1.0 - jest-util: ^26.6.2 - jest-worker: ^26.6.2 + jest-util: ^27.0.0-next.1 + jest-worker: ^27.0.0-next.2 micromatch: ^4.0.2 slash: ^3.0.0 walker: ^1.0.7 @@ -11751,29 +11792,29 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-jasmine2@^26.6.3, jest-jasmine2@workspace:packages/jest-jasmine2": +"jest-jasmine2@^27.0.0-next.2, jest-jasmine2@workspace:packages/jest-jasmine2": version: 0.0.0-use.local resolution: "jest-jasmine2@workspace:packages/jest-jasmine2" dependencies: "@babel/traverse": ^7.1.0 - "@jest/environment": ^26.6.2 - "@jest/source-map": ^26.6.2 - "@jest/test-result": ^26.6.2 - "@jest/types": ^26.6.2 + "@jest/environment": ^27.0.0-next.1 + "@jest/source-map": ^27.0.0-next.0 + "@jest/test-result": ^27.0.0-next.1 + "@jest/types": ^27.0.0-next.1 "@types/babel__traverse": ^7.0.4 "@types/co": ^4.6.2 "@types/node": "*" chalk: ^4.0.0 co: ^4.6.0 - expect: ^26.6.2 + expect: ^27.0.0-next.1 is-generator-fn: ^2.0.0 - jest-each: ^26.6.2 - jest-matcher-utils: ^26.6.2 - jest-message-util: ^26.6.2 - jest-runtime: ^26.6.3 - jest-snapshot: ^26.6.2 - jest-util: ^26.6.2 - pretty-format: ^26.6.2 + jest-each: ^27.0.0-next.1 + jest-matcher-utils: ^27.0.0-next.1 + jest-message-util: ^27.0.0-next.1 + jest-runtime: ^27.0.0-next.2 + jest-snapshot: ^27.0.0-next.2 + jest-util: ^27.0.0-next.1 + pretty-format: ^27.0.0-next.1 throat: ^5.0.0 languageName: unknown linkType: soft @@ -11790,36 +11831,36 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-leak-detector@^26.6.2, jest-leak-detector@workspace:packages/jest-leak-detector": +"jest-leak-detector@^27.0.0-next.1, jest-leak-detector@workspace:packages/jest-leak-detector": version: 0.0.0-use.local resolution: "jest-leak-detector@workspace:packages/jest-leak-detector" dependencies: "@types/weak-napi": ^2.0.0 - jest-get-type: ^26.3.0 - pretty-format: ^26.6.2 + jest-get-type: ^27.0.0-next.0 + pretty-format: ^27.0.0-next.1 weak-napi: ^2.0.1 languageName: unknown linkType: soft -"jest-matcher-utils@^26.6.2, jest-matcher-utils@workspace:packages/jest-matcher-utils": +"jest-matcher-utils@^27.0.0-next.1, jest-matcher-utils@workspace:packages/jest-matcher-utils": version: 0.0.0-use.local resolution: "jest-matcher-utils@workspace:packages/jest-matcher-utils" dependencies: - "@jest/test-utils": ^26.6.2 + "@jest/test-utils": ^27.0.0-next.1 "@types/node": "*" chalk: ^4.0.0 - jest-diff: ^26.6.2 - jest-get-type: ^26.3.0 - pretty-format: ^26.6.2 + jest-diff: ^27.0.0-next.1 + jest-get-type: ^27.0.0-next.0 + pretty-format: ^27.0.0-next.1 languageName: unknown linkType: soft -"jest-message-util@^26.6.2, jest-message-util@workspace:packages/jest-message-util": +"jest-message-util@^27.0.0-next.1, jest-message-util@workspace:packages/jest-message-util": version: 0.0.0-use.local resolution: "jest-message-util@workspace:packages/jest-message-util" dependencies: "@babel/code-frame": ^7.0.0 - "@jest/types": ^26.6.2 + "@jest/types": ^27.0.0-next.1 "@types/babel__code-frame": ^7.0.0 "@types/graceful-fs": ^4.1.3 "@types/micromatch": ^4.0.0 @@ -11827,7 +11868,7 @@ fsevents@^1.2.7: chalk: ^4.0.0 graceful-fs: ^4.2.4 micromatch: ^4.0.2 - pretty-format: ^26.6.2 + pretty-format: ^27.0.0-next.1 slash: ^3.0.0 stack-utils: ^2.0.3 languageName: unknown @@ -11849,11 +11890,28 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-mock@^26.6.2, jest-mock@workspace:*, jest-mock@workspace:packages/jest-mock": +"jest-message-util@npm:^26.6.2": + version: 26.6.2 + resolution: "jest-message-util@npm:26.6.2" + dependencies: + "@babel/code-frame": ^7.0.0 + "@jest/types": ^26.6.2 + "@types/stack-utils": ^2.0.0 + chalk: ^4.0.0 + graceful-fs: ^4.2.4 + micromatch: ^4.0.2 + pretty-format: ^26.6.2 + slash: ^3.0.0 + stack-utils: ^2.0.2 + checksum: 7a47773259e5bb431e3dba44321fd75d9e3264b12fc4fe584378053a8b065c61d1c7d07625c8e2c432ccf2d7f0dc68a9f6547bc62d0d558b8e5da0e82f824ecd + languageName: node + linkType: hard + +"jest-mock@^27.0.0-next.1, jest-mock@workspace:*, jest-mock@workspace:packages/jest-mock": version: 0.0.0-use.local resolution: "jest-mock@workspace:packages/jest-mock" dependencies: - "@jest/types": ^26.6.2 + "@jest/types": ^27.0.0-next.1 "@types/node": "*" languageName: unknown linkType: soft @@ -11871,7 +11929,7 @@ fsevents@^1.2.7: version: 0.0.0-use.local resolution: "jest-phabricator@workspace:packages/jest-phabricator" dependencies: - "@jest/test-result": ^26.6.2 + "@jest/test-result": ^27.0.0-next.1 languageName: unknown linkType: soft @@ -11887,7 +11945,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-regex-util@^26.0.0, jest-regex-util@workspace:packages/jest-regex-util": +"jest-regex-util@^27.0.0-next.0, jest-regex-util@workspace:packages/jest-regex-util": version: 0.0.0-use.local resolution: "jest-regex-util@workspace:packages/jest-regex-util" dependencies: @@ -11895,56 +11953,64 @@ fsevents@^1.2.7: languageName: unknown linkType: soft +"jest-regex-util@npm:^26.0.0": + version: 26.0.0 + resolution: "jest-regex-util@npm:26.0.0" + checksum: a3d08a852a7b79e3071ebe112b9fb4122efe6b987477e6769eb78814a8306d3c9e29ed544f25bb6a6d3737668b67ee4339810ed5fe5a9d6318639d6f81f47d3d + languageName: node + linkType: hard + "jest-repl@workspace:packages/jest-repl": version: 0.0.0-use.local resolution: "jest-repl@workspace:packages/jest-repl" dependencies: - "@jest/console": ^26.6.2 - "@jest/environment": ^26.6.2 - "@jest/test-utils": ^26.6.2 - "@jest/transform": ^26.6.2 - "@jest/types": ^26.6.2 + "@jest/console": ^27.0.0-next.1 + "@jest/environment": ^27.0.0-next.1 + "@jest/test-utils": ^27.0.0-next.1 + "@jest/transform": ^27.0.0-next.2 + "@jest/types": ^27.0.0-next.1 "@types/yargs": ^15.0.0 chalk: ^4.0.0 execa: ^5.0.0 - jest-config: ^26.6.3 - jest-runtime: ^26.6.3 - jest-util: ^26.6.2 - jest-validate: ^26.6.2 + jest-config: ^27.0.0-next.2 + jest-runtime: ^27.0.0-next.2 + jest-util: ^27.0.0-next.1 + jest-validate: ^27.0.0-next.1 repl: ^0.1.3 yargs: ^16.0.3 bin: jest-repl: ./bin/jest-repl.js + jest-runtime: ./bin/jest-runtime-cli.js languageName: unknown linkType: soft -"jest-resolve-dependencies@^26.6.3, jest-resolve-dependencies@workspace:packages/jest-resolve-dependencies": +"jest-resolve-dependencies@^27.0.0-next.2, jest-resolve-dependencies@workspace:packages/jest-resolve-dependencies": version: 0.0.0-use.local resolution: "jest-resolve-dependencies@workspace:packages/jest-resolve-dependencies" dependencies: - "@jest/test-utils": ^26.6.2 - "@jest/types": ^26.6.2 - jest-haste-map: ^26.6.2 - jest-regex-util: ^26.0.0 - jest-resolve: ^26.6.2 - jest-runtime: ^26.6.3 - jest-snapshot: ^26.6.2 + "@jest/test-utils": ^27.0.0-next.1 + "@jest/types": ^27.0.0-next.1 + jest-haste-map: ^27.0.0-next.2 + jest-regex-util: ^27.0.0-next.0 + jest-resolve: ^27.0.0-next.2 + jest-runtime: ^27.0.0-next.2 + jest-snapshot: ^27.0.0-next.2 languageName: unknown linkType: soft -"jest-resolve@^26.6.2, jest-resolve@workspace:packages/jest-resolve": +"jest-resolve@^27.0.0-next.2, jest-resolve@workspace:packages/jest-resolve": version: 0.0.0-use.local resolution: "jest-resolve@workspace:packages/jest-resolve" dependencies: - "@jest/types": ^26.6.2 + "@jest/types": ^27.0.0-next.1 "@types/graceful-fs": ^4.1.3 "@types/resolve": ^1.17.0 chalk: ^4.0.0 escalade: ^3.1.1 graceful-fs: ^4.2.4 - jest-haste-map: ^26.6.2 + jest-haste-map: ^27.0.0-next.2 jest-pnp-resolver: ^1.2.2 - jest-util: ^26.6.2 + jest-util: ^27.0.0-next.1 resolve: ^1.18.1 slash: ^3.0.0 languageName: unknown @@ -11961,15 +12027,15 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-runner@^26.6.3, jest-runner@workspace:packages/jest-runner": +"jest-runner@^27.0.0-next.2, jest-runner@workspace:packages/jest-runner": version: 0.0.0-use.local resolution: "jest-runner@workspace:packages/jest-runner" dependencies: - "@jest/console": ^26.6.2 - "@jest/environment": ^26.6.2 - "@jest/test-result": ^26.6.2 - "@jest/transform": ^26.6.2 - "@jest/types": ^26.6.2 + "@jest/console": ^27.0.0-next.1 + "@jest/environment": ^27.0.0-next.1 + "@jest/test-result": ^27.0.0-next.1 + "@jest/transform": ^27.0.0-next.2 + "@jest/types": ^27.0.0-next.1 "@types/exit": ^0.1.30 "@types/graceful-fs": ^4.1.2 "@types/node": "*" @@ -11978,34 +12044,34 @@ fsevents@^1.2.7: emittery: ^0.7.1 exit: ^0.1.2 graceful-fs: ^4.2.4 - jest-config: ^26.6.3 - jest-docblock: ^26.0.0 - jest-haste-map: ^26.6.2 - jest-jasmine2: ^26.6.3 - jest-leak-detector: ^26.6.2 - jest-message-util: ^26.6.2 - jest-resolve: ^26.6.2 - jest-runtime: ^26.6.3 - jest-util: ^26.6.2 - jest-worker: ^26.6.2 + jest-config: ^27.0.0-next.2 + jest-docblock: ^27.0.0-next.0 + jest-haste-map: ^27.0.0-next.2 + jest-jasmine2: ^27.0.0-next.2 + jest-leak-detector: ^27.0.0-next.1 + jest-message-util: ^27.0.0-next.1 + jest-resolve: ^27.0.0-next.2 + jest-runtime: ^27.0.0-next.2 + jest-util: ^27.0.0-next.1 + jest-worker: ^27.0.0-next.2 source-map-support: ^0.5.6 throat: ^5.0.0 languageName: unknown linkType: soft -"jest-runtime@^26.6.3, jest-runtime@workspace:packages/jest-runtime": +"jest-runtime@^27.0.0-next.2, jest-runtime@workspace:packages/jest-runtime": version: 0.0.0-use.local resolution: "jest-runtime@workspace:packages/jest-runtime" dependencies: - "@jest/console": ^26.6.2 - "@jest/environment": ^26.6.2 - "@jest/fake-timers": ^26.6.2 - "@jest/globals": ^26.6.2 - "@jest/source-map": ^26.6.2 - "@jest/test-result": ^26.6.2 - "@jest/test-utils": ^26.6.2 - "@jest/transform": ^26.6.2 - "@jest/types": ^26.6.2 + "@jest/console": ^27.0.0-next.1 + "@jest/environment": ^27.0.0-next.1 + "@jest/fake-timers": ^27.0.0-next.1 + "@jest/globals": ^27.0.0-next.1 + "@jest/source-map": ^27.0.0-next.0 + "@jest/test-result": ^27.0.0-next.1 + "@jest/test-utils": ^27.0.0-next.1 + "@jest/transform": ^27.0.0-next.2 + "@jest/types": ^27.0.0-next.1 "@types/exit": ^0.1.30 "@types/glob": ^7.1.1 "@types/graceful-fs": ^4.1.2 @@ -12018,25 +12084,23 @@ fsevents@^1.2.7: exit: ^0.1.2 glob: ^7.1.3 graceful-fs: ^4.2.4 - jest-environment-node: ^26.6.2 - jest-haste-map: ^26.6.2 - jest-message-util: ^26.6.2 - jest-mock: ^26.6.2 - jest-regex-util: ^26.0.0 - jest-resolve: ^26.6.2 - jest-snapshot: ^26.6.2 + jest-environment-node: ^27.0.0-next.1 + jest-haste-map: ^27.0.0-next.2 + jest-message-util: ^27.0.0-next.1 + jest-mock: ^27.0.0-next.1 + jest-regex-util: ^27.0.0-next.0 + jest-resolve: ^27.0.0-next.2 + jest-snapshot: ^27.0.0-next.2 jest-snapshot-serializer-raw: ^1.1.0 - jest-util: ^26.6.2 - jest-validate: ^26.6.2 + jest-util: ^27.0.0-next.1 + jest-validate: ^27.0.0-next.1 slash: ^3.0.0 strip-bom: ^4.0.0 yargs: ^16.0.3 - bin: - jest-runtime: ./bin/jest-runtime.js languageName: unknown linkType: soft -"jest-serializer@^26.6.2, jest-serializer@workspace:packages/jest-serializer": +"jest-serializer@^27.0.0-next.0, jest-serializer@workspace:packages/jest-serializer": version: 0.0.0-use.local resolution: "jest-serializer@workspace:packages/jest-serializer" dependencies: @@ -12070,7 +12134,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-snapshot@^26.6.2, jest-snapshot@workspace:*, jest-snapshot@workspace:packages/jest-snapshot": +"jest-snapshot@^27.0.0-next.2, jest-snapshot@workspace:*, jest-snapshot@workspace:packages/jest-snapshot": version: 0.0.0-use.local resolution: "jest-snapshot@workspace:packages/jest-snapshot" dependencies: @@ -12082,8 +12146,8 @@ fsevents@^1.2.7: "@babel/preset-react": ^7.7.2 "@babel/traverse": ^7.3.4 "@babel/types": ^7.0.0 - "@jest/test-utils": ^26.6.2 - "@jest/types": ^26.6.2 + "@jest/test-utils": ^27.0.0-next.1 + "@jest/types": ^27.0.0-next.1 "@types/babel__traverse": ^7.0.4 "@types/graceful-fs": ^4.1.3 "@types/natural-compare": ^1.4.0 @@ -12093,17 +12157,17 @@ fsevents@^1.2.7: ansi-styles: ^5.0.0 babel-preset-current-node-syntax: ^1.0.0 chalk: ^4.0.0 - expect: ^26.6.2 + expect: ^27.0.0-next.1 graceful-fs: ^4.2.4 - jest-diff: ^26.6.2 - jest-get-type: ^26.3.0 - jest-haste-map: ^26.6.2 - jest-matcher-utils: ^26.6.2 - jest-message-util: ^26.6.2 - jest-resolve: ^26.6.2 + jest-diff: ^27.0.0-next.1 + jest-get-type: ^27.0.0-next.0 + jest-haste-map: ^27.0.0-next.2 + jest-matcher-utils: ^27.0.0-next.1 + jest-message-util: ^27.0.0-next.1 + jest-resolve: ^27.0.0-next.2 natural-compare: ^1.4.0 prettier: ^2.0.0 - pretty-format: ^26.6.2 + pretty-format: ^27.0.0-next.1 semver: ^7.3.2 peerDependencies: "@babel/core": ^7.7.2 @@ -12113,11 +12177,11 @@ fsevents@^1.2.7: languageName: unknown linkType: soft -"jest-util@^26.0.0, jest-util@^26.6.2, jest-util@workspace:packages/jest-util": +"jest-util@^27.0.0-next.1, jest-util@workspace:packages/jest-util": version: 0.0.0-use.local resolution: "jest-util@workspace:packages/jest-util" dependencies: - "@jest/types": ^26.6.2 + "@jest/types": ^27.0.0-next.1 "@types/graceful-fs": ^4.1.2 "@types/is-ci": ^2.0.0 "@types/micromatch": ^4.0.0 @@ -12149,17 +12213,31 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-validate@^26.6.2, jest-validate@workspace:packages/jest-validate": +"jest-util@npm:^26.0.0, jest-util@npm:^26.6.2": + version: 26.6.2 + resolution: "jest-util@npm:26.6.2" + dependencies: + "@jest/types": ^26.6.2 + "@types/node": "*" + chalk: ^4.0.0 + graceful-fs: ^4.2.4 + is-ci: ^2.0.0 + micromatch: ^4.0.2 + checksum: 1aef748c8224d00ead3389899177bd3b619479db7318f8d7de7fbedce283ac6a8dc8c9364a40a68e83e68e03fa18afbd6b49c8aafb81112807872f0f90fb5a37 + languageName: node + linkType: hard + +"jest-validate@^27.0.0-next.1, jest-validate@workspace:packages/jest-validate": version: 0.0.0-use.local resolution: "jest-validate@workspace:packages/jest-validate" dependencies: - "@jest/types": ^26.6.2 + "@jest/types": ^27.0.0-next.1 "@types/yargs": ^15.0.3 camelcase: ^6.0.0 chalk: ^4.0.0 - jest-get-type: ^26.3.0 + jest-get-type: ^27.0.0-next.0 leven: ^3.1.0 - pretty-format: ^26.6.2 + pretty-format: ^27.0.0-next.1 languageName: unknown linkType: soft @@ -12194,9 +12272,23 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-watcher@^26.3.0, jest-watcher@^26.6.2, jest-watcher@workspace:packages/jest-watcher": +"jest-watcher@^27.0.0-next.1, jest-watcher@workspace:packages/jest-watcher": version: 0.0.0-use.local resolution: "jest-watcher@workspace:packages/jest-watcher" + dependencies: + "@jest/test-result": ^27.0.0-next.1 + "@jest/types": ^27.0.0-next.1 + "@types/node": "*" + ansi-escapes: ^4.2.1 + chalk: ^4.0.0 + jest-util: ^27.0.0-next.1 + string-length: ^4.0.1 + languageName: unknown + linkType: soft + +"jest-watcher@npm:^26.3.0": + version: 26.6.2 + resolution: "jest-watcher@npm:26.6.2" dependencies: "@jest/test-result": ^26.6.2 "@jest/types": ^26.6.2 @@ -12205,8 +12297,9 @@ fsevents@^1.2.7: chalk: ^4.0.0 jest-util: ^26.6.2 string-length: ^4.0.1 - languageName: unknown - linkType: soft + checksum: d4a13c17c7b9bd98616d7a4ff087c0c16346038ba6b6db6f4a15acbce2ea9a9c7b8b873d174ade3f458c9ad5607f7cadd29309aa13f03a844f984d3711b57805 + languageName: node + linkType: hard "jest-website@workspace:website": version: 0.0.0-use.local @@ -12219,7 +12312,7 @@ fsevents@^1.2.7: languageName: unknown linkType: soft -"jest-worker@^26.6.2, jest-worker@workspace:packages/jest-worker": +"jest-worker@^27.0.0-next.2, jest-worker@workspace:packages/jest-worker": version: 0.0.0-use.local resolution: "jest-worker@workspace:packages/jest-worker" dependencies: @@ -12262,13 +12355,13 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest@*, jest@workspace:*, jest@workspace:packages/jest": +"jest@workspace:*, jest@workspace:packages/jest": version: 0.0.0-use.local resolution: "jest@workspace:packages/jest" dependencies: - "@jest/core": ^26.6.3 + "@jest/core": ^27.0.0-next.2 import-local: ^3.0.2 - jest-cli: ^26.6.3 + jest-cli: ^27.0.0-next.2 bin: jest: ./bin/jest.js languageName: unknown @@ -16039,18 +16132,18 @@ fsevents@^1.2.7: languageName: node linkType: hard -"pretty-format@^26.6.2, pretty-format@workspace:packages/pretty-format": +"pretty-format@^27.0.0-next.1, pretty-format@workspace:packages/pretty-format": version: 0.0.0-use.local resolution: "pretty-format@workspace:packages/pretty-format" dependencies: - "@jest/types": ^26.6.2 + "@jest/types": ^27.0.0-next.1 "@types/react": "*" "@types/react-is": ^17.0.0 "@types/react-test-renderer": "*" ansi-regex: ^5.0.0 ansi-styles: ^5.0.0 immutable: 4.0.0-rc.9 - jest-util: ^26.6.2 + jest-util: ^27.0.0-next.1 react: "*" react-dom: "*" react-is: ^17.0.1 @@ -16094,6 +16187,18 @@ fsevents@^1.2.7: languageName: node linkType: hard +"pretty-format@npm:^26.6.2": + version: 26.6.2 + resolution: "pretty-format@npm:26.6.2" + dependencies: + "@jest/types": ^26.6.2 + ansi-regex: ^5.0.0 + ansi-styles: ^4.0.0 + react-is: ^17.0.1 + checksum: 5ad34fc128218485732cf0271d396158a00584708fc97bf063c1c3c000fe14da572e9a1d3d7b92d95c5e24965434656c56ed0e45804dea2435ca59a1f86f1b07 + languageName: node + linkType: hard + "prismjs@npm:^1.17.1": version: 1.22.0 resolution: "prismjs@npm:1.22.0" @@ -16522,7 +16627,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"react-native@npm:0.63.2": +react-native@0.63.2: version: 0.63.2 resolution: "react-native@npm:0.63.2" dependencies: @@ -16561,6 +16666,45 @@ fsevents@^1.2.7: languageName: node linkType: hard +"react-native@patch:react-native@0.63.2#./patches/react-native.patch::locator=%40jest%2Fmonorepo%40workspace%3A.": + version: 0.63.2 + resolution: "react-native@patch:react-native@npm%3A0.63.2#./patches/react-native.patch::version=0.63.2&hash=c73352&locator=%40jest%2Fmonorepo%40workspace%3A." + dependencies: + "@babel/runtime": ^7.0.0 + "@react-native-community/cli": ^4.7.0 + "@react-native-community/cli-platform-android": ^4.7.0 + "@react-native-community/cli-platform-ios": ^4.7.0 + abort-controller: ^3.0.0 + anser: ^1.4.9 + base64-js: ^1.1.2 + event-target-shim: ^5.0.1 + fbjs: ^1.0.0 + fbjs-scripts: ^1.1.0 + hermes-engine: ~0.5.0 + invariant: ^2.2.4 + jsc-android: ^245459.0.0 + metro-babel-register: 0.59.0 + metro-react-native-babel-transformer: 0.59.0 + metro-source-map: 0.59.0 + nullthrows: ^1.1.1 + pretty-format: ^24.9.0 + promise: ^8.0.3 + prop-types: ^15.7.2 + react-devtools-core: ^4.6.0 + react-refresh: ^0.4.0 + regenerator-runtime: ^0.13.2 + scheduler: 0.19.1 + stacktrace-parser: ^0.1.3 + use-subscription: ^1.0.0 + whatwg-fetch: ^3.0.0 + peerDependencies: + react: 16.13.1 + bin: + react-native: ./cli.js + checksum: 24110fd69d4cea1111fc9d2d0df3b01d55135dac17ccf3258f6c38abefd20deff31992a7f65f73e0b89068c8f8558a3cf5529eb31db41b9ee7e104ea5488e38a + languageName: node + linkType: hard + "react-refresh@npm:^0.4.0": version: 0.4.3 resolution: "react-refresh@npm:0.4.3" @@ -18085,7 +18229,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"stack-utils@npm:^2.0.3": +"stack-utils@npm:^2.0.2, stack-utils@npm:^2.0.3": version: 2.0.3 resolution: "stack-utils@npm:2.0.3" dependencies: