From 5a66bbb9b3540cf5cb2609cdbaa6e04d31e85f5d Mon Sep 17 00:00:00 2001 From: Mikhail Bodrov Date: Thu, 18 Apr 2019 13:40:47 +0300 Subject: [PATCH] Cache env in reporter (#8326) * Cache env in reporter :hammer: Get rid of match * Update snapshot --- .../__snapshots__/moduleNameMapper.test.ts.snap | 2 +- .../resolveNoFileExtensions.test.ts.snap | 2 +- .../src/__tests__/summary_reporter.test.js | 12 +++++++++++- packages/jest-reporters/src/summary_reporter.ts | 16 +++++++++++----- packages/jest-resolve/src/index.ts | 5 +++-- 5 files changed, 27 insertions(+), 10 deletions(-) diff --git a/e2e/__tests__/__snapshots__/moduleNameMapper.test.ts.snap b/e2e/__tests__/__snapshots__/moduleNameMapper.test.ts.snap index 86fa29655c31..18ccc60fbe68 100644 --- a/e2e/__tests__/__snapshots__/moduleNameMapper.test.ts.snap +++ b/e2e/__tests__/__snapshots__/moduleNameMapper.test.ts.snap @@ -30,6 +30,6 @@ FAIL __tests__/index.js 12 | module.exports = () => 'test'; 13 | - at createNoMappedModuleFoundError (../../packages/jest-resolve/build/index.js:471:17) + at createNoMappedModuleFoundError (../../packages/jest-resolve/build/index.js:472:17) at Object.require (index.js:10:1) `; diff --git a/e2e/__tests__/__snapshots__/resolveNoFileExtensions.test.ts.snap b/e2e/__tests__/__snapshots__/resolveNoFileExtensions.test.ts.snap index 131e4b0ba283..f88d38ad9041 100644 --- a/e2e/__tests__/__snapshots__/resolveNoFileExtensions.test.ts.snap +++ b/e2e/__tests__/__snapshots__/resolveNoFileExtensions.test.ts.snap @@ -33,6 +33,6 @@ FAIL __tests__/test.js | ^ 4 | - at Resolver.resolveModule (../../packages/jest-resolve/build/index.js:229:17) + at Resolver.resolveModule (../../packages/jest-resolve/build/index.js:230:17) at Object.require (index.js:3:18) `; diff --git a/packages/jest-reporters/src/__tests__/summary_reporter.test.js b/packages/jest-reporters/src/__tests__/summary_reporter.test.js index be5144991d25..b4b56758a6c7 100644 --- a/packages/jest-reporters/src/__tests__/summary_reporter.test.js +++ b/packages/jest-reporters/src/__tests__/summary_reporter.test.js @@ -6,7 +6,7 @@ */ 'use strict'; -import SummaryReporter from '../summary_reporter'; +let SummaryReporter; const env = {...process.env}; const now = Date.now; @@ -18,6 +18,12 @@ const globalConfig = { let results = []; +function requireReporter() { + jest.isolateModules(() => { + SummaryReporter = require('../summary_reporter').default; + }); +} + beforeEach(() => { process.env.npm_lifecycle_event = 'test'; process.env.npm_lifecycle_script = 'jest'; @@ -50,6 +56,7 @@ test('snapshots needs update with npm test', () => { }; process.env.npm_config_user_agent = 'npm'; + requireReporter(); const testReporter = new SummaryReporter(globalConfig); testReporter.onRunComplete(new Set(), aggregatedResults); expect(results.join('')).toMatchSnapshot(); @@ -73,6 +80,7 @@ test('snapshots needs update with yarn test', () => { }; process.env.npm_config_user_agent = 'yarn'; + requireReporter(); const testReporter = new SummaryReporter(globalConfig); testReporter.onRunComplete(new Set(), aggregatedResults); expect(results.join('')).toMatchSnapshot(); @@ -108,6 +116,7 @@ test('snapshots all have results (no update)', () => { testResults: {}, }; + requireReporter(); const testReporter = new SummaryReporter(globalConfig); testReporter.onRunComplete(new Set(), aggregatedResults); expect(results.join('').replace(/\\/g, '/')).toMatchSnapshot(); @@ -143,6 +152,7 @@ test('snapshots all have results (after update)', () => { testResults: {}, }; + requireReporter(); const testReporter = new SummaryReporter(globalConfig); testReporter.onRunComplete(new Set(), aggregatedResults); expect(results.join('').replace(/\\/g, '/')).toMatchSnapshot(); diff --git a/packages/jest-reporters/src/summary_reporter.ts b/packages/jest-reporters/src/summary_reporter.ts index 6e60fde4d3ea..e94cffb2d0a5 100644 --- a/packages/jest-reporters/src/summary_reporter.ts +++ b/packages/jest-reporters/src/summary_reporter.ts @@ -44,6 +44,12 @@ const NPM_EVENTS = new Set([ 'postrestart', ]); +const { + npm_config_user_agent, + npm_lifecycle_event, + npm_lifecycle_script, +} = process.env; + export default class SummaryReporter extends BaseReporter { private _estimatedTime: number; private _globalConfig: Config.GlobalConfig; @@ -123,15 +129,15 @@ export default class SummaryReporter extends BaseReporter { snapshots.updated ) { let updateCommand; - const event = process.env.npm_lifecycle_event || ''; + const event = npm_lifecycle_event || ''; const prefix = NPM_EVENTS.has(event) ? '' : 'run '; const isYarn = - typeof process.env.npm_config_user_agent === 'string' && - process.env.npm_config_user_agent.match('yarn') !== null; + typeof npm_config_user_agent === 'string' && + npm_config_user_agent.includes('yarn'); const client = isYarn ? 'yarn' : 'npm'; const scriptUsesJest = - typeof process.env.npm_lifecycle_script === 'string' && - process.env.npm_lifecycle_script.indexOf('jest') !== -1; + typeof npm_lifecycle_script === 'string' && + npm_lifecycle_script.includes('jest'); if (globalConfig.watch || globalConfig.watchAll) { updateCommand = 'press `u`'; diff --git a/packages/jest-resolve/src/index.ts b/packages/jest-resolve/src/index.ts index 169cccb0cc33..77dcff06df4a 100644 --- a/packages/jest-resolve/src/index.ts +++ b/packages/jest-resolve/src/index.ts @@ -39,8 +39,9 @@ const NATIVE_PLATFORM = 'native'; // We might be inside a symlink. const cwd = process.cwd(); const resolvedCwd = realpath(cwd) || cwd; -const nodePaths = process.env.NODE_PATH - ? process.env.NODE_PATH.split(path.delimiter) +const {NODE_PATH} = process.env; +const nodePaths = NODE_PATH + ? NODE_PATH.split(path.delimiter) .filter(Boolean) // The resolver expects absolute paths. .map(p => path.resolve(resolvedCwd, p))