From 4bbaee651600fb8a5ce15b468a0b5196d93e1806 Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Sat, 31 Oct 2020 20:46:15 +0100 Subject: [PATCH] fix: properly inject `extraGlobals` into the environment --- CHANGELOG.md | 1 + e2e/__tests__/extraGlobals.test.ts | 34 ++++++++++++++++++++++++++++++ packages/jest-runtime/src/index.ts | 2 +- 3 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 e2e/__tests__/extraGlobals.test.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 6c74a6b548c5..0017592475c4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ - `[jest-resolve-dependencies]` Resolve mocks as dependencies ([#10713](https://github.com/facebook/jest/pull/10713)) - `[jest-runtime]` Handle file URLs in dynamic imports ([#10744](https://github.com/facebook/jest/pull/10744)) - `[jest-runtime, babel-jest]` Pass more ESM options to `@jest/transform` ([#10752](https://github.com/facebook/jest/pull/10752)) +- `[jest-runtime]` Properly inject `extraGlobals` into the runtime ([#10758](https://github.com/facebook/jest/pull/10758)) - `[jest-transform]` Link to ESM docs on syntax errors ([#10748](https://github.com/facebook/jest/pull/10748)) ### Chore & Maintenance diff --git a/e2e/__tests__/extraGlobals.test.ts b/e2e/__tests__/extraGlobals.test.ts new file mode 100644 index 000000000000..62d063f66895 --- /dev/null +++ b/e2e/__tests__/extraGlobals.test.ts @@ -0,0 +1,34 @@ +/** + * 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 {tmpdir} from 'os'; +import * as path from 'path'; +import {cleanup, createEmptyPackage, writeFiles} from '../Utils'; +import {json as runJest} from '../runJest'; + +const DIR = path.resolve(tmpdir(), 'extra-globals'); + +beforeEach(() => { + cleanup(DIR); + createEmptyPackage(DIR, {jest: {extraGlobals: ['Math']}}); +}); + +afterAll(() => cleanup(DIR)); + +test('works with injected globals', () => { + writeFiles(DIR, { + 'test.js': ` + test('Math works when injected', () => { + expect(Math.floor(1.5)).toBe(1); + }); + `, + }); + + const {exitCode} = runJest(DIR); + + expect(exitCode).toBe(0); +}); diff --git a/packages/jest-runtime/src/index.ts b/packages/jest-runtime/src/index.ts index 1f8f8f7ef6a7..6640c56a9f1a 100644 --- a/packages/jest-runtime/src/index.ts +++ b/packages/jest-runtime/src/index.ts @@ -1097,7 +1097,7 @@ class Runtime { const lastArgs: [Jest | undefined, ...Array] = [ this._config.injectGlobals ? jestObject : undefined, // jest object - this._config.extraGlobals.map(globalVariable => { + ...this._config.extraGlobals.map(globalVariable => { if (this._environment.global[globalVariable]) { return this._environment.global[globalVariable]; }