From b2b80bf117dfaad2c9d0a058e6fffe5d83157d7e Mon Sep 17 00:00:00 2001 From: Tayeeb Hasan Date: Thu, 8 Oct 2020 22:51:56 +0530 Subject: [PATCH 01/22] fix: undefined with createRequire() --- packages/jest-runner/src/runTest.ts | 2 +- packages/jest-runtime/src/index.ts | 13 ++++--------- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/packages/jest-runner/src/runTest.ts b/packages/jest-runner/src/runTest.ts index 36d4ebb03cd9..33c1c6e3d3ee 100644 --- a/packages/jest-runner/src/runTest.ts +++ b/packages/jest-runner/src/runTest.ts @@ -151,7 +151,7 @@ async function runTestInternal( const cacheFS = {[path]: testSource}; setGlobal(environment.global, 'console', testConsole); - const runtime = new Runtime(config, environment, resolver, cacheFS, { + const runtime = new Runtime(config, environment, resolver, cacheFS, path, { changedFiles: context?.changedFiles, collectCoverage: globalConfig.collectCoverage, collectCoverageFrom: globalConfig.collectCoverageFrom, diff --git a/packages/jest-runtime/src/index.ts b/packages/jest-runtime/src/index.ts index c03500e3f758..76b27f53bbba 100644 --- a/packages/jest-runtime/src/index.ts +++ b/packages/jest-runtime/src/index.ts @@ -162,6 +162,7 @@ class Runtime { private _isolatedModuleRegistry: ModuleRegistry | null; private _moduleRegistry: ModuleRegistry; private _esmoduleRegistry: Map>; + private _path: Config.Path; private _resolver: Resolver; private _shouldAutoMock: boolean; private _shouldMockModuleCache: BooleanMap; @@ -183,6 +184,7 @@ class Runtime { environment: JestEnvironment, resolver: Resolver, cacheFS: Record = {}, + path: Config.Path, coverageOptions?: ShouldInstrumentOptions, ) { this._cacheFS = new Map(Object.entries(cacheFS)); @@ -208,6 +210,7 @@ class Runtime { this._isolatedMockRegistry = null; this._moduleRegistry = new Map(); this._esmoduleRegistry = new Map(); + this._path = path; this._resolver = resolver; this._scriptTransformer = new ScriptTransformer(config); this._shouldAutoMock = config.automock; @@ -1366,15 +1369,7 @@ class Runtime { Object.defineProperty(moduleRequire, 'main', { enumerable: true, get() { - let mainModule = from.parent; - while ( - mainModule && - mainModule.parent && - mainModule.id !== mainModule.parent.id - ) { - mainModule = mainModule.parent; - } - return mainModule; + return this._path; }, }); return moduleRequire; From a34f199776a3d67b95b448bf0de992fad5d52166 Mon Sep 17 00:00:00 2001 From: Tayeeb Hasan Date: Thu, 8 Oct 2020 23:08:29 +0530 Subject: [PATCH 02/22] update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3e697b9155db..4d00eee5d69c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ ### Fixes - `[jest-validate]` Show suggestion only when unrecognized cli param is longer than 1 character ([#10604](https://github.com/facebook/jest/pull/10604)) +- `[jest-runner, jest-runtime]` fix: `require.main` undefined with createRequire() ([#10610](https://github.com/facebook/jest/pull/10610)) ### Chore & Maintenance From a53c7ddc496f243e77f5f4e8623eeb14409d013c Mon Sep 17 00:00:00 2001 From: Tayeeb Hasan Date: Thu, 8 Oct 2020 23:48:51 +0530 Subject: [PATCH 03/22] add filepath to jest-runtime cli --- packages/jest-runtime/src/cli/index.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/jest-runtime/src/cli/index.ts b/packages/jest-runtime/src/cli/index.ts index 2f1a9b1ccd57..6a919c98e3a3 100644 --- a/packages/jest-runtime/src/cli/index.ts +++ b/packages/jest-runtime/src/cli/index.ts @@ -84,7 +84,13 @@ export async function run( setGlobal(environment.global, 'jestProjectConfig', config); setGlobal(environment.global, 'jestGlobalConfig', globalConfig); - const runtime = new Runtime(config, environment, hasteMap.resolver); + const runtime = new Runtime( + config, + environment, + hasteMap.resolver, + undefined, + filePath, + ); for (const path of config.setupFiles) { // TODO: remove ? in Jest 26 From f2c990dd2f76df0b3c8d6bde119691b7f9056b78 Mon Sep 17 00:00:00 2001 From: Tayeeb Hasan Date: Fri, 9 Oct 2020 00:05:59 +0530 Subject: [PATCH 04/22] create const for path --- packages/jest-runtime/src/index.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/jest-runtime/src/index.ts b/packages/jest-runtime/src/index.ts index 76b27f53bbba..a3a2ae269b40 100644 --- a/packages/jest-runtime/src/index.ts +++ b/packages/jest-runtime/src/index.ts @@ -1366,10 +1366,12 @@ class Runtime { }); })(); + const path = this._path; + Object.defineProperty(moduleRequire, 'main', { enumerable: true, get() { - return this._path; + return path; }, }); return moduleRequire; From e3f491fd15a9b0351fb3aaa3e3dfa491e7c088d2 Mon Sep 17 00:00:00 2001 From: Tayeeb Hasan Date: Fri, 9 Oct 2020 01:58:05 +0530 Subject: [PATCH 05/22] make testPath optional parameter --- packages/jest-runner/src/runTest.ts | 25 ++++++++++++++++--------- packages/jest-runtime/src/cli/index.ts | 1 + packages/jest-runtime/src/index.ts | 12 +++++------- 3 files changed, 22 insertions(+), 16 deletions(-) diff --git a/packages/jest-runner/src/runTest.ts b/packages/jest-runner/src/runTest.ts index 33c1c6e3d3ee..85aadd468329 100644 --- a/packages/jest-runner/src/runTest.ts +++ b/packages/jest-runner/src/runTest.ts @@ -151,15 +151,22 @@ async function runTestInternal( const cacheFS = {[path]: testSource}; setGlobal(environment.global, 'console', testConsole); - const runtime = new Runtime(config, environment, resolver, cacheFS, path, { - changedFiles: context?.changedFiles, - collectCoverage: globalConfig.collectCoverage, - collectCoverageFrom: globalConfig.collectCoverageFrom, - collectCoverageOnlyFrom: globalConfig.collectCoverageOnlyFrom, - coverageProvider: globalConfig.coverageProvider, - sourcesRelatedToTestsInChangedFiles: - context?.sourcesRelatedToTestsInChangedFiles, - }); + const runtime = new Runtime( + config, + environment, + resolver, + cacheFS, + { + changedFiles: context?.changedFiles, + collectCoverage: globalConfig.collectCoverage, + collectCoverageFrom: globalConfig.collectCoverageFrom, + collectCoverageOnlyFrom: globalConfig.collectCoverageOnlyFrom, + coverageProvider: globalConfig.coverageProvider, + sourcesRelatedToTestsInChangedFiles: + context?.sourcesRelatedToTestsInChangedFiles, + }, + path, + ); const start = Date.now(); diff --git a/packages/jest-runtime/src/cli/index.ts b/packages/jest-runtime/src/cli/index.ts index 6a919c98e3a3..c49da6cce333 100644 --- a/packages/jest-runtime/src/cli/index.ts +++ b/packages/jest-runtime/src/cli/index.ts @@ -89,6 +89,7 @@ export async function run( environment, hasteMap.resolver, undefined, + undefined, filePath, ); diff --git a/packages/jest-runtime/src/index.ts b/packages/jest-runtime/src/index.ts index a3a2ae269b40..c086caa9ca2f 100644 --- a/packages/jest-runtime/src/index.ts +++ b/packages/jest-runtime/src/index.ts @@ -162,7 +162,7 @@ class Runtime { private _isolatedModuleRegistry: ModuleRegistry | null; private _moduleRegistry: ModuleRegistry; private _esmoduleRegistry: Map>; - private _path: Config.Path; + private _testPath: Config.Path | undefined; private _resolver: Resolver; private _shouldAutoMock: boolean; private _shouldMockModuleCache: BooleanMap; @@ -184,8 +184,8 @@ class Runtime { environment: JestEnvironment, resolver: Resolver, cacheFS: Record = {}, - path: Config.Path, coverageOptions?: ShouldInstrumentOptions, + path?: Config.Path, ) { this._cacheFS = new Map(Object.entries(cacheFS)); this._config = config; @@ -210,7 +210,7 @@ class Runtime { this._isolatedMockRegistry = null; this._moduleRegistry = new Map(); this._esmoduleRegistry = new Map(); - this._path = path; + this._testPath = path; this._resolver = resolver; this._scriptTransformer = new ScriptTransformer(config); this._shouldAutoMock = config.automock; @@ -1366,13 +1366,11 @@ class Runtime { }); })(); - const path = this._path; + const testPath = this._testPath; Object.defineProperty(moduleRequire, 'main', { enumerable: true, - get() { - return path; - }, + value: testPath, }); return moduleRequire; } From 79373ec69a753e53a15fe14b2a9af96572957bb7 Mon Sep 17 00:00:00 2001 From: Tayeeb Hasan <40818234+flozender@users.noreply.github.com> Date: Fri, 9 Oct 2020 02:10:12 +0530 Subject: [PATCH 06/22] Add TODO for path parameter Co-authored-by: Simen Bekkhus --- packages/jest-runtime/src/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/jest-runtime/src/index.ts b/packages/jest-runtime/src/index.ts index c086caa9ca2f..8ae19a00e8e7 100644 --- a/packages/jest-runtime/src/index.ts +++ b/packages/jest-runtime/src/index.ts @@ -185,6 +185,7 @@ class Runtime { resolver: Resolver, cacheFS: Record = {}, coverageOptions?: ShouldInstrumentOptions, + // TODO: Make mandatory in Jest 27 path?: Config.Path, ) { this._cacheFS = new Map(Object.entries(cacheFS)); From ffdf09f6cb893f78fa2a6281e737a95a4a1a05e8 Mon Sep 17 00:00:00 2001 From: Tayeeb Hasan Date: Fri, 9 Oct 2020 02:15:01 +0530 Subject: [PATCH 07/22] remove const testPath --- packages/jest-runtime/src/index.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/jest-runtime/src/index.ts b/packages/jest-runtime/src/index.ts index 8ae19a00e8e7..14c10b0330f6 100644 --- a/packages/jest-runtime/src/index.ts +++ b/packages/jest-runtime/src/index.ts @@ -1367,11 +1367,9 @@ class Runtime { }); })(); - const testPath = this._testPath; - Object.defineProperty(moduleRequire, 'main', { enumerable: true, - value: testPath, + value: this._testPath, }); return moduleRequire; } From 1704f411519e03e98183281c74dc97f50a3987a3 Mon Sep 17 00:00:00 2001 From: Tayeeb Hasan Date: Fri, 9 Oct 2020 14:46:55 +0530 Subject: [PATCH 08/22] Get module from moduleRegistry --- packages/jest-runtime/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/jest-runtime/src/index.ts b/packages/jest-runtime/src/index.ts index 14c10b0330f6..ddc7f64a850f 100644 --- a/packages/jest-runtime/src/index.ts +++ b/packages/jest-runtime/src/index.ts @@ -1369,7 +1369,7 @@ class Runtime { Object.defineProperty(moduleRequire, 'main', { enumerable: true, - value: this._testPath, + value: this._moduleRegistry.get(this._testPath || ''), }); return moduleRequire; } From db51908224da4a1a3b3bac3599f4ced0aa0f12be Mon Sep 17 00:00:00 2001 From: Tayeeb Hasan Date: Fri, 9 Oct 2020 14:47:26 +0530 Subject: [PATCH 09/22] Update createRuntime to pass filename --- packages/jest-runtime/src/__mocks__/createRuntime.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/jest-runtime/src/__mocks__/createRuntime.js b/packages/jest-runtime/src/__mocks__/createRuntime.js index 5c0864d5369a..c2d832e063d3 100644 --- a/packages/jest-runtime/src/__mocks__/createRuntime.js +++ b/packages/jest-runtime/src/__mocks__/createRuntime.js @@ -47,6 +47,9 @@ module.exports = async function createRuntime(filename, config) { config, environment, Runtime.createResolver(config, hasteMap.moduleMap), + undefined, + undefined, + filename, ); for (const path of config.setupFiles) { From 4148e9e001d938e098967f1fc6f20559cdb0e22b Mon Sep 17 00:00:00 2001 From: Tayeeb Hasan <40818234+flozender@users.noreply.github.com> Date: Fri, 9 Oct 2020 14:59:55 +0530 Subject: [PATCH 10/22] Update packages/jest-runtime/src/index.ts Co-authored-by: Simen Bekkhus --- packages/jest-runtime/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/jest-runtime/src/index.ts b/packages/jest-runtime/src/index.ts index ddc7f64a850f..1ef863729219 100644 --- a/packages/jest-runtime/src/index.ts +++ b/packages/jest-runtime/src/index.ts @@ -1369,7 +1369,7 @@ class Runtime { Object.defineProperty(moduleRequire, 'main', { enumerable: true, - value: this._moduleRegistry.get(this._testPath || ''), + value: this._testPath ? this._moduleRegistry.get(this._testPath) : null, }); return moduleRequire; } From 5bae7dae08f5cf7dc4c0cddd48b1039bd6c1c8ed Mon Sep 17 00:00:00 2001 From: Tayeeb Hasan Date: Fri, 9 Oct 2020 19:11:52 +0530 Subject: [PATCH 11/22] Add integration test --- .../requireMainAfterCreateRequire.test.ts | 22 +++++++++++++++++++ .../__tests__/parent.test.js | 17 ++++++++++++++ .../child.js | 7 ++++++ .../empty.js | 6 +++++ .../package.json | 6 +++++ 5 files changed, 58 insertions(+) create mode 100644 e2e/__tests__/requireMainAfterCreateRequire.test.ts create mode 100644 e2e/require-main-after-create-require/__tests__/parent.test.js create mode 100644 e2e/require-main-after-create-require/child.js create mode 100644 e2e/require-main-after-create-require/empty.js create mode 100644 e2e/require-main-after-create-require/package.json diff --git a/e2e/__tests__/requireMainAfterCreateRequire.test.ts b/e2e/__tests__/requireMainAfterCreateRequire.test.ts new file mode 100644 index 000000000000..5530be6283b7 --- /dev/null +++ b/e2e/__tests__/requireMainAfterCreateRequire.test.ts @@ -0,0 +1,22 @@ +/** + * 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'; + +test('`require.main` not undefined after createRequire', () => { + const {stdout} = runJest('require-main-after-create-require'); + + expect(stdout).toMatch( + path.resolve( + path.join( + __dirname, + '../require-main-after-create-require/__tests__/parent.test.js', + ), + ), + ); +}); diff --git a/e2e/require-main-after-create-require/__tests__/parent.test.js b/e2e/require-main-after-create-require/__tests__/parent.test.js new file mode 100644 index 000000000000..ce2b70980415 --- /dev/null +++ b/e2e/require-main-after-create-require/__tests__/parent.test.js @@ -0,0 +1,17 @@ +/** + * 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 Module = require('module'); +const path = require('path'); + +test('require child from parent', () => { + // createRequire with a different file + require = Module.createRequire(path.resolve('./empty.js')); + + require('./child'); + + expect(1).toBe(1); +}); diff --git a/e2e/require-main-after-create-require/child.js b/e2e/require-main-after-create-require/child.js new file mode 100644 index 000000000000..40ad4afa69cf --- /dev/null +++ b/e2e/require-main-after-create-require/child.js @@ -0,0 +1,7 @@ +/** + * 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. + */ +process.stdout.write(require.main && require.main.filename); diff --git a/e2e/require-main-after-create-require/empty.js b/e2e/require-main-after-create-require/empty.js new file mode 100644 index 000000000000..b6861b5fb248 --- /dev/null +++ b/e2e/require-main-after-create-require/empty.js @@ -0,0 +1,6 @@ +/** + * 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. + */ diff --git a/e2e/require-main-after-create-require/package.json b/e2e/require-main-after-create-require/package.json new file mode 100644 index 000000000000..82f8a566a22b --- /dev/null +++ b/e2e/require-main-after-create-require/package.json @@ -0,0 +1,6 @@ +{ + "jest": { + "testEnvironment": "node" + } + } + \ No newline at end of file From a0ba65e96f1ab8930d719e5989c152531bf984c6 Mon Sep 17 00:00:00 2001 From: Tayeeb Hasan Date: Fri, 9 Oct 2020 19:14:18 +0530 Subject: [PATCH 12/22] whitespace --- e2e/require-main-after-create-require/__tests__/parent.test.js | 1 - 1 file changed, 1 deletion(-) diff --git a/e2e/require-main-after-create-require/__tests__/parent.test.js b/e2e/require-main-after-create-require/__tests__/parent.test.js index ce2b70980415..a0dd4e20dc5f 100644 --- a/e2e/require-main-after-create-require/__tests__/parent.test.js +++ b/e2e/require-main-after-create-require/__tests__/parent.test.js @@ -10,7 +10,6 @@ const path = require('path'); test('require child from parent', () => { // createRequire with a different file require = Module.createRequire(path.resolve('./empty.js')); - require('./child'); expect(1).toBe(1); From 4ca6caf144e908ac9e81c12e71582913e47243bd Mon Sep 17 00:00:00 2001 From: Tayeeb Hasan Date: Fri, 9 Oct 2020 20:56:29 +0530 Subject: [PATCH 13/22] Skip test on node v10 --- .../requireMainAfterCreateRequire.test.ts | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/e2e/__tests__/requireMainAfterCreateRequire.test.ts b/e2e/__tests__/requireMainAfterCreateRequire.test.ts index 5530be6283b7..7da64fce20cd 100644 --- a/e2e/__tests__/requireMainAfterCreateRequire.test.ts +++ b/e2e/__tests__/requireMainAfterCreateRequire.test.ts @@ -5,18 +5,20 @@ * LICENSE file in the root directory of this source tree. */ import * as path from 'path'; - +import {onNodeVersions} from '@jest/test-utils'; import runJest from '../runJest'; -test('`require.main` not undefined after createRequire', () => { - const {stdout} = runJest('require-main-after-create-require'); +onNodeVersions('^12.16.0 || >=13.7.0', () => { + test('`require.main` not undefined after createRequire', () => { + const {stdout} = runJest('require-main-after-create-require'); - expect(stdout).toMatch( - path.resolve( - path.join( - __dirname, - '../require-main-after-create-require/__tests__/parent.test.js', + expect(stdout).toMatch( + path.resolve( + path.join( + __dirname, + '../require-main-after-create-require/__tests__/parent.test.js', + ), ), - ), - ); + ); + }); }); From 1af04d8608da7fb94eabe3f4254e56ee1857be32 Mon Sep 17 00:00:00 2001 From: Tayeeb Hasan Date: Sat, 10 Oct 2020 10:00:10 +0530 Subject: [PATCH 14/22] rewrite require test --- .../__tests__/parent.test.js | 4 +--- e2e/require-main-after-create-require/child.js | 3 ++- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/e2e/require-main-after-create-require/__tests__/parent.test.js b/e2e/require-main-after-create-require/__tests__/parent.test.js index a0dd4e20dc5f..041c9afa2148 100644 --- a/e2e/require-main-after-create-require/__tests__/parent.test.js +++ b/e2e/require-main-after-create-require/__tests__/parent.test.js @@ -10,7 +10,5 @@ const path = require('path'); test('require child from parent', () => { // createRequire with a different file require = Module.createRequire(path.resolve('./empty.js')); - require('./child'); - - expect(1).toBe(1); + expect(() => require('./child')).not.toThrow(); }); diff --git a/e2e/require-main-after-create-require/child.js b/e2e/require-main-after-create-require/child.js index 40ad4afa69cf..6e8e5de6a885 100644 --- a/e2e/require-main-after-create-require/child.js +++ b/e2e/require-main-after-create-require/child.js @@ -4,4 +4,5 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ -process.stdout.write(require.main && require.main.filename); +// Will throw if require.main is null +process.stdout.write(require.main.filename); From 8bdbf5dc06590e575a05f8c95ef5924481f8485d Mon Sep 17 00:00:00 2001 From: Tayeeb Hasan Date: Sat, 10 Oct 2020 10:03:20 +0530 Subject: [PATCH 15/22] add newline to package.json --- e2e/require-main-after-create-require/package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/e2e/require-main-after-create-require/package.json b/e2e/require-main-after-create-require/package.json index 82f8a566a22b..eccb477ccc2b 100644 --- a/e2e/require-main-after-create-require/package.json +++ b/e2e/require-main-after-create-require/package.json @@ -1,6 +1,6 @@ { - "jest": { - "testEnvironment": "node" - } + "jest": { + "testEnvironment": "node" } - \ No newline at end of file +} + From e7d7c6c57881c62fc2478e4bdf5e5fc879d0921b Mon Sep 17 00:00:00 2001 From: Tayeeb Hasan <40818234+flozender@users.noreply.github.com> Date: Sat, 10 Oct 2020 15:42:01 +0530 Subject: [PATCH 16/22] change min node version Co-authored-by: Simen Bekkhus --- e2e/__tests__/requireMainAfterCreateRequire.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e/__tests__/requireMainAfterCreateRequire.test.ts b/e2e/__tests__/requireMainAfterCreateRequire.test.ts index 7da64fce20cd..b0e2246fbeef 100644 --- a/e2e/__tests__/requireMainAfterCreateRequire.test.ts +++ b/e2e/__tests__/requireMainAfterCreateRequire.test.ts @@ -8,7 +8,7 @@ import * as path from 'path'; import {onNodeVersions} from '@jest/test-utils'; import runJest from '../runJest'; -onNodeVersions('^12.16.0 || >=13.7.0', () => { +onNodeVersions('>=12.2.0', () => { test('`require.main` not undefined after createRequire', () => { const {stdout} = runJest('require-main-after-create-require'); From 1119acf7508fd211974a1fb70bb9cdec2ed89252 Mon Sep 17 00:00:00 2001 From: Tayeeb Hasan <40818234+flozender@users.noreply.github.com> Date: Sat, 10 Oct 2020 15:43:37 +0530 Subject: [PATCH 17/22] Update e2e/require-main-after-create-require/__tests__/parent.test.js Co-authored-by: Simen Bekkhus --- .../__tests__/parent.test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/e2e/require-main-after-create-require/__tests__/parent.test.js b/e2e/require-main-after-create-require/__tests__/parent.test.js index 041c9afa2148..a3de637eb5e6 100644 --- a/e2e/require-main-after-create-require/__tests__/parent.test.js +++ b/e2e/require-main-after-create-require/__tests__/parent.test.js @@ -9,6 +9,6 @@ const path = require('path'); test('require child from parent', () => { // createRequire with a different file - require = Module.createRequire(path.resolve('./empty.js')); - expect(() => require('./child')).not.toThrow(); + const newRequire = Module.createRequire(path.resolve('./empty.js')); + expect(() => newRequire('./child')).not.toThrow(); }); From fe09bdbcec6fe7c3d7401b5ee272a8f51fa486b7 Mon Sep 17 00:00:00 2001 From: Tayeeb Hasan Date: Sat, 10 Oct 2020 15:49:07 +0530 Subject: [PATCH 18/22] rm path.resolve() and update changelog --- CHANGELOG.md | 2 +- e2e/__tests__/requireMainAfterCreateRequire.test.ts | 8 +++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b46e397efa5e..c8cd4ef302f6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,9 +4,9 @@ ### Fixes +- `[jest-runner, jest-runtime]` fix: `require.main` undefined with createRequire() ([#10610](https://github.com/facebook/jest/pull/10610)) - `[jest-validate]` Show suggestion only when unrecognized cli param is longer than 1 character ([#10604](https://github.com/facebook/jest/pull/10604)) - `[jest-validate]` Validate `testURL` as CLI option ([#10595](https://github.com/facebook/jest/pull/10595)) -- `[jest-runner, jest-runtime]` fix: `require.main` undefined with createRequire() ([#10610](https://github.com/facebook/jest/pull/10610)) ### Chore & Maintenance diff --git a/e2e/__tests__/requireMainAfterCreateRequire.test.ts b/e2e/__tests__/requireMainAfterCreateRequire.test.ts index b0e2246fbeef..ce221e77587f 100644 --- a/e2e/__tests__/requireMainAfterCreateRequire.test.ts +++ b/e2e/__tests__/requireMainAfterCreateRequire.test.ts @@ -13,11 +13,9 @@ onNodeVersions('>=12.2.0', () => { const {stdout} = runJest('require-main-after-create-require'); expect(stdout).toMatch( - path.resolve( - path.join( - __dirname, - '../require-main-after-create-require/__tests__/parent.test.js', - ), + path.join( + __dirname, + '../require-main-after-create-require/__tests__/parent.test.js', ), ); }); From aa4c4a83614b4b57e44f3e5cf838895de7ec1bba Mon Sep 17 00:00:00 2001 From: Tayeeb Hasan <40818234+flozender@users.noreply.github.com> Date: Sat, 10 Oct 2020 16:56:18 +0530 Subject: [PATCH 19/22] Update e2e/__tests__/requireMainAfterCreateRequire.test.ts Co-authored-by: Simen Bekkhus --- e2e/__tests__/requireMainAfterCreateRequire.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e/__tests__/requireMainAfterCreateRequire.test.ts b/e2e/__tests__/requireMainAfterCreateRequire.test.ts index ce221e77587f..6bd837366974 100644 --- a/e2e/__tests__/requireMainAfterCreateRequire.test.ts +++ b/e2e/__tests__/requireMainAfterCreateRequire.test.ts @@ -12,7 +12,7 @@ onNodeVersions('>=12.2.0', () => { test('`require.main` not undefined after createRequire', () => { const {stdout} = runJest('require-main-after-create-require'); - expect(stdout).toMatch( + expect(stdout).toBe( path.join( __dirname, '../require-main-after-create-require/__tests__/parent.test.js', From e410eb765a56eb30ed957ff84f911ba0ead44cb7 Mon Sep 17 00:00:00 2001 From: Tayeeb Hasan <40818234+flozender@users.noreply.github.com> Date: Sat, 10 Oct 2020 16:56:30 +0530 Subject: [PATCH 20/22] Update CHANGELOG.md Co-authored-by: Simen Bekkhus --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c8cd4ef302f6..77dbc93912c2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ ### Fixes -- `[jest-runner, jest-runtime]` fix: `require.main` undefined with createRequire() ([#10610](https://github.com/facebook/jest/pull/10610)) +- `[jest-runner, jest-runtime]` fix: `require.main` undefined with `createRequire()` ([#10610](https://github.com/facebook/jest/pull/10610)) - `[jest-validate]` Show suggestion only when unrecognized cli param is longer than 1 character ([#10604](https://github.com/facebook/jest/pull/10604)) - `[jest-validate]` Validate `testURL` as CLI option ([#10595](https://github.com/facebook/jest/pull/10595)) From 8c57b50ffd2790bbbfbf0d705a5734c84d3179d0 Mon Sep 17 00:00:00 2001 From: Tayeeb Hasan <40818234+flozender@users.noreply.github.com> Date: Sat, 10 Oct 2020 16:56:45 +0530 Subject: [PATCH 21/22] Update packages/jest-runtime/src/index.ts Co-authored-by: Simen Bekkhus --- packages/jest-runtime/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/jest-runtime/src/index.ts b/packages/jest-runtime/src/index.ts index 1ef863729219..a22b8902f85f 100644 --- a/packages/jest-runtime/src/index.ts +++ b/packages/jest-runtime/src/index.ts @@ -186,7 +186,7 @@ class Runtime { cacheFS: Record = {}, coverageOptions?: ShouldInstrumentOptions, // TODO: Make mandatory in Jest 27 - path?: Config.Path, + testPath?: Config.Path, ) { this._cacheFS = new Map(Object.entries(cacheFS)); this._config = config; From e4edca565c392f81e070fccff9c508345149b864 Mon Sep 17 00:00:00 2001 From: Tayeeb Hasan <40818234+flozender@users.noreply.github.com> Date: Sat, 10 Oct 2020 16:56:54 +0530 Subject: [PATCH 22/22] Update packages/jest-runtime/src/index.ts Co-authored-by: Simen Bekkhus --- packages/jest-runtime/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/jest-runtime/src/index.ts b/packages/jest-runtime/src/index.ts index a22b8902f85f..f079120bd20f 100644 --- a/packages/jest-runtime/src/index.ts +++ b/packages/jest-runtime/src/index.ts @@ -211,7 +211,7 @@ class Runtime { this._isolatedMockRegistry = null; this._moduleRegistry = new Map(); this._esmoduleRegistry = new Map(); - this._testPath = path; + this._testPath = testPath; this._resolver = resolver; this._scriptTransformer = new ScriptTransformer(config); this._shouldAutoMock = config.automock;