From d648f5c2a77eaae64b61f79bfb0a83defc78829b Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Tue, 21 Apr 2020 22:53:53 +0200 Subject: [PATCH] fix: remove require.requireActual --- CHANGELOG.md | 2 + packages/jest-environment/src/index.ts | 5 --- .../lib/__tests__/dependencyExtractor.test.js | 40 ------------------- .../src/lib/dependencyExtractor.ts | 1 - packages/jest-runtime/src/index.ts | 24 +++-------- 5 files changed, 8 insertions(+), 64 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 02728ab400e6..47eb385781ee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,8 @@ ### Chore & Maintenance +- `[jest-runtime]` [**BREAKING**] Remove long-deprecated `require.requireActual` and `require.requireMock` methods ([#9854](https://github.com/facebook/jest/pull/9854)) + ### Performance ## 25.4.0 diff --git a/packages/jest-environment/src/index.ts b/packages/jest-environment/src/index.ts index 42ca2979c3bd..f48f1131ac39 100644 --- a/packages/jest-environment/src/index.ts +++ b/packages/jest-environment/src/index.ts @@ -58,11 +58,6 @@ export declare class JestEnvironment { export type Module = NodeModule; -export interface LocalModuleRequire extends NodeRequire { - requireActual(moduleName: string): unknown; - requireMock(moduleName: string): unknown; -} - // TODO: Move to some separate package export interface Jest { /** diff --git a/packages/jest-haste-map/src/lib/__tests__/dependencyExtractor.test.js b/packages/jest-haste-map/src/lib/__tests__/dependencyExtractor.test.js index 516b5741b598..788071060b34 100644 --- a/packages/jest-haste-map/src/lib/__tests__/dependencyExtractor.test.js +++ b/packages/jest-haste-map/src/lib/__tests__/dependencyExtractor.test.js @@ -184,46 +184,6 @@ describe('dependencyExtractor', () => { expect(extract(code)).toEqual(new Set(['dep1', 'dep2', 'dep3'])); }); - it('should extract dependencies from `require.requireActual` calls', () => { - const code = ` - // Good - require.requireActual('dep1'); - const dep2 = require.requireActual( - "dep2", - ); - if (require.requireActual(\`dep3\`).cond) {} - require - .requireActual('dep4'); - - // Bad - ${COMMENT_NO_NEG_LB} foo . require.requireActual('inv1') - xrequire.requireActual('inv2'); - require.requireActualx('inv3'); - require.requireActual('inv4', 'inv5'); - `; - expect(extract(code)).toEqual(new Set(['dep1', 'dep2', 'dep3', 'dep4'])); - }); - - it('should extract dependencies from `require.requireMock` calls', () => { - const code = ` - // Good - require.requireMock('dep1'); - const dep2 = require.requireMock( - "dep2", - ); - if (require.requireMock(\`dep3\`).cond) {} - require - .requireMock('dep4'); - - // Bad - ${COMMENT_NO_NEG_LB} foo . require.requireMock('inv1') - xrequire.requireMock('inv2'); - require.requireMockx('inv3'); - require.requireMock('inv4', 'inv5'); - `; - expect(extract(code)).toEqual(new Set(['dep1', 'dep2', 'dep3', 'dep4'])); - }); - it('should extract dependencies from `jest.requireActual` calls', () => { const code = ` // Good diff --git a/packages/jest-haste-map/src/lib/dependencyExtractor.ts b/packages/jest-haste-map/src/lib/dependencyExtractor.ts index d1aa4445ff3c..e99a513701ec 100644 --- a/packages/jest-haste-map/src/lib/dependencyExtractor.ts +++ b/packages/jest-haste-map/src/lib/dependencyExtractor.ts @@ -63,7 +63,6 @@ const IMPORT_OR_EXPORT_RE = createRegExp( const JEST_EXTENSIONS_RE = createRegExp( [ ...functionCallStart( - 'require\\s*\\.\\s*(?:requireActual|requireMock)', 'jest\\s*\\.\\s*(?:requireActual|requireMock|genMockFromModule)', ), CAPTURE_STRING_LITERAL(1), diff --git a/packages/jest-runtime/src/index.ts b/packages/jest-runtime/src/index.ts index 001de2f98ec9..92c37fbb3ea3 100644 --- a/packages/jest-runtime/src/index.ts +++ b/packages/jest-runtime/src/index.ts @@ -23,7 +23,6 @@ import type {Config} from '@jest/types'; import type { Jest, JestEnvironment, - LocalModuleRequire, Module, ModuleWrapper, } from '@jest/environment'; @@ -990,10 +989,7 @@ class Runtime { dirname, // __dirname filename, // __filename this._environment.global, // global object - this._createJestObjectFor( - filename, - localModule.require as LocalModuleRequire, - ), // jest object + this._createJestObjectFor(filename), // jest object ...this._config.extraGlobals.map(globalVariable => { if (this._environment.global[globalVariable]) { return this._environment.global[globalVariable]; @@ -1253,7 +1249,7 @@ class Runtime { private _createRequireImplementation( from: InitialModule, options?: InternalModuleOptions, - ): LocalModuleRequire { + ): NodeRequire { // TODO: somehow avoid having to type the arguments - they should come from `NodeRequire/LocalModuleRequire.resolve` const resolve = (moduleName: string, options: ResolveOptions) => this._requireResolve(from.filename, moduleName, options); @@ -1263,13 +1259,8 @@ class Runtime { const moduleRequire = (options && options.isInternalModule ? (moduleName: string) => this.requireInternalModule(from.filename, moduleName) - : this.requireModuleOrMock.bind( - this, - from.filename, - )) as LocalModuleRequire; + : this.requireModuleOrMock.bind(this, from.filename)) as NodeRequire; moduleRequire.extensions = Object.create(null); - moduleRequire.requireActual = this.requireActual.bind(this, from.filename); - moduleRequire.requireMock = this.requireMock.bind(this, from.filename); moduleRequire.resolve = resolve; moduleRequire.cache = (() => { const notPermittedMethod = () => { @@ -1311,10 +1302,7 @@ class Runtime { return moduleRequire; } - private _createJestObjectFor( - from: Config.Path, - localRequire: LocalModuleRequire, - ): Jest { + private _createJestObjectFor(from: Config.Path): Jest { const disableAutomock = () => { this._shouldAutoMock = false; return jestObject; @@ -1445,8 +1433,8 @@ class Runtime { isMockFunction: this._moduleMocker.isMockFunction, isolateModules, mock, - requireActual: localRequire.requireActual, - requireMock: localRequire.requireMock, + requireActual: this.requireActual.bind(this, from), + requireMock: this.requireMock.bind(this, from), resetAllMocks, resetModuleRegistry: resetModules, resetModules,