From 0149a16957de987038bef68196f8e3734223d61b Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Sun, 13 May 2018 11:15:18 +0200 Subject: [PATCH 01/12] Revert "Revert #5945, as it introduces a memory leak (#6106)" This reverts commit 45cd2773a34ebcaf8c8ddbbe180def42dbed43af. --- CHANGELOG.md | 2 + .../__snapshots__/globals.test.js.snap | 4 +- .../__tests__/stack_trace.test.js | 1 + packages/jest-jasmine2/src/index.js | 43 +++++++++++-------- 4 files changed, 30 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c7b55999a023..3f407699bd20 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -114,6 +114,8 @@ ([#5888](https://github.com/facebook/jest/pull/5888)) * `[jest-mock]` [**BREAKING**] Replace timestamps with `invocationCallOrder` ([#5867](https://github.com/facebook/jest/pull/5867)) +* `[jest-jasmine2]` Install `sourcemap-support` into normal runtime to catch + runtime errors ([#5945](https://github.com/facebook/jest/pull/5945)) * `[jest-jasmine2]` Added assertion error handling inside `afterAll hook` ([#5884](https://github.com/facebook/jest/pull/5884)) * `[jest-cli]` Remove the notifier actions in case of failure when not in watch diff --git a/integration-tests/__tests__/__snapshots__/globals.test.js.snap b/integration-tests/__tests__/__snapshots__/globals.test.js.snap index 0a79b88e36c2..30496da2c554 100644 --- a/integration-tests/__tests__/__snapshots__/globals.test.js.snap +++ b/integration-tests/__tests__/__snapshots__/globals.test.js.snap @@ -28,7 +28,7 @@ exports[`cannot test with no implementation 1`] = ` 1 | 2 | it('it', () => {}); > 3 | it('it, no implementation'); - | ^ + | ^ 4 | test('test, no implementation'); 5 | @@ -56,7 +56,7 @@ exports[`cannot test with no implementation with expand arg 1`] = ` 1 | 2 | it('it', () => {}); > 3 | it('it, no implementation'); - | ^ + | ^ 4 | test('test, no implementation'); 5 | diff --git a/integration-tests/__tests__/stack_trace.test.js b/integration-tests/__tests__/stack_trace.test.js index dc20cea89f96..d37b5409eca9 100644 --- a/integration-tests/__tests__/stack_trace.test.js +++ b/integration-tests/__tests__/stack_trace.test.js @@ -21,6 +21,7 @@ describe('Stack Trace', () => { expect(stderr).toMatch( /ReferenceError: thisIsARuntimeError is not defined/, ); + expect(stderr).toMatch(/> 10 \| thisIsARuntimeError\(\);/); expect(stderr).toMatch( /\s+at\s(?:.+?)\s\(__tests__\/runtime_error.test\.js/, ); diff --git a/packages/jest-jasmine2/src/index.js b/packages/jest-jasmine2/src/index.js index 785fa5cf0548..606d0c1b857f 100644 --- a/packages/jest-jasmine2/src/index.js +++ b/packages/jest-jasmine2/src/index.js @@ -18,6 +18,7 @@ import path from 'path'; import fs from 'graceful-fs'; import installEach from './each'; import {getCallsite} from 'jest-util'; +import sourcemapSupport from 'source-map-support'; import JasmineReporter from './reporter'; import {install as jasmineAsyncInstall} from './jasmine_async'; @@ -119,29 +120,35 @@ async function jasmine2( runtime.requireModule(config.setupTestFrameworkScriptFile); } + const sourcemapOptions = { + environment: 'node', + handleUncaughtExceptions: false, + retrieveSourceMap: source => { + const sourceMaps = runtime.getSourceMaps(); + const sourceMapSource = sourceMaps && sourceMaps[source]; + + if (sourceMapSource) { + try { + return { + map: JSON.parse(fs.readFileSync(sourceMapSource)), + url: source, + }; + } catch (e) {} + } + return null; + }, + }; + + // For tests runtime .requireInternalModule( require.resolve('source-map-support'), 'source-map-support', ) - .install({ - environment: 'node', - handleUncaughtExceptions: false, - retrieveSourceMap: source => { - const sourceMaps = runtime.getSourceMaps(); - const sourceMapSource = sourceMaps && sourceMaps[source]; - - if (sourceMapSource) { - try { - return { - map: JSON.parse(fs.readFileSync(sourceMapSource)), - url: source, - }; - } catch (e) {} - } - return null; - }, - }); + .install(sourcemapOptions); + + // For runtime errors + sourcemapSupport.install(sourcemapOptions); if (globalConfig.enabledTestsMap) { env.specFilter = spec => { From 337f92e8ac9786b6c8e968f81022e006a4104361 Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Sun, 13 May 2018 11:17:19 +0200 Subject: [PATCH 02/12] cleanup sourcemapSupport after tests are done --- packages/jest-jasmine2/package.json | 2 +- packages/jest-jasmine2/src/index.js | 11 ++++++++--- yarn.lock | 6 +++--- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/packages/jest-jasmine2/package.json b/packages/jest-jasmine2/package.json index ca7cfe6a401b..26a66b128f71 100644 --- a/packages/jest-jasmine2/package.json +++ b/packages/jest-jasmine2/package.json @@ -19,7 +19,7 @@ "jest-snapshot": "^22.4.0", "jest-util": "^22.4.1", "pretty-format": "^22.4.0", - "source-map-support": "^0.5.0" + "source-map-support": "^0.5.6" }, "devDependencies": { "jest-runtime": "^22.4.2" diff --git a/packages/jest-jasmine2/src/index.js b/packages/jest-jasmine2/src/index.js index 606d0c1b857f..ea687ccb259c 100644 --- a/packages/jest-jasmine2/src/index.js +++ b/packages/jest-jasmine2/src/index.js @@ -164,9 +164,14 @@ async function jasmine2( runtime.requireModule(testPath); await env.execute(); - return reporter - .getResults() - .then(results => addSnapshotData(results, snapshotState)); + + try { + const results = await reporter.getResults(); + + return addSnapshotData(results, snapshotState); + } finally { + sourcemapSupport.resetRetrieveHandlers(); + } } const addSnapshotData = (results, snapshotState) => { diff --git a/yarn.lock b/yarn.lock index 84db775f89e7..5b95e52b7de8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8711,9 +8711,9 @@ source-map-support@^0.4.15: dependencies: source-map "^0.5.6" -source-map-support@^0.5.0: - version "0.5.5" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.5.tgz#0d4af9e00493e855402e8ec36ebed2d266fceb90" +source-map-support@^0.5.6: + version "0.5.6" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.6.tgz#4435cee46b1aab62b8e8610ce60f788091c51c13" dependencies: buffer-from "^1.0.0" source-map "^0.6.0" From 391aa9ad686bbf233de1ff670e0f504fce038a20 Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Sun, 13 May 2018 12:03:57 +0200 Subject: [PATCH 03/12] kick-off test run inside try-catch as well --- packages/jest-jasmine2/src/index.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/jest-jasmine2/src/index.js b/packages/jest-jasmine2/src/index.js index ea687ccb259c..e29172a4a8fe 100644 --- a/packages/jest-jasmine2/src/index.js +++ b/packages/jest-jasmine2/src/index.js @@ -162,10 +162,10 @@ async function jasmine2( env.specFilter = spec => testNameRegex.test(spec.getFullName()); } - runtime.requireModule(testPath); - await env.execute(); - try { + runtime.requireModule(testPath); + await env.execute(); + const results = await reporter.getResults(); return addSnapshotData(results, snapshotState); From a23090e2d7a9ae7c8c340f6e7089720d8d84596b Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Sun, 13 May 2018 12:14:28 +0200 Subject: [PATCH 04/12] move sourcemaps from jest-jasmine to jest-runner --- packages/jest-jasmine2/package.json | 3 +- packages/jest-jasmine2/src/index.js | 43 +++------------------------- packages/jest-runner/package.json | 1 + packages/jest-runner/src/run_test.js | 37 +++++++++++++++++++++++- 4 files changed, 42 insertions(+), 42 deletions(-) diff --git a/packages/jest-jasmine2/package.json b/packages/jest-jasmine2/package.json index 26a66b128f71..4294b52e67de 100644 --- a/packages/jest-jasmine2/package.json +++ b/packages/jest-jasmine2/package.json @@ -18,8 +18,7 @@ "jest-message-util": "^22.4.0", "jest-snapshot": "^22.4.0", "jest-util": "^22.4.1", - "pretty-format": "^22.4.0", - "source-map-support": "^0.5.6" + "pretty-format": "^22.4.0" }, "devDependencies": { "jest-runtime": "^22.4.2" diff --git a/packages/jest-jasmine2/src/index.js b/packages/jest-jasmine2/src/index.js index e29172a4a8fe..d91995855159 100644 --- a/packages/jest-jasmine2/src/index.js +++ b/packages/jest-jasmine2/src/index.js @@ -18,7 +18,6 @@ import path from 'path'; import fs from 'graceful-fs'; import installEach from './each'; import {getCallsite} from 'jest-util'; -import sourcemapSupport from 'source-map-support'; import JasmineReporter from './reporter'; import {install as jasmineAsyncInstall} from './jasmine_async'; @@ -120,36 +119,6 @@ async function jasmine2( runtime.requireModule(config.setupTestFrameworkScriptFile); } - const sourcemapOptions = { - environment: 'node', - handleUncaughtExceptions: false, - retrieveSourceMap: source => { - const sourceMaps = runtime.getSourceMaps(); - const sourceMapSource = sourceMaps && sourceMaps[source]; - - if (sourceMapSource) { - try { - return { - map: JSON.parse(fs.readFileSync(sourceMapSource)), - url: source, - }; - } catch (e) {} - } - return null; - }, - }; - - // For tests - runtime - .requireInternalModule( - require.resolve('source-map-support'), - 'source-map-support', - ) - .install(sourcemapOptions); - - // For runtime errors - sourcemapSupport.install(sourcemapOptions); - if (globalConfig.enabledTestsMap) { env.specFilter = spec => { const suiteMap = @@ -162,16 +131,12 @@ async function jasmine2( env.specFilter = spec => testNameRegex.test(spec.getFullName()); } - try { - runtime.requireModule(testPath); - await env.execute(); + runtime.requireModule(testPath); + await env.execute(); - const results = await reporter.getResults(); + const results = await reporter.getResults(); - return addSnapshotData(results, snapshotState); - } finally { - sourcemapSupport.resetRetrieveHandlers(); - } + return addSnapshotData(results, snapshotState); } const addSnapshotData = (results, snapshotState) => { diff --git a/packages/jest-runner/package.json b/packages/jest-runner/package.json index a086ba78223f..2cf2addca4c3 100644 --- a/packages/jest-runner/package.json +++ b/packages/jest-runner/package.json @@ -18,6 +18,7 @@ "jest-runtime": "^22.4.2", "jest-util": "^22.4.1", "jest-worker": "^22.2.2", + "source-map-support": "^0.5.6", "throat": "^4.0.0" } } diff --git a/packages/jest-runner/src/run_test.js b/packages/jest-runner/src/run_test.js index a209ffca7c51..e0627a7f0460 100644 --- a/packages/jest-runner/src/run_test.js +++ b/packages/jest-runner/src/run_test.js @@ -26,6 +26,7 @@ import jasmine2 from 'jest-jasmine2'; import LeakDetector from 'jest-leak-detector'; import {getTestEnvironment} from 'jest-config'; import * as docblock from 'jest-docblock'; +import sourcemapSupport from 'source-map-support'; type RunTestInternalResult = { leakDetector: ?LeakDetector, @@ -116,8 +117,40 @@ async function runTestInternal( }); const start = Date.now(); - await environment.setup(); + + const sourcemapOptions = { + environment: 'node', + handleUncaughtExceptions: false, + retrieveSourceMap: source => { + const sourceMaps = runtime.getSourceMaps(); + const sourceMapSource = sourceMaps && sourceMaps[source]; + + if (sourceMapSource) { + try { + return { + map: JSON.parse(fs.readFileSync(sourceMapSource)), + url: source, + }; + } catch (e) {} + } + return null; + }, + }; + + // For tests + runtime + .requireInternalModule( + require.resolve('source-map-support'), + 'source-map-support', + ) + .install(sourcemapOptions); + + // For runtime errors + sourcemapSupport.install(sourcemapOptions); + try { + await environment.setup(); + const result: TestResult = await testFramework( globalConfig, config, @@ -151,6 +184,8 @@ async function runTestInternal( }); } finally { await environment.teardown(); + + sourcemapSupport.resetRetrieveHandlers(); } } From 1b6287aa994bf7b8772fffc69a772a2c961de85a Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Tue, 15 May 2018 09:15:24 +0200 Subject: [PATCH 05/12] update snapshot --- .../__tests__/__snapshots__/detect_open_handles.js.snap | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/integration-tests/__tests__/__snapshots__/detect_open_handles.js.snap b/integration-tests/__tests__/__snapshots__/detect_open_handles.js.snap index 046161397d47..4b6cba26352b 100644 --- a/integration-tests/__tests__/__snapshots__/detect_open_handles.js.snap +++ b/integration-tests/__tests__/__snapshots__/detect_open_handles.js.snap @@ -21,8 +21,8 @@ exports[`prints out info about open handlers 1`] = ` 6 | > 7 | app.listen({host: 'localhost', port: 0}); | ^ - 8 | + 8 | at Object. (server.js:7:5) - at Object. (__tests__/test.js:3:1)" + at Object. (__tests__/test.js:1:1)" `; From 6f4891ed8549b87517d3a685fb82b33cbde1d898 Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Fri, 18 May 2018 11:56:51 +0200 Subject: [PATCH 06/12] Revert "Fix snapshots (#6113)" This reverts commit ae691b195d52f7d33221e2b56501bd0d6c6d9f7a. --- integration-tests/__tests__/globals.test.js | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/integration-tests/__tests__/globals.test.js b/integration-tests/__tests__/globals.test.js index ba3d5580e954..22a8e60f6041 100644 --- a/integration-tests/__tests__/globals.test.js +++ b/integration-tests/__tests__/globals.test.js @@ -28,12 +28,6 @@ beforeEach(() => { afterAll(() => cleanup(DIR)); -// This function is needed due to differences between Node 6 and 8-9-10 when -// returning the result of the error. -function clean(text) { - return text.replace(/([\r\n])\s+(?=[\r\n])/g, '$1').replace(/\s+\^/g, ' ^'); -} - test('basic test constructs', () => { const filename = 'basic.test-constructs.test.js'; const content = ` @@ -129,8 +123,8 @@ test('cannot test with no implementation', () => { expect(status).toBe(1); const {summary, rest} = extractSummary(stderr, {stripLocation: true}); - expect(clean(rest)).toMatchSnapshot(); - expect(clean(summary)).toMatchSnapshot(); + expect(rest).toMatchSnapshot(); + expect(summary).toMatchSnapshot(); }); test('skips with expand arg', () => { @@ -207,8 +201,8 @@ test('cannot test with no implementation with expand arg', () => { expect(status).toBe(1); const {summary, rest} = extractSummary(stderr, {stripLocation: true}); - expect(clean(rest)).toMatchSnapshot(); - expect(clean(summary)).toMatchSnapshot(); + expect(rest).toMatchSnapshot(); + expect(summary).toMatchSnapshot(); }); test('function as descriptor', () => { From cf61b0ab4ece2560bab815cbe7ce0c0a055fc84f Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Fri, 18 May 2018 11:56:54 +0200 Subject: [PATCH 07/12] uninstall sourcemaps after test results are processed --- packages/jest-runner/src/index.js | 8 +++++++- packages/jest-runner/src/run_test.js | 2 -- packages/jest-runner/src/test_worker.js | 3 +++ 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/packages/jest-runner/src/index.js b/packages/jest-runner/src/index.js index 2f4dd7243697..51d7ccdf8af9 100644 --- a/packages/jest-runner/src/index.js +++ b/packages/jest-runner/src/index.js @@ -23,6 +23,7 @@ import exit from 'exit'; import runTest from './run_test'; import throat from 'throat'; import Worker from 'jest-worker'; +import sourcemapSupport from 'source-map-support'; const TEST_WORKER_PATH = require.resolve('./test_worker'); @@ -81,7 +82,12 @@ class TestRunner { ); }) .then(result => onResult(test, result)) - .catch(err => onFailure(test, err)), + .catch(err => onFailure(test, err)) + .then(res => { + sourcemapSupport.resetRetrieveHandlers(); + + return res; + }), ), Promise.resolve(), ); diff --git a/packages/jest-runner/src/run_test.js b/packages/jest-runner/src/run_test.js index e0627a7f0460..bedcf9139059 100644 --- a/packages/jest-runner/src/run_test.js +++ b/packages/jest-runner/src/run_test.js @@ -184,8 +184,6 @@ async function runTestInternal( }); } finally { await environment.teardown(); - - sourcemapSupport.resetRetrieveHandlers(); } } diff --git a/packages/jest-runner/src/test_worker.js b/packages/jest-runner/src/test_worker.js index 5b178df03a4b..d146e08078fc 100644 --- a/packages/jest-runner/src/test_worker.js +++ b/packages/jest-runner/src/test_worker.js @@ -13,6 +13,7 @@ import type {RawModuleMap} from 'types/HasteMap'; import type {ErrorWithCode} from 'types/Errors'; import exit from 'exit'; +import sourcemapSupport from 'source-map-support'; import HasteMap from 'jest-haste-map'; import {separateMessageFromStack} from 'jest-message-util'; import Runtime from 'jest-runtime'; @@ -84,5 +85,7 @@ export async function worker({ ); } catch (error) { throw formatError(error); + } finally { + sourcemapSupport.resetRetrieveHandlers(); } } From f4982bca76cd595b666c74f6d643e3ec52903f8d Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Fri, 18 May 2018 11:59:15 +0200 Subject: [PATCH 08/12] update changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f407699bd20..58c7b98f72ac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -169,6 +169,8 @@ ### Chore & Maintenance +* `[jest-runner]` Move sourcemap installation from `jest-jasmine2` to + `jest-runner` ([#6176](https://github.com/facebook/jest/pull/6176)) * `[jest-cli]` Use yargs's built-in `version` instead of rolling our own ([#6215](https://github.com/facebook/jest/pull/6215)) * `[docs]` Add explanation on how to mock methods not implemented in JSDOM From 8d07ee6696ea77fdcbe6c64ec5e97a2bfb6a4f9e Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Fri, 18 May 2018 12:04:48 +0200 Subject: [PATCH 09/12] fix flow --- packages/jest-runner/src/run_test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/jest-runner/src/run_test.js b/packages/jest-runner/src/run_test.js index bedcf9139059..8fc3e90a8733 100644 --- a/packages/jest-runner/src/run_test.js +++ b/packages/jest-runner/src/run_test.js @@ -122,7 +122,7 @@ async function runTestInternal( environment: 'node', handleUncaughtExceptions: false, retrieveSourceMap: source => { - const sourceMaps = runtime.getSourceMaps(); + const sourceMaps = runtime && runtime.getSourceMaps(); const sourceMapSource = sourceMaps && sourceMaps[source]; if (sourceMapSource) { From 0fb4f8cc694799aeeed73a56c995fde20ccd89c0 Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Fri, 18 May 2018 12:10:48 +0200 Subject: [PATCH 10/12] move graceful-fs to jest-runner --- packages/jest-jasmine2/package.json | 1 - packages/jest-jasmine2/src/index.js | 1 - packages/jest-runner/package.json | 1 + packages/jest-runner/src/run_test.js | 2 +- 4 files changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/jest-jasmine2/package.json b/packages/jest-jasmine2/package.json index 4294b52e67de..3c720008ccd3 100644 --- a/packages/jest-jasmine2/package.json +++ b/packages/jest-jasmine2/package.json @@ -11,7 +11,6 @@ "chalk": "^2.0.1", "co": "^4.6.0", "expect": "^22.4.0", - "graceful-fs": "^4.1.11", "is-generator-fn": "^1.0.0", "jest-diff": "^22.4.0", "jest-matcher-utils": "^22.4.0", diff --git a/packages/jest-jasmine2/src/index.js b/packages/jest-jasmine2/src/index.js index d91995855159..a20fe97d6763 100644 --- a/packages/jest-jasmine2/src/index.js +++ b/packages/jest-jasmine2/src/index.js @@ -15,7 +15,6 @@ import type {TestResult} from 'types/TestResult'; import type Runtime from 'jest-runtime'; import path from 'path'; -import fs from 'graceful-fs'; import installEach from './each'; import {getCallsite} from 'jest-util'; import JasmineReporter from './reporter'; diff --git a/packages/jest-runner/package.json b/packages/jest-runner/package.json index 2cf2addca4c3..547d136507ec 100644 --- a/packages/jest-runner/package.json +++ b/packages/jest-runner/package.json @@ -9,6 +9,7 @@ "main": "build/index.js", "dependencies": { "exit": "^0.1.2", + "graceful-fs": "^4.1.11", "jest-config": "^22.4.2", "jest-docblock": "^22.4.0", "jest-haste-map": "^22.4.2", diff --git a/packages/jest-runner/src/run_test.js b/packages/jest-runner/src/run_test.js index 8fc3e90a8733..7c894db90386 100644 --- a/packages/jest-runner/src/run_test.js +++ b/packages/jest-runner/src/run_test.js @@ -14,7 +14,7 @@ import type {TestFramework} from 'types/TestRunner'; import type {TestResult} from 'types/TestResult'; import type RuntimeClass from 'jest-runtime'; -import fs from 'fs'; +import fs from 'graceful-fs'; import { BufferedConsole, Console, From c5a3432366f590c4df3727dcc1863d82a72a4202 Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Sat, 19 May 2018 07:37:21 +0200 Subject: [PATCH 11/12] make sure to collect stacks on test run errors before uninstalling sourcemaps --- packages/jest-runner/src/index.js | 8 +------- packages/jest-runner/src/run_test.js | 26 ++++++++++++++++++------- packages/jest-runner/src/test_worker.js | 3 --- 3 files changed, 20 insertions(+), 17 deletions(-) diff --git a/packages/jest-runner/src/index.js b/packages/jest-runner/src/index.js index 51d7ccdf8af9..2f4dd7243697 100644 --- a/packages/jest-runner/src/index.js +++ b/packages/jest-runner/src/index.js @@ -23,7 +23,6 @@ import exit from 'exit'; import runTest from './run_test'; import throat from 'throat'; import Worker from 'jest-worker'; -import sourcemapSupport from 'source-map-support'; const TEST_WORKER_PATH = require.resolve('./test_worker'); @@ -82,12 +81,7 @@ class TestRunner { ); }) .then(result => onResult(test, result)) - .catch(err => onFailure(test, err)) - .then(res => { - sourcemapSupport.resetRetrieveHandlers(); - - return res; - }), + .catch(err => onFailure(test, err)), ), Promise.resolve(), ); diff --git a/packages/jest-runner/src/run_test.js b/packages/jest-runner/src/run_test.js index 7c894db90386..8a351610c856 100644 --- a/packages/jest-runner/src/run_test.js +++ b/packages/jest-runner/src/run_test.js @@ -151,13 +151,23 @@ async function runTestInternal( try { await environment.setup(); - const result: TestResult = await testFramework( - globalConfig, - config, - environment, - runtime, - path, - ); + let result: TestResult; + + try { + result = await testFramework( + globalConfig, + config, + environment, + runtime, + path, + ); + } catch (err) { + // Access stack before uninstalling sourcemaps + err.stack; + + throw err; + } + const testCount = result.numPassingTests + result.numFailingTests + result.numPendingTests; @@ -184,6 +194,8 @@ async function runTestInternal( }); } finally { await environment.teardown(); + + sourcemapSupport.resetRetrieveHandlers(); } } diff --git a/packages/jest-runner/src/test_worker.js b/packages/jest-runner/src/test_worker.js index d146e08078fc..5b178df03a4b 100644 --- a/packages/jest-runner/src/test_worker.js +++ b/packages/jest-runner/src/test_worker.js @@ -13,7 +13,6 @@ import type {RawModuleMap} from 'types/HasteMap'; import type {ErrorWithCode} from 'types/Errors'; import exit from 'exit'; -import sourcemapSupport from 'source-map-support'; import HasteMap from 'jest-haste-map'; import {separateMessageFromStack} from 'jest-message-util'; import Runtime from 'jest-runtime'; @@ -85,7 +84,5 @@ export async function worker({ ); } catch (error) { throw formatError(error); - } finally { - sourcemapSupport.resetRetrieveHandlers(); } } From 6d15ec52786087b393ce3dd57fd6f13ef6652de8 Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Tue, 22 May 2018 08:55:33 +0200 Subject: [PATCH 12/12] update a snapshot --- .../__tests__/__snapshots__/detect_open_handles.js.snap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integration-tests/__tests__/__snapshots__/detect_open_handles.js.snap b/integration-tests/__tests__/__snapshots__/detect_open_handles.js.snap index 4b6cba26352b..82c3c6dfe58c 100644 --- a/integration-tests/__tests__/__snapshots__/detect_open_handles.js.snap +++ b/integration-tests/__tests__/__snapshots__/detect_open_handles.js.snap @@ -21,7 +21,7 @@ exports[`prints out info about open handlers 1`] = ` 6 | > 7 | app.listen({host: 'localhost', port: 0}); | ^ - 8 | + 8 | at Object. (server.js:7:5) at Object. (__tests__/test.js:1:1)"