diff --git a/CHANGELOG.md b/CHANGELOG.md index 76a9f07e2a78..19ec0106b0c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,8 @@ ### Chore & Maintenance +- `[*]` Update `@babel/*` deps, resulting on slightly different atack traces for `each` ([#13422](https://github.com/facebook/jest/pull/13422)) + ### Performance - `[jest-runner]` Do not instrument v8 coverage data if coverage should not be collected [#13282](https://github.com/facebook/jest/pull/13282) diff --git a/e2e/__tests__/__snapshots__/circusDeclarationErrors.test.ts.snap b/e2e/__tests__/__snapshots__/circusDeclarationErrors.test.ts.snap index d541ca6e6fbe..f5808a9413b9 100644 --- a/e2e/__tests__/__snapshots__/circusDeclarationErrors.test.ts.snap +++ b/e2e/__tests__/__snapshots__/circusDeclarationErrors.test.ts.snap @@ -16,7 +16,7 @@ exports[`defining tests and hooks asynchronously throws 1`] = ` 14 | }); 15 | }); - at eventHandler (../../packages/jest-circus/build/eventHandler.js:153:11) + at eventHandler (../../packages/jest-circus/build/eventHandler.js:134:11) at test (__tests__/asyncDefinition.test.js:12:5) ● Test suite failed to run @@ -31,7 +31,7 @@ exports[`defining tests and hooks asynchronously throws 1`] = ` 15 | }); 16 | - at eventHandler (../../packages/jest-circus/build/eventHandler.js:113:11) + at eventHandler (../../packages/jest-circus/build/eventHandler.js:97:11) at afterAll (__tests__/asyncDefinition.test.js:13:5) ● Test suite failed to run @@ -46,7 +46,7 @@ exports[`defining tests and hooks asynchronously throws 1`] = ` 20 | }); 21 | - at eventHandler (../../packages/jest-circus/build/eventHandler.js:153:11) + at eventHandler (../../packages/jest-circus/build/eventHandler.js:134:11) at test (__tests__/asyncDefinition.test.js:18:3) ● Test suite failed to run @@ -60,6 +60,6 @@ exports[`defining tests and hooks asynchronously throws 1`] = ` 20 | }); 21 | - at eventHandler (../../packages/jest-circus/build/eventHandler.js:113:11) + at eventHandler (../../packages/jest-circus/build/eventHandler.js:97:11) at afterAll (__tests__/asyncDefinition.test.js:19:3)" `; diff --git a/e2e/__tests__/__snapshots__/consoleLogOutputWhenRunInBand.test.ts.snap b/e2e/__tests__/__snapshots__/consoleLogOutputWhenRunInBand.test.ts.snap index e092acb545d1..7afe4b918b81 100644 --- a/e2e/__tests__/__snapshots__/consoleLogOutputWhenRunInBand.test.ts.snap +++ b/e2e/__tests__/__snapshots__/consoleLogOutputWhenRunInBand.test.ts.snap @@ -20,6 +20,6 @@ exports[`prints console.logs when run with forceExit 3`] = ` " console.log Hey - at Object. (__tests__/a-banana.js:1:1) + at Object. (__tests__/a-banana.js:1:41) " `; diff --git a/e2e/__tests__/__snapshots__/each.test.ts.snap b/e2e/__tests__/__snapshots__/each.test.ts.snap index cd99de4520bb..4a45f6442fe8 100644 --- a/e2e/__tests__/__snapshots__/each.test.ts.snap +++ b/e2e/__tests__/__snapshots__/each.test.ts.snap @@ -63,12 +63,12 @@ exports[`shows error message when not enough arguments are supplied to tests 1`] 6 | */ 7 | > 8 | it.each\` - | ^ + | ^ 9 | left | right 10 | \${true} | \${true} 11 | \${true} - at Object. (__tests__/eachException.test.js:8:1) + at Object. (__tests__/eachException.test.js:8:9) ● throws exception when not enough arguments are supplied $left == $right @@ -86,12 +86,12 @@ exports[`shows error message when not enough arguments are supplied to tests 1`] 17 | ); 18 | > 19 | it.each\` - | ^ + | ^ 20 | left | right | up | down 21 | \${true} | \${true} 22 | \`( - at Object. (__tests__/eachException.test.js:19:1)" + at Object. (__tests__/eachException.test.js:19:9)" `; exports[`shows only the tests with .only as being ran 1`] = ` diff --git a/e2e/__tests__/__snapshots__/errorOnDeprecated.test.ts.snap b/e2e/__tests__/__snapshots__/errorOnDeprecated.test.ts.snap index 8c4a72d95339..2b7a60046b57 100644 --- a/e2e/__tests__/__snapshots__/errorOnDeprecated.test.ts.snap +++ b/e2e/__tests__/__snapshots__/errorOnDeprecated.test.ts.snap @@ -11,12 +11,12 @@ exports[`defaultTimeoutInterval.test.js errors in errorOnDeprecated mode 1`] = ` 8 | 9 | test('Default Timeout Interval', () => { > 10 | jasmine.DEFAULT_TIMEOUT_INTERVAL = 1000; - | ^ + | ^ 11 | expect(true).toBe(true); 12 | }); 13 | - at Object. (__tests__/defaultTimeoutInterval.test.js:10:3)" + at Object. (__tests__/defaultTimeoutInterval.test.js:10:35)" `; exports[`fail.test.js errors in errorOnDeprecated mode 1`] = ` diff --git a/e2e/__tests__/__snapshots__/moduleNameMapper.test.ts.snap b/e2e/__tests__/__snapshots__/moduleNameMapper.test.ts.snap index 20aad34dd9ef..5e4d71fbf3e9 100644 --- a/e2e/__tests__/__snapshots__/moduleNameMapper.test.ts.snap +++ b/e2e/__tests__/__snapshots__/moduleNameMapper.test.ts.snap @@ -41,7 +41,7 @@ exports[`moduleNameMapper wrong array configuration 1`] = ` 12 | module.exports = () => 'test'; 13 | - at createNoMappedModuleFoundError (../../packages/jest-resolve/build/resolver.js:891:17) + at createNoMappedModuleFoundError (../../packages/jest-resolve/build/resolver.js:752:17) at Object.require (index.js:10:1) at Object.require (__tests__/index.js:10:20)" `; @@ -71,7 +71,7 @@ exports[`moduleNameMapper wrong configuration 1`] = ` 12 | module.exports = () => 'test'; 13 | - at createNoMappedModuleFoundError (../../packages/jest-resolve/build/resolver.js:891:17) + at createNoMappedModuleFoundError (../../packages/jest-resolve/build/resolver.js:752:17) at Object.require (index.js:10:1) at Object.require (__tests__/index.js:10:20)" `; diff --git a/e2e/__tests__/__snapshots__/requireMissingExt.test.ts.snap b/e2e/__tests__/__snapshots__/requireMissingExt.test.ts.snap index b3a529188daa..62cd96c39c42 100644 --- a/e2e/__tests__/__snapshots__/requireMissingExt.test.ts.snap +++ b/e2e/__tests__/__snapshots__/requireMissingExt.test.ts.snap @@ -26,7 +26,7 @@ exports[`shows a proper error from deep requires 1`] = ` 12 | test('dummy', () => { 13 | expect(1).toBe(1); - at Resolver._throwModNotFoundError (../../packages/jest-resolve/build/resolver.js:487:11) + at Resolver._throwModNotFoundError (../../packages/jest-resolve/build/resolver.js:425:11) at Object. (node_modules/discord.js/src/index.js:21:12) at Object.require (__tests__/test.js:10:1)" `; diff --git a/e2e/__tests__/__snapshots__/resolveNoFileExtensions.test.ts.snap b/e2e/__tests__/__snapshots__/resolveNoFileExtensions.test.ts.snap index b906b0cf9d7d..a6c967952cb4 100644 --- a/e2e/__tests__/__snapshots__/resolveNoFileExtensions.test.ts.snap +++ b/e2e/__tests__/__snapshots__/resolveNoFileExtensions.test.ts.snap @@ -37,7 +37,7 @@ exports[`show error message with matching files 1`] = ` | ^ 9 | - at Resolver._throwModNotFoundError (../../packages/jest-resolve/build/resolver.js:487:11) + at Resolver._throwModNotFoundError (../../packages/jest-resolve/build/resolver.js:425:11) at Object.require (index.js:8:18) at Object.require (__tests__/test.js:8:11)" `; diff --git a/e2e/__tests__/__snapshots__/testFailing.test.ts.snap b/e2e/__tests__/__snapshots__/testFailing.test.ts.snap index f5363d5d22af..899e759572c4 100644 --- a/e2e/__tests__/__snapshots__/testFailing.test.ts.snap +++ b/e2e/__tests__/__snapshots__/testFailing.test.ts.snap @@ -41,14 +41,12 @@ exports[`works with all statuses 1`] = ` 28 | }); 29 | > 30 | test.failing.each([ - | ^ + | ^ 31 | {a: 1, b: 1, expected: 2}, 32 | {a: 1, b: 2, expected: 3}, 33 | {a: 2, b: 1, expected: 3}, - at ../../packages/jest-each/build/bind.js:45:11 - at Array.forEach () - at Object. (__tests__/statuses.test.js:30:1) + at Object.each (__tests__/statuses.test.js:30:14) ● .add(1, 2) @@ -57,14 +55,12 @@ exports[`works with all statuses 1`] = ` 28 | }); 29 | > 30 | test.failing.each([ - | ^ + | ^ 31 | {a: 1, b: 1, expected: 2}, 32 | {a: 1, b: 2, expected: 3}, 33 | {a: 2, b: 1, expected: 3}, - at ../../packages/jest-each/build/bind.js:45:11 - at Array.forEach () - at Object. (__tests__/statuses.test.js:30:1) + at Object.each (__tests__/statuses.test.js:30:14) ● .add(2, 1) @@ -73,14 +69,12 @@ exports[`works with all statuses 1`] = ` 28 | }); 29 | > 30 | test.failing.each([ - | ^ + | ^ 31 | {a: 1, b: 1, expected: 2}, 32 | {a: 1, b: 2, expected: 3}, 33 | {a: 2, b: 1, expected: 3}, - at ../../packages/jest-each/build/bind.js:45:11 - at Array.forEach () - at Object. (__tests__/statuses.test.js:30:1) + at Object.each (__tests__/statuses.test.js:30:14) ● failing passes = fails @@ -130,14 +124,12 @@ exports[`works with concurrent and only mode 1`] = ` 15 | }); 16 | > 17 | test.concurrent.only.failing.each([ - | ^ + | ^ 18 | {a: 1, b: 1, expected: 2}, 19 | {a: 1, b: 2, expected: 3}, 20 | {a: 2, b: 1, expected: 3}, - at ../../packages/jest-each/build/bind.js:45:11 - at Array.forEach () - at __tests__/worksWithConcurrentOnlyMode.test.js:17:3 + at each (__tests__/worksWithConcurrentOnlyMode.test.js:17:32) at Object.describe (__tests__/worksWithConcurrentOnlyMode.test.js:8:1) ● block with concurrent › .add(1, 2) @@ -147,14 +139,12 @@ exports[`works with concurrent and only mode 1`] = ` 15 | }); 16 | > 17 | test.concurrent.only.failing.each([ - | ^ + | ^ 18 | {a: 1, b: 1, expected: 2}, 19 | {a: 1, b: 2, expected: 3}, 20 | {a: 2, b: 1, expected: 3}, - at ../../packages/jest-each/build/bind.js:45:11 - at Array.forEach () - at __tests__/worksWithConcurrentOnlyMode.test.js:17:3 + at each (__tests__/worksWithConcurrentOnlyMode.test.js:17:32) at Object.describe (__tests__/worksWithConcurrentOnlyMode.test.js:8:1) ● block with concurrent › .add(2, 1) @@ -164,14 +154,12 @@ exports[`works with concurrent and only mode 1`] = ` 15 | }); 16 | > 17 | test.concurrent.only.failing.each([ - | ^ + | ^ 18 | {a: 1, b: 1, expected: 2}, 19 | {a: 1, b: 2, expected: 3}, 20 | {a: 2, b: 1, expected: 3}, - at ../../packages/jest-each/build/bind.js:45:11 - at Array.forEach () - at __tests__/worksWithConcurrentOnlyMode.test.js:17:3 + at each (__tests__/worksWithConcurrentOnlyMode.test.js:17:32) at Object.describe (__tests__/worksWithConcurrentOnlyMode.test.js:8:1)" `; @@ -225,14 +213,12 @@ exports[`works with concurrent mode 1`] = ` 15 | }); 16 | > 17 | test.concurrent.failing.each([ - | ^ + | ^ 18 | {a: 1, b: 1, expected: 2}, 19 | {a: 1, b: 2, expected: 3}, 20 | {a: 2, b: 1, expected: 3}, - at ../../packages/jest-each/build/bind.js:45:11 - at Array.forEach () - at __tests__/worksWithConcurrentMode.test.js:17:3 + at each (__tests__/worksWithConcurrentMode.test.js:17:27) at Object.describe (__tests__/worksWithConcurrentMode.test.js:8:1) ● block with concurrent › .add(1, 2) @@ -242,14 +228,12 @@ exports[`works with concurrent mode 1`] = ` 15 | }); 16 | > 17 | test.concurrent.failing.each([ - | ^ + | ^ 18 | {a: 1, b: 1, expected: 2}, 19 | {a: 1, b: 2, expected: 3}, 20 | {a: 2, b: 1, expected: 3}, - at ../../packages/jest-each/build/bind.js:45:11 - at Array.forEach () - at __tests__/worksWithConcurrentMode.test.js:17:3 + at each (__tests__/worksWithConcurrentMode.test.js:17:27) at Object.describe (__tests__/worksWithConcurrentMode.test.js:8:1) ● block with concurrent › .add(2, 1) @@ -259,14 +243,12 @@ exports[`works with concurrent mode 1`] = ` 15 | }); 16 | > 17 | test.concurrent.failing.each([ - | ^ + | ^ 18 | {a: 1, b: 1, expected: 2}, 19 | {a: 1, b: 2, expected: 3}, 20 | {a: 2, b: 1, expected: 3}, - at ../../packages/jest-each/build/bind.js:45:11 - at Array.forEach () - at __tests__/worksWithConcurrentMode.test.js:17:3 + at each (__tests__/worksWithConcurrentMode.test.js:17:27) at Object.describe (__tests__/worksWithConcurrentMode.test.js:8:1)" `; @@ -300,14 +282,12 @@ exports[`works with only mode 1`] = ` 13 | }); 14 | > 15 | it.only.failing.each([ - | ^ + | ^ 16 | {a: 1, b: 1, expected: 2}, 17 | {a: 1, b: 2, expected: 3}, 18 | {a: 2, b: 1, expected: 3}, - at ../../packages/jest-each/build/bind.js:45:11 - at Array.forEach () - at __tests__/worksWithOnlyMode.test.js:15:3 + at each (__tests__/worksWithOnlyMode.test.js:15:19) at Object.describe (__tests__/worksWithOnlyMode.test.js:10:1) ● block with only, should pass › .add(1, 2) @@ -317,14 +297,12 @@ exports[`works with only mode 1`] = ` 13 | }); 14 | > 15 | it.only.failing.each([ - | ^ + | ^ 16 | {a: 1, b: 1, expected: 2}, 17 | {a: 1, b: 2, expected: 3}, 18 | {a: 2, b: 1, expected: 3}, - at ../../packages/jest-each/build/bind.js:45:11 - at Array.forEach () - at __tests__/worksWithOnlyMode.test.js:15:3 + at each (__tests__/worksWithOnlyMode.test.js:15:19) at Object.describe (__tests__/worksWithOnlyMode.test.js:10:1) ● block with only, should pass › .add(2, 1) @@ -334,14 +312,12 @@ exports[`works with only mode 1`] = ` 13 | }); 14 | > 15 | it.only.failing.each([ - | ^ + | ^ 16 | {a: 1, b: 1, expected: 2}, 17 | {a: 1, b: 2, expected: 3}, 18 | {a: 2, b: 1, expected: 3}, - at ../../packages/jest-each/build/bind.js:45:11 - at Array.forEach () - at __tests__/worksWithOnlyMode.test.js:15:3 + at each (__tests__/worksWithOnlyMode.test.js:15:19) at Object.describe (__tests__/worksWithOnlyMode.test.js:10:1) ● block with only, should fail › failing passes = fails, should fail diff --git a/e2e/__tests__/__snapshots__/testFailingJasmine.test.ts.snap b/e2e/__tests__/__snapshots__/testFailingJasmine.test.ts.snap index 3e1f84140356..a569f91ac1eb 100644 --- a/e2e/__tests__/__snapshots__/testFailingJasmine.test.ts.snap +++ b/e2e/__tests__/__snapshots__/testFailingJasmine.test.ts.snap @@ -46,7 +46,7 @@ FAIL __tests__/worksWithConcurrentMode.test.js 15 | }); 16 | - at Function.failing (../../packages/jest-jasmine2/build/jasmineAsyncInstall.js:195:11) + at Function.failing (../../packages/jest-jasmine2/build/jasmineAsyncInstall.js:164:11) at Suite.failing (__tests__/worksWithConcurrentMode.test.js:13:17) at Object.describe (__tests__/worksWithConcurrentMode.test.js:8:1) @@ -80,7 +80,7 @@ FAIL __tests__/worksWithConcurrentOnlyMode.test.js 15 | }); 16 | - at Function.failing (../../packages/jest-jasmine2/build/jasmineAsyncInstall.js:195:11) + at Function.failing (../../packages/jest-jasmine2/build/jasmineAsyncInstall.js:164:11) at Suite.failing (__tests__/worksWithConcurrentOnlyMode.test.js:13:22) at Object.describe (__tests__/worksWithConcurrentOnlyMode.test.js:8:1) diff --git a/e2e/__tests__/__snapshots__/transform.test.ts.snap b/e2e/__tests__/__snapshots__/transform.test.ts.snap index 12dfa3f38bec..ff6901ad7061 100644 --- a/e2e/__tests__/__snapshots__/transform.test.ts.snap +++ b/e2e/__tests__/__snapshots__/transform.test.ts.snap @@ -6,7 +6,7 @@ exports[`babel-jest ignored tells user to match ignored files 1`] = ` babel-jest: Babel ignores __tests__/ignoredFile.test.js - make sure to include the file in Jest's transformIgnorePatterns as well. - at assertLoadedBabelConfig (../../../packages/babel-jest/build/index.js:130:11)" + at assertLoadedBabelConfig (../../../packages/babel-jest/build/index.js:105:11)" `; exports[`babel-jest instruments only specific files and collects coverage 1`] = ` diff --git a/e2e/__tests__/locationInResults.test.ts b/e2e/__tests__/locationInResults.test.ts index 8035150079cb..520209ae4774 100644 --- a/e2e/__tests__/locationInResults.test.ts +++ b/e2e/__tests__/locationInResults.test.ts @@ -45,12 +45,12 @@ it('adds correct location info when provided with flag', () => { }); expect(assertions[3].location).toEqual({ - column: isJestJasmineRun() ? 22 : 1, + column: 22, line: 23, }); expect(assertions[4].location).toEqual({ - column: isJestJasmineRun() ? 22 : 1, + column: 22, line: 23, }); @@ -72,12 +72,12 @@ it('adds correct location info when provided with flag', () => { }); expect(assertions[8].location).toEqual({ - column: isJestJasmineRun() ? 24 : 3, + column: 24, line: 41, }); expect(assertions[9].location).toEqual({ - column: isJestJasmineRun() ? 24 : 3, + column: 24, line: 41, }); }); diff --git a/packages/babel-plugin-jest-hoist/src/__tests__/__snapshots__/hoistPlugin.test.ts.snap b/packages/babel-plugin-jest-hoist/src/__tests__/__snapshots__/hoistPlugin.test.ts.snap index a95af4e804b7..b69f8f718fe4 100644 --- a/packages/babel-plugin-jest-hoist/src/__tests__/__snapshots__/hoistPlugin.test.ts.snap +++ b/packages/babel-plugin-jest-hoist/src/__tests__/__snapshots__/hoistPlugin.test.ts.snap @@ -14,12 +14,9 @@ _getJestObj().mock('some-module', () => { const actual = jest.requireActual('some-module'); return jest.fn(); }); - function _getJestObj() { const {jest} = require('@jest/globals'); - _getJestObj = () => jest; - return jest; } @@ -33,7 +30,6 @@ jest.mock('./App', () => () =>
Hello world
); ↓ ↓ ↓ ↓ ↓ ↓ var _jsxFileName = '/root/project/src/file.js'; - _getJestObj().mock( './App', () => () => @@ -52,14 +48,10 @@ _getJestObj().mock( this, ), ); - import {jsxDEV as _jsxDEV} from 'react/jsx-dev-runtime'; - function _getJestObj() { const {jest} = require('@jest/globals'); - _getJestObj = () => jest; - return jest; } @@ -77,12 +69,9 @@ jest.mock('some-module', () => { _getJestObj().mock('some-module', () => { _getJestObj().mock('some-module'); }); - function _getJestObj() { const {jest} = require('@jest/globals'); - _getJestObj = () => jest; - return jest; } @@ -102,15 +91,11 @@ jest.requireActual('some-module'); _getJestObj().mock('some-module', () => { _getJestObj().requireActual('some-module'); }); - function _getJestObj() { const {jest} = require('@jest/globals'); - _getJestObj = () => jest; - return jest; } - jest.requireActual('some-module'); @@ -129,15 +114,11 @@ jest.mock('some-module', () => { _getJestObj().mock('some-module', () => { _getJestObj().mock('some-module'); }); - function _getJestObj() { const {jest} = require('@jest/globals'); - _getJestObj = () => jest; - return jest; } - import {jest} from '@jest/globals'; @@ -158,15 +139,11 @@ jest.requireActual('some-module'); _getJestObj().mock('some-module', () => { _getJestObj().requireActual('some-module'); }); - function _getJestObj() { const {jest} = require('@jest/globals'); - _getJestObj = () => jest; - return jest; } - import {jest} from '@jest/globals'; jest.requireActual('some-module'); @@ -184,7 +161,6 @@ jest.mock('some-module', () => { ↓ ↓ ↓ ↓ ↓ ↓ const {jest} = require('@jest/globals'); - jest.mock('some-module', () => { jest.requireActual('some-module'); }); @@ -202,17 +178,12 @@ jest.disableAutomock(); ↓ ↓ ↓ ↓ ↓ ↓ _getJestObj().enableAutomock(); - _getJestObj().disableAutomock(); - function _getJestObj() { const {jest} = require('@jest/globals'); - _getJestObj = () => jest; - return jest; } - require('x'); @@ -228,12 +199,9 @@ beforeEach(() => { function _getJestObj() { const {jest} = require('@jest/globals'); - _getJestObj = () => jest; - return jest; } - beforeEach(() => { _getJestObj().mock('someNode'); }); @@ -252,15 +220,11 @@ beforeEach(() => { function _getJestObj() { const {jest} = require('@jest/globals'); - _getJestObj = () => jest; - return jest; } - beforeEach(() => { _getJestObj().mock('someNode'); - require('x'); }); diff --git a/packages/jest-circus/src/index.ts b/packages/jest-circus/src/index.ts index cb885c6d6a5e..a8049d4d1d8c 100644 --- a/packages/jest-circus/src/index.ts +++ b/packages/jest-circus/src/index.ts @@ -147,8 +147,19 @@ const test: Global.It = (() => { testName: Circus.TestNameLike, fn?: Circus.TestFn, timeout?: number, - ): void => _addTest(testName, mode, concurrent, fn, failing, timeout, true); - failing.each = bindEach(failing, false); + eachError?: Error, + ): void => + _addTest( + testName, + mode, + concurrent, + fn, + failing, + timeout, + true, + eachError, + ); + failing.each = bindEach(failing, false, true); return failing; }; @@ -175,9 +186,8 @@ const test: Global.It = (() => { ) => void, timeout?: number, failing?: boolean, + asyncError: Error = new ErrorWithStack(undefined, testFn), ) => { - const asyncError = new ErrorWithStack(undefined, testFn); - try { testName = convertDescriptorToString(testName); } catch (error) { diff --git a/packages/jest-console/src/BufferedConsole.ts b/packages/jest-console/src/BufferedConsole.ts index d828c64e7dd9..930c680e9261 100644 --- a/packages/jest-console/src/BufferedConsole.ts +++ b/packages/jest-console/src/BufferedConsole.ts @@ -79,7 +79,8 @@ export default class BufferedConsole extends Console { if (!(error instanceof AssertionError)) { throw error; } - this._log('assert', error.toString()); + // https://github.com/facebook/jest/pull/13422#issuecomment-1273396392 + this._log('assert', error.toString().replace(/:\n\n.*\n/gs, '')); } } diff --git a/packages/jest-console/src/CustomConsole.ts b/packages/jest-console/src/CustomConsole.ts index e710a7699948..eb34ffc3679f 100644 --- a/packages/jest-console/src/CustomConsole.ts +++ b/packages/jest-console/src/CustomConsole.ts @@ -56,7 +56,8 @@ export default class CustomConsole extends Console { if (!(error instanceof AssertionError)) { throw error; } - this._logError('assert', error.toString()); + // https://github.com/facebook/jest/pull/13422#issuecomment-1273396392 + this._logError('assert', error.toString().replace(/:\n\n.*\n/gs, '')); } } diff --git a/packages/jest-console/src/__tests__/bufferedConsole.test.ts b/packages/jest-console/src/__tests__/bufferedConsole.test.ts index 21cc77971bc2..d1346547eb72 100644 --- a/packages/jest-console/src/__tests__/bufferedConsole.test.ts +++ b/packages/jest-console/src/__tests__/bufferedConsole.test.ts @@ -40,7 +40,9 @@ describe('CustomConsole', () => { _console.assert(false); expect(stdout()).toMatch('AssertionError'); - expect(stdout()).toMatch('false == true'); + expect(stdout()).toMatch( + /false == true|The expression evaluated to a falsy value/, + ); }); test('log the assertion error when the assertion is falsy with another message argument', () => { diff --git a/packages/jest-each/src/bind.ts b/packages/jest-each/src/bind.ts index 0c1480f9e3fc..9a1bae80858e 100644 --- a/packages/jest-each/src/bind.ts +++ b/packages/jest-each/src/bind.ts @@ -26,17 +26,21 @@ type GlobalCallback = ( testName: string, fn: Global.ConcurrentTestFn, timeout?: number, + eachError?: Error, ) => void; export default function bind( cb: GlobalCallback, supportsDone = true, -) { - return ( + needsEachError = false, +): Global.EachTestFn { + const bindWrap = ( table: Global.EachTable, ...taggedTemplateData: Global.TemplateData - ) => - function eachBind( + ) => { + const error = new ErrorWithStack(undefined, bindWrap); + + return function eachBind( title: Global.BlockNameLike, test: Global.EachTestFn, timeout?: number, @@ -48,19 +52,30 @@ export default function bind( : buildTemplateTests(title, table, taggedTemplateData); return tests.forEach(row => - cb( - row.title, - applyArguments(supportsDone, row.arguments, test), - timeout, - ), + needsEachError + ? cb( + row.title, + applyArguments(supportsDone, row.arguments, test), + timeout, + error, + ) + : cb( + row.title, + applyArguments(supportsDone, row.arguments, test), + timeout, + ), ); } catch (e: any) { - const error = new ErrorWithStack(e.message, eachBind); + const err = new Error(e.message); + err.stack = error.stack?.replace(/^Error: /s, `Error: ${e.message}`); + return cb(title, () => { - throw error; + throw err; }); } }; + }; + return bindWrap; } const isArrayTable = (data: Global.TemplateData) => data.length === 0; diff --git a/packages/jest-transform/src/__tests__/ScriptTransformer.test.ts b/packages/jest-transform/src/__tests__/ScriptTransformer.test.ts index e334ead1f0e1..7da15d4723f7 100644 --- a/packages/jest-transform/src/__tests__/ScriptTransformer.test.ts +++ b/packages/jest-transform/src/__tests__/ScriptTransformer.test.ts @@ -1243,7 +1243,7 @@ describe('ScriptTransformer', () => { sources: ['banana.js'], sourcesContent: ['content'], mappings: - ';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAeY;;;;;;;;;;AAfZA,OAAO', + ';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAeY;IAAA;MAAA;IAAA;EAAA;EAAA;AAAA;AAAA;AAAA;AAfZA,OAAO', }; /* eslint-enable */ @@ -1292,7 +1292,7 @@ describe('ScriptTransformer', () => { sources: ['banana.js'], sourcesContent: ['content'], mappings: - ';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAeY;;;;;;;;;;AAfZA,OAAO', + ';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAeY;IAAA;MAAA;IAAA;EAAA;EAAA;AAAA;AAAA;AAAA;AAfZA,OAAO', }; /* eslint-enable */ @@ -1341,7 +1341,7 @@ describe('ScriptTransformer', () => { sources: ['banana.js'], sourcesContent: ['content'], mappings: - ';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAeY;;;;;;;;;;AAfZA,OAAO', + ';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAeY;IAAA;MAAA;IAAA;EAAA;EAAA;AAAA;AAAA;AAAA;AAfZA,OAAO', }; /* eslint-enable */ @@ -1382,7 +1382,7 @@ describe('ScriptTransformer', () => { sources: ['banana.js'], sourcesContent: ['module.exports = "banana";'], mappings: - ';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAeY;;;;;;;;;;AAfZA,MAAM,CAACC,OAAP,GAAiB,QAAjB', + ';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAeY;IAAA;MAAA;IAAA;EAAA;EAAA;AAAA;AAAA;AAAA;AAfZA,MAAM,CAACC,OAAO,GAAG,QAAQ', }; /* eslint-enable */ @@ -1422,7 +1422,7 @@ describe('ScriptTransformer', () => { sources: ['banana.js'], sourcesContent: ['module.exports = "banana";'], mappings: - ';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAeY;;;;;;;;;;AAfZA,MAAM,CAACC,OAAP,GAAiB,QAAjB', + ';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAeY;IAAA;MAAA;IAAA;EAAA;EAAA;AAAA;AAAA;AAAA;AAfZA,MAAM,CAACC,OAAO,GAAG,QAAQ', }; /* eslint-enable */ @@ -1462,7 +1462,7 @@ describe('ScriptTransformer', () => { sources: ['banana.js'], sourcesContent: ['module.exports = "banana";'], mappings: - ';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAeY;;;;;;;;;;AAfZA,MAAM,CAACC,OAAP,GAAiB,QAAjB', + ';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAeY;IAAA;MAAA;IAAA;EAAA;EAAA;AAAA;AAAA;AAAA;AAfZA,MAAM,CAACC,OAAO,GAAG,QAAQ', }; /* eslint-enable */ diff --git a/packages/jest-transform/src/__tests__/__snapshots__/ScriptTransformer.test.ts.snap b/packages/jest-transform/src/__tests__/__snapshots__/ScriptTransformer.test.ts.snap index 3132902635bc..14a7c3379e61 100644 --- a/packages/jest-transform/src/__tests__/__snapshots__/ScriptTransformer.test.ts.snap +++ b/packages/jest-transform/src/__tests__/__snapshots__/ScriptTransformer.test.ts.snap @@ -508,11 +508,9 @@ function cov_25u22311x4() { hash: "3f8e915bed83285455a8a16aa04dc0cf5242d755" }; var coverage = global[gcv] || (global[gcv] = {}); - if (!coverage[path] || coverage[path].hash !== hash) { coverage[path] = coverageData; } - var actualCoverage = coverage[path]; { // @ts-ignore @@ -522,11 +520,10 @@ function cov_25u22311x4() { } return actualCoverage; } - cov_25u22311x4(); cov_25u22311x4().s[0]++; module.exports = "banana"; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiYmFuYW5hLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gXCJiYW5hbmFcIjsiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQWVZOzs7Ozs7Ozs7O0FBZlpBLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQixRQUFqQiJ9" +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiYmFuYW5hLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gXCJiYW5hbmFcIjsiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFlWTtJQUFBO01BQUE7SUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0FBQUE7QUFmWkEsTUFBTSxDQUFDQyxPQUFPLEdBQUcsUUFBUSJ9" `; exports[`ScriptTransformer transforms a file async properly 2`] = ` @@ -600,11 +597,9 @@ function cov_23yvu8etmu() { hash: "8b5afd38d79008f13ebc229b89ef82b12ee9447a" }; var coverage = global[gcv] || (global[gcv] = {}); - if (!coverage[path] || coverage[path].hash !== hash) { coverage[path] = coverageData; } - var actualCoverage = coverage[path]; { // @ts-ignore @@ -614,17 +609,15 @@ function cov_23yvu8etmu() { } return actualCoverage; } - cov_23yvu8etmu(); cov_23yvu8etmu().s[0]++; - module.exports = () => { /* istanbul ignore next */ cov_23yvu8etmu().f[0]++; cov_23yvu8etmu().s[1]++; return "kiwi"; }; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsia2l3aS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9ICgpID0+IFwia2l3aVwiOyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFlWTs7Ozs7Ozs7Ozs7QUFmWkEsTUFBTSxDQUFDQyxPQUFQLEdBQWlCLE1BQU07RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFNLENBQTdCIn0=" +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsia2l3aS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9ICgpID0+IFwia2l3aVwiOyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBZVk7SUFBQTtNQUFBO0lBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtBQUFBO0FBZlpBLE1BQU0sQ0FBQ0MsT0FBTyxHQUFHLE1BQU07RUFBQTtFQUFBO0VBQUE7RUFBQSxhQUFNO0FBQUQsQ0FBQyJ9" `; exports[`ScriptTransformer transforms a file properly 1`] = ` @@ -660,11 +653,9 @@ function cov_25u22311x4() { hash: "3f8e915bed83285455a8a16aa04dc0cf5242d755" }; var coverage = global[gcv] || (global[gcv] = {}); - if (!coverage[path] || coverage[path].hash !== hash) { coverage[path] = coverageData; } - var actualCoverage = coverage[path]; { // @ts-ignore @@ -674,11 +665,10 @@ function cov_25u22311x4() { } return actualCoverage; } - cov_25u22311x4(); cov_25u22311x4().s[0]++; module.exports = "banana"; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiYmFuYW5hLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gXCJiYW5hbmFcIjsiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQWVZOzs7Ozs7Ozs7O0FBZlpBLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQixRQUFqQiJ9" +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiYmFuYW5hLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gXCJiYW5hbmFcIjsiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFlWTtJQUFBO01BQUE7SUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0FBQUE7QUFmWkEsTUFBTSxDQUFDQyxPQUFPLEdBQUcsUUFBUSJ9" `; exports[`ScriptTransformer transforms a file properly 2`] = ` @@ -752,11 +742,9 @@ function cov_23yvu8etmu() { hash: "8b5afd38d79008f13ebc229b89ef82b12ee9447a" }; var coverage = global[gcv] || (global[gcv] = {}); - if (!coverage[path] || coverage[path].hash !== hash) { coverage[path] = coverageData; } - var actualCoverage = coverage[path]; { // @ts-ignore @@ -766,17 +754,15 @@ function cov_23yvu8etmu() { } return actualCoverage; } - cov_23yvu8etmu(); cov_23yvu8etmu().s[0]++; - module.exports = () => { /* istanbul ignore next */ cov_23yvu8etmu().f[0]++; cov_23yvu8etmu().s[1]++; return "kiwi"; }; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsia2l3aS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9ICgpID0+IFwia2l3aVwiOyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFlWTs7Ozs7Ozs7Ozs7QUFmWkEsTUFBTSxDQUFDQyxPQUFQLEdBQWlCLE1BQU07RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFNLENBQTdCIn0=" +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsia2l3aS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9ICgpID0+IFwia2l3aVwiOyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBZVk7SUFBQTtNQUFBO0lBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtBQUFBO0FBZlpBLE1BQU0sQ0FBQ0MsT0FBTyxHQUFHLE1BQU07RUFBQTtFQUFBO0VBQUE7RUFBQSxhQUFNO0FBQUQsQ0FBQyJ9" `; exports[`ScriptTransformer uses mixture of sync/async preprocessors 1`] = ` diff --git a/yarn.lock b/yarn.lock index f67286c1092e..e27d82d8989d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -335,14 +335,14 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.12.5, @babel/generator@npm:^7.14.0, @babel/generator@npm:^7.18.7, @babel/generator@npm:^7.19.3, @babel/generator@npm:^7.7.2": - version: 7.19.3 - resolution: "@babel/generator@npm:7.19.3" +"@babel/generator@npm:^7.12.5, @babel/generator@npm:^7.14.0, @babel/generator@npm:^7.18.7, @babel/generator@npm:^7.19.3, @babel/generator@npm:^7.19.4, @babel/generator@npm:^7.7.2": + version: 7.19.4 + resolution: "@babel/generator@npm:7.19.4" dependencies: - "@babel/types": ^7.19.3 + "@babel/types": ^7.19.4 "@jridgewell/gen-mapping": ^0.3.2 jsesc: ^2.5.1 - checksum: b1585e398f6c37f442a2fdac964a326b348fbc8fb99a6aaf4f72bbe993adb0ca792bc0a9c65e59930b2a2e55eb5aa3aab360ceb678d3d40692eb0cda2b7b6aa6 + checksum: c955b5d1b3de2584ca906a0f9a8b0a3ef680967c0cf6e309a76a5c10999a842c6b2d3864963599a9a8103b6e793423e7faddafff68f417d3942116b58bcc76f4 languageName: node linkType: hard @@ -604,13 +604,13 @@ __metadata: linkType: hard "@babel/helpers@npm:^7.12.5, @babel/helpers@npm:^7.19.0": - version: 7.19.0 - resolution: "@babel/helpers@npm:7.19.0" + version: 7.19.4 + resolution: "@babel/helpers@npm:7.19.4" dependencies: "@babel/template": ^7.18.10 - "@babel/traverse": ^7.19.0 - "@babel/types": ^7.19.0 - checksum: e50e78e0dbb0435075fa3f85021a6bcae529589800bca0292721afd7f7c874bea54508d6dc57eca16e5b8224f8142c6b0e32e3b0140029dc09865da747da4623 + "@babel/traverse": ^7.19.4 + "@babel/types": ^7.19.4 + checksum: e2684e9a79d45b95db05c7e14628e8dd1d91ad59433a3afd715bdf19d4683d9e9f84382bcc82316b678aa609ecfc41b07be0b9c49eed07c444f82a6b9e501186 languageName: node linkType: hard @@ -625,7 +625,7 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.12.7, @babel/parser@npm:^7.13.16, @babel/parser@npm:^7.14.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.18.10, @babel/parser@npm:^7.18.8, @babel/parser@npm:^7.19.3": +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.12.7, @babel/parser@npm:^7.13.16, @babel/parser@npm:^7.14.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.18.10, @babel/parser@npm:^7.18.8, @babel/parser@npm:^7.19.3, @babel/parser@npm:^7.19.4": version: 7.19.4 resolution: "@babel/parser@npm:7.19.4" bin: @@ -1831,21 +1831,21 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.12.9, @babel/traverse@npm:^7.14.0, @babel/traverse@npm:^7.18.8, @babel/traverse@npm:^7.19.0, @babel/traverse@npm:^7.19.1, @babel/traverse@npm:^7.19.3, @babel/traverse@npm:^7.7.2": - version: 7.19.3 - resolution: "@babel/traverse@npm:7.19.3" +"@babel/traverse@npm:^7.12.9, @babel/traverse@npm:^7.14.0, @babel/traverse@npm:^7.18.8, @babel/traverse@npm:^7.19.0, @babel/traverse@npm:^7.19.1, @babel/traverse@npm:^7.19.3, @babel/traverse@npm:^7.19.4, @babel/traverse@npm:^7.7.2": + version: 7.19.4 + resolution: "@babel/traverse@npm:7.19.4" dependencies: "@babel/code-frame": ^7.18.6 - "@babel/generator": ^7.19.3 + "@babel/generator": ^7.19.4 "@babel/helper-environment-visitor": ^7.18.9 "@babel/helper-function-name": ^7.19.0 "@babel/helper-hoist-variables": ^7.18.6 "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/parser": ^7.19.3 - "@babel/types": ^7.19.3 + "@babel/parser": ^7.19.4 + "@babel/types": ^7.19.4 debug: ^4.1.0 globals: ^11.1.0 - checksum: ef16c98fca7f2c347febd06737c13230ea103d619a0d6c142445bc8eff6359d2fce026f27dece02b4838f614cda8a9330bc4a576ccc6cd0ce21844d1d0205769 + checksum: 8ae1ac3dace181620cd0e3078aec99604a48302fb873193a171e37a7cc4f8909ed496f286bf08c6473f9692db36423e2601eb9c771493d19f6a5fd1a56745af5 languageName: node linkType: hard