Skip to content

Commit 34c2a2f

Browse files
committed
Add yarn test-bundles and yarn test-prod-bundles
Only files ending with -test.public.js are opted in (so far we don't have any).
1 parent 9bb8e67 commit 34c2a2f

File tree

5 files changed

+59
-28
lines changed

5 files changed

+59
-28
lines changed

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,8 @@
105105
"postinstall": "node node_modules/fbjs-scripts/node/check-dev-engines.js package.json",
106106
"test": "cross-env NODE_ENV=development jest --config ./scripts/jest/config.source.js",
107107
"test-prod": "cross-env NODE_ENV=production jest --config ./scripts/jest/config.source.js",
108+
"test-bundles": "cross-env NODE_ENV=development jest --config ./scripts/jest/config.bundles.js",
109+
"test-bundles-prod": "cross-env NODE_ENV=production jest --config ./scripts/jest/config.bundles.js",
108110
"flow": "node ./scripts/tasks/flow.js",
109111
"prettier": "node ./scripts/prettier/index.js write-changed",
110112
"prettier-all": "node ./scripts/prettier/index.js write",

scripts/jest/config.base.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
'use strict';
2+
3+
module.exports = {
4+
modulePathIgnorePatterns: [
5+
'<rootDir>/scripts/rollup/shims/',
6+
'<rootDir>/scripts/bench/',
7+
],
8+
transform: {
9+
'.*': require.resolve('./preprocessor.js'),
10+
},
11+
setupFiles: [require.resolve('./setupEnvironment.js')],
12+
setupTestFrameworkScriptFile: require.resolve('./setupTests.js'),
13+
testRegex: '/__tests__/.*(\\.js|\\.coffee|[^d]\\.ts)$',
14+
moduleFileExtensions: ['js', 'json', 'node', 'coffee', 'ts'],
15+
rootDir: process.cwd(),
16+
roots: ['<rootDir>/packages', '<rootDir>/scripts'],
17+
collectCoverageFrom: ['packages/**/*.js'],
18+
timers: 'fake',
19+
};

scripts/jest/config.bundles.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
'use strict';
2+
3+
const {readdirSync, statSync} = require('fs');
4+
const {join} = require('path');
5+
6+
// Create a module map to point React packages to the build output.
7+
const baseConfig = require('./config.base');
8+
const packagesRoot = join(__dirname, '..', '..', 'packages');
9+
const packages = readdirSync(packagesRoot).filter(dir => {
10+
const packagePath = join(packagesRoot, dir, 'package.json');
11+
return statSync(packagePath).isFile();
12+
});
13+
const moduleNameMapper = {};
14+
packages.forEach((name) => {
15+
// Root entry point
16+
moduleNameMapper[`^${name}$`] = `<rootDir>/build/packages/${name}`;
17+
// Named entry points
18+
moduleNameMapper[`^${name}/(.*)$`] = `<rootDir>/build/packages/${name}/$1`;
19+
});
20+
21+
module.exports = Object.assign({},
22+
baseConfig,
23+
{
24+
// Redirect imports to the compiled bundles.
25+
moduleNameMapper,
26+
// Only run bundle tests on whitelisted .public.* files.
27+
// TODO: switch to a blacklist instead when enough tests are opted in.
28+
testRegex: '/__tests__/.*\\.public\\.js$',
29+
// Exclude the build output from transforms.
30+
transformIgnorePatterns: [
31+
'/node_modules/',
32+
'<rootDir>/build/'
33+
],
34+
}
35+
);

scripts/jest/config.source.js

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,5 @@
11
'use strict';
22

3-
module.exports = {
4-
modulePathIgnorePatterns: [
5-
'<rootDir>/scripts/rollup/shims/',
6-
'<rootDir>/scripts/bench/',
7-
],
8-
transform: {
9-
'.*': require.resolve('./preprocessor.js'),
10-
},
11-
setupFiles: [require.resolve('./setupEnvironment.js')],
12-
setupTestFrameworkScriptFile: require.resolve('./setupTests.js'),
13-
testRegex: '/__tests__/.*(\\.js|\\.coffee|[^d]\\.ts)$',
14-
moduleFileExtensions: ['js', 'json', 'node', 'coffee', 'ts'],
15-
rootDir: process.cwd(),
16-
roots: ['<rootDir>/packages', '<rootDir>/scripts'],
17-
collectCoverageFrom: ['packages/**/*.js'],
18-
timers: 'fake',
19-
};
3+
const baseConfig = require('./config.base');
4+
5+
module.exports = Object.assign({}, baseConfig);

scripts/jest/setupEnvironment.js

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,5 @@
11
/* eslint-disable */
22

3-
jest.mock('shared/ReactFeatureFlags', () => {
4-
// We can alter flags based on environment here
5-
// (e.g. for CI runs with different flags).
6-
return require.requireActual('shared/ReactFeatureFlags');
7-
});
8-
9-
// Error logging varies between Fiber and Stack;
10-
// Rather than fork dozens of tests, mock the error-logging file by default.
11-
// TODO: direct imports like some-package/src/* are bad. Fix me.
12-
jest.mock('react-reconciler/src/ReactFiberErrorLogger');
13-
143
const NODE_ENV = process.env.NODE_ENV;
154
if (NODE_ENV !== 'development' && NODE_ENV !== 'production') {
165
throw new Error('NODE_ENV must either be set to development or production.');

0 commit comments

Comments
 (0)