Skip to content

Commit

Permalink
Fix ability to transform specific node_modules dependencies required …
Browse files Browse the repository at this point in the history
…in global setup script
  • Loading branch information
Volune committed Mar 18, 2019
1 parent 76782b8 commit d9f9018
Show file tree
Hide file tree
Showing 8 changed files with 91 additions and 1 deletion.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
### Fixes

- `[pretty-format]` Print `BigInt` as a readable number instead of `{}` [#8138](https://github.com/facebook/jest/pull/8138)
- `[jest-core]` Fix ability to transform dependencies required from globalSetup script [#8143](https://github.com/facebook/jest/pull/8143)

### Chore & Maintenance

Expand Down
14 changes: 13 additions & 1 deletion e2e/__tests__/globalSetup.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import fs from 'fs';
import os from 'os';
import path from 'path';
import runJest, {json as runWithJson} from '../runJest';
import {cleanup} from '../Utils';
import {cleanup, run} from '../Utils';

const DIR = path.join(os.tmpdir(), 'jest-global-setup');
const project1DIR = path.join(os.tmpdir(), 'jest-global-setup-project-1');
Expand All @@ -19,18 +19,21 @@ const customTransformDIR = path.join(
os.tmpdir(),
'jest-global-setup-custom-transform',
);
const nodeModulesDIR = path.join(os.tmpdir(), 'jest-global-setup-node-modules');

beforeEach(() => {
cleanup(DIR);
cleanup(project1DIR);
cleanup(project2DIR);
cleanup(customTransformDIR);
cleanup(nodeModulesDIR);
});
afterAll(() => {
cleanup(DIR);
cleanup(project1DIR);
cleanup(project2DIR);
cleanup(customTransformDIR);
cleanup(nodeModulesDIR);
});

test('globalSetup is triggered once before all test suites', () => {
Expand Down Expand Up @@ -166,3 +169,12 @@ test('should not transpile the transformer', () => {

expect(status).toBe(0);
});

test('should transform node_modules if configured by transformIgnorePatterns', () => {
const testDir = path.resolve(__dirname, '..', 'global-setup-node-modules');
run('yarn', testDir);

const {status} = runJest('global-setup-node-modules', [`--no-cache`]);

expect(status).toBe(0);
});
20 changes: 20 additions & 0 deletions e2e/global-setup-node-modules/__tests__/test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
/**
* 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.
*/
'use strict';

const fs = require('fs');
const os = require('os');
const path = require('path');

const DIR = path.join(os.tmpdir(), 'jest-global-setup-node-modules');

test('should exist setup file', () => {
const files = fs.readdirSync(DIR);
expect(files).toHaveLength(1);
const setup = fs.readFileSync(path.join(DIR, files[0]), 'utf8');
expect(setup).toBe('setup function');
});
12 changes: 12 additions & 0 deletions e2e/global-setup-node-modules/babel.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
module.exports = {
presets: [
[
'@babel/preset-env',
{
targets: {
node: 'current',
},
},
],
],
};
13 changes: 13 additions & 0 deletions e2e/global-setup-node-modules/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"devDependencies": {
"lodash-es": "^4.17.11"
},
"jest": {
"testEnvironment": "node",
"globalSetup": "<rootDir>/setup.js",
"transformIgnorePatterns": [
"/node_modules/(?!(?:lodash-es)/)",
"/packages/"
]
}
}
23 changes: 23 additions & 0 deletions e2e/global-setup-node-modules/setup.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
/**
* 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 {compact} from 'lodash-es';
const crypto = require('crypto');
const fs = require('fs');
const {createDirectory} = require('jest-util');
const os = require('os');
const path = require('path');

const DIR = path.join(os.tmpdir(), 'jest-global-setup-node-modules');

module.exports = function() {
return new Promise(resolve => {
createDirectory(DIR);
const fileId = crypto.randomBytes(20).toString('hex');
fs.writeFileSync(path.join(DIR, fileId), `setup ${typeof compact}`);
resolve();
});
};
8 changes: 8 additions & 0 deletions e2e/global-setup-node-modules/yarn.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1


lodash-es@^4.17.11:
version "4.17.11"
resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.11.tgz#145ab4a7ac5c5e52a3531fb4f310255a152b4be0"
integrity sha512-DHb1ub+rMjjrxqlB3H56/6MXtm1lSksDp2rA2cNWjG8mlDUYFhUj3Di2Zn5IwSU87xLv8tNIQ7sSwE/YOX/D/Q==
1 change: 1 addition & 0 deletions packages/jest-core/src/runGlobalHook.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ export default async ({
transformer.transformSource(filename, code, false).code || code,
{
exts: [extname(modulePath)],
ignoreNodeModules: false,
matcher: transformer.shouldTransform.bind(transformer),
},
);
Expand Down

0 comments on commit d9f9018

Please sign in to comment.