Skip to content

Commit b49f88d

Browse files
authored
[expo-cli] unify and remove duplicated jest configuration (expo#2117)
* refactor: simplify and unify all jest config * chore: add missing projects to root jest * refactor: remove package file jest config * refactor(dev-tools): remove extraneous default config override * refactor(dev-server): add roots back to jest config * chore: add test script to root package file
1 parent ff37297 commit b49f88d

File tree

25 files changed

+80
-170
lines changed

25 files changed

+80
-170
lines changed

jest.config.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,19 @@
11
module.exports = {
22
projects: [
3+
require('./packages/babel-preset-cli/jest.config'),
34
require('./packages/config/jest.config'),
5+
require('./packages/configure-splash-screen/jest.config'),
6+
require('./packages/dev-server/jest.config'),
7+
require('./packages/dev-tools/jest.config'),
8+
require('./packages/expo-cli/jest.config'),
49
require('./packages/expo-codemod/jest.config'),
510
require('./packages/json-file/jest.config'),
11+
require('./packages/metro-config/jest.config'),
612
require('./packages/package-manager/jest.config'),
13+
require('./packages/plist/jest.config'),
714
require('./packages/pwa/jest.config'),
815
require('./packages/schemer/jest.config'),
16+
require('./packages/uri-scheme/jest.config'),
917
require('./packages/webpack-config/jest/unit-test-config'),
1018
require('./packages/xdl/jest/unit-test-config'),
1119
],

jest/babel.config.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
module.exports = function (api) {
2+
api.cache(true);
3+
return {
4+
// Only use this when running tests
5+
env: {
6+
test: {
7+
presets: ['../packages/babel-preset-cli'],
8+
},
9+
},
10+
};
11+
};

jest/unit-test-config.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
module.exports = {
2+
testEnvironment: 'node',
3+
testRegex: '/__tests__/.*(test|spec)\\.[jt]sx?$',
4+
transform: {
5+
'^.+\\.[jt]sx?$': ['babel-jest', { configFile: require.resolve('./babel.config.js') }],
6+
},
7+
};

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010
"publish": "echo \"This script is deprecated. Run \\\"node ./scripts/publish.js\\\" instead.\"; exit 1",
1111
"start": "lerna --ignore \"@expo/{dev-tools,next-adapter,electron-adapter}\" --ignore expo-optimize --ignore pod-install --ignore uri-scheme run watch --parallel",
1212
"tsc": "echo 'You are trying to run \"tsc\" in the workspace root. Run it from an individual package instead.' && exit 1",
13-
"lint": "eslint . --ext js,ts"
13+
"lint": "eslint . --ext js,ts",
14+
"test": "jest"
1415
},
1516
"husky": {
1617
"hooks": {
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
const path = require('path');
2+
3+
module.exports = {
4+
preset: '../../jest/unit-test-config',
5+
rootDir: path.resolve(__dirname),
6+
displayName: require('./package').name,
7+
};

packages/config/jest.config.js

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,8 @@
11
const path = require('path');
22

33
module.exports = {
4+
preset: '../../jest/unit-test-config',
45
rootDir: path.resolve(__dirname),
5-
displayName: require('@expo/config/package.json').name,
6-
testRegex: '/__tests__/.*(test|spec)\\.(j|t)sx?$',
7-
moduleNameMapper: {
8-
'^jest/(.*)': path.join(__dirname, '../../jest/$1'),
9-
},
10-
transform: {
11-
'^.+\\.[jt]sx?$': ['babel-jest', { configFile: require.resolve('./babel.config.js') }],
12-
},
13-
testEnvironment: 'node',
14-
resetModules: false,
6+
displayName: require('./package').name,
7+
roots: ['__mocks__', 'src'],
158
};

packages/config/package.json

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,6 @@
1111
"lint": "eslint .",
1212
"test": "jest"
1313
},
14-
"jest": {
15-
"testEnvironment": "node",
16-
"roots": [
17-
"__mocks__",
18-
"src"
19-
],
20-
"moduleFileExtensions": [
21-
"js",
22-
"json"
23-
],
24-
"resetModules": false
25-
},
2614
"repository": {
2715
"type": "git",
2816
"url": "https://github.com/expo/expo-cli.git",
Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,7 @@
11
const path = require('path');
22

33
module.exports = {
4+
preset: '../../jest/unit-test-config',
45
rootDir: path.resolve(__dirname),
5-
displayName: 'configure-splash-screen',
6-
testRegex: '/__tests__/.*(test|spec)\\.(j|t)sx?$',
7-
moduleNameMapper: {
8-
'^jest/(.*)': path.join(__dirname, '../../jest/$1'),
9-
},
10-
transform: {
11-
'^.+\\.[jt]sx?$': ['babel-jest', { configFile: require.resolve('./babel.config.js') }],
12-
},
13-
testEnvironment: 'node',
14-
resetModules: false,
6+
displayName: require('./package').name,
157
};

packages/dev-server/jest.config.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
const path = require('path');
2+
3+
module.exports = {
4+
preset: '../../jest/unit-test-config',
5+
rootDir: path.resolve(__dirname),
6+
displayName: require('./package').name,
7+
roots: ['src'],
8+
};

packages/dev-server/package.json

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,6 @@
1111
"lint": "eslint .",
1212
"test": "jest"
1313
},
14-
"jest": {
15-
"testEnvironment": "node",
16-
"roots": [
17-
"src"
18-
]
19-
},
2014
"repository": {
2115
"type": "git",
2216
"url": "https://github.com/expo/expo-cli.git",

packages/dev-tools/jest.config.js

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,7 @@
11
const path = require('path');
22

33
module.exports = {
4-
rootDir: path.resolve(__dirname, '.'),
5-
displayName: require('@expo/dev-tools/package.json').name,
6-
testRegex: `__(tests|testfixtures)__\/.*(\.|-)(test|spec)\.tsx?$`,
7-
moduleNameMapper: {
8-
'^jest/(.*)': path.join(__dirname, '../../jest/$1'),
9-
},
10-
transform: {
11-
'^.+\\.tsx?$': ['babel-jest', { configFile: require.resolve('./server/babel.config.js') }],
12-
},
13-
testEnvironment: 'node',
14-
resetModules: false,
4+
preset: '../../jest/unit-test-config',
5+
rootDir: path.resolve(__dirname),
6+
displayName: require('./package').name,
157
};

packages/dev-tools/package.json

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,11 @@
1111
"clean": "rimraf .next build",
1212
"prepare": "yarn run clean && yarn run build",
1313
"start": "yarn dev",
14-
"test": "jest --config jest.config.js"
14+
"test": "jest"
1515
},
1616
"files": [
1717
"build"
1818
],
19-
"jest": {
20-
"testEnvironment": "node"
21-
},
2219
"dependencies": {
2320
"@expo/config": "3.2.6",
2421
"base64url": "3.0.1",

packages/expo-cli/jest.config.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
const path = require('path');
2+
3+
module.exports = {
4+
preset: '../../jest/unit-test-config',
5+
rootDir: path.resolve(__dirname),
6+
displayName: require('./package').name,
7+
roots: ['__mocks__', 'src'],
8+
};

packages/expo-cli/package.json

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -18,19 +18,6 @@
1818
"test": "jest",
1919
"test:watch": "jest --watch"
2020
},
21-
"jest": {
22-
"testEnvironment": "node",
23-
"roots": [
24-
"__mocks__",
25-
"src"
26-
],
27-
"moduleFileExtensions": [
28-
"js",
29-
"ts",
30-
"json"
31-
],
32-
"resetModules": false
33-
},
3421
"bin": {
3522
"expo": "./bin/expo.js",
3623
"expo-cli": "./bin/expo.js"

packages/expo-codemod/jest.config.js

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,7 @@
11
const path = require('path');
22

33
module.exports = {
4+
preset: '../../jest/unit-test-config',
45
rootDir: path.resolve(__dirname),
5-
displayName: require('expo-codemod/package.json').name,
6-
testRegex: '/__(tests|testfixtures)__/.*(test|spec)\\.(j|t)sx?$',
7-
moduleNameMapper: {
8-
'^jest/(.*)': path.join(__dirname, '../../jest/$1'),
9-
},
10-
transform: {
11-
'^.+\\.[jt]sx?$': ['babel-jest', { configFile: require.resolve('./babel.config.js') }],
12-
},
13-
testEnvironment: 'node',
14-
resetModules: false,
6+
displayName: require('./package').name,
157
};

packages/image-utils/package.json

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,6 @@
2525
"files": [
2626
"build"
2727
],
28-
"jest": {
29-
"testEnvironment": "node"
30-
},
3128
"dependencies": {
3229
"@expo/spawn-async": "1.5.0",
3330
"fs-extra": "^9.0.0",

packages/json-file/jest.config.js

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,7 @@
11
const path = require('path');
22

33
module.exports = {
4+
preset: '../../jest/unit-test-config',
45
rootDir: path.resolve(__dirname),
5-
displayName: require('@expo/json-file/package.json').name,
6-
testRegex: '/__tests__/.*(test|spec)\\.(j|t)sx?$',
7-
moduleNameMapper: {
8-
'^jest/(.*)': path.join(__dirname, '../../jest/$1'),
9-
},
10-
transform: {
11-
'^.+\\.[jt]sx?$': ['babel-jest', { configFile: require.resolve('./babel.config.js') }],
12-
},
13-
testEnvironment: 'node',
14-
resetModules: false,
6+
displayName: require('./package').name,
157
};

packages/metro-config/jest.config.js

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,7 @@
11
const path = require('path');
22

33
module.exports = {
4+
preset: '../../jest/unit-test-config',
45
rootDir: path.resolve(__dirname),
5-
displayName: require('@expo/metro-config/package.json').name,
6-
testRegex: '/__tests__/.*(test|spec)\\.(j|t)sx?$',
7-
moduleNameMapper: {
8-
'^jest/(.*)': path.join(__dirname, '../../jest/$1'),
9-
},
10-
transform: {
11-
'^.+\\.[jt]sx?$': ['babel-jest', { configFile: require.resolve('./babel.config.js') }],
12-
},
13-
testEnvironment: 'node',
14-
resetModules: false,
6+
displayName: require('./package').name,
157
};
Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,7 @@
11
const path = require('path');
22

33
module.exports = {
4+
preset: '../../jest/unit-test-config',
45
rootDir: path.resolve(__dirname),
5-
displayName: require('@expo/package-manager/package.json').name,
6-
testRegex: '/__tests__/.*(test|spec)\\.(j|t)sx?$',
7-
moduleNameMapper: {
8-
'^jest/(.*)': path.join(__dirname, '../../jest/$1'),
9-
},
10-
transform: {
11-
'^.+\\.[jt]sx?$': ['babel-jest', { configFile: require.resolve('./babel.config.js') }],
12-
},
13-
testEnvironment: 'node',
14-
resetModules: false,
6+
displayName: require('./package').name,
157
};

packages/plist/jest.config.js

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,7 @@
11
const path = require('path');
22

33
module.exports = {
4+
preset: '../../jest/unit-test-config',
45
rootDir: path.resolve(__dirname),
5-
displayName: require('@expo/plist/package.json').name,
6-
testRegex: '/__tests__/.*(test|spec)\\.(j|t)sx?$',
7-
moduleNameMapper: {
8-
'^jest/(.*)': path.join(__dirname, '../../jest/$1'),
9-
},
10-
transform: {
11-
'^.+\\.[jt]sx?$': ['babel-jest', { configFile: require.resolve('./babel.config.js') }],
12-
},
13-
testEnvironment: 'node',
14-
resetModules: false,
6+
displayName: require('./package').name,
157
};

packages/pwa/jest.config.js

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,7 @@
11
const path = require('path');
22

33
module.exports = {
4+
preset: '../../jest/unit-test-config',
45
rootDir: path.resolve(__dirname),
5-
displayName: require('./package.json').name,
6-
testRegex: '/__tests__/.*(test|spec)\\.(j|t)sx?$',
7-
moduleNameMapper: {
8-
'^jest/(.*)': path.join(__dirname, '../../jest/$1'),
9-
},
10-
transform: {
11-
'^.+\\.[jt]sx?$': ['babel-jest', { configFile: require.resolve('./babel.config.js') }],
12-
},
13-
testEnvironment: 'node',
14-
resetModules: false,
6+
displayName: require('./package').name,
157
};

packages/schemer/jest.config.js

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,7 @@
11
const path = require('path');
22

33
module.exports = {
4+
preset: '../../jest/unit-test-config',
45
rootDir: path.resolve(__dirname),
5-
displayName: require('@expo/schemer/package.json').name,
6-
testRegex: '/__tests__/.*(test|spec)\\.(j|t)sx?$',
7-
moduleNameMapper: {
8-
'^jest/(.*)': path.join(__dirname, '../../jest/$1'),
9-
},
10-
transform: {
11-
'^.+\\.[jt]sx?$': ['babel-jest', { configFile: require.resolve('./babel.config.js') }],
12-
},
13-
testEnvironment: 'node',
14-
resetModules: false,
6+
displayName: require('./package').name,
157
};

packages/uri-scheme/jest.config.js

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,7 @@
11
const path = require('path');
22

33
module.exports = {
4+
preset: '../../jest/unit-test-config',
45
rootDir: path.resolve(__dirname),
5-
displayName: require('uri-scheme/package.json').name,
6-
testRegex: '/__tests__/.*(test|spec)\\.(j|t)sx?$',
7-
moduleNameMapper: {
8-
'^jest/(.*)': path.join(__dirname, '../../jest/$1'),
9-
},
10-
transform: {
11-
'^.+\\.[jt]sx?$': ['babel-jest', { configFile: require.resolve('./babel.config.js') }],
12-
},
13-
testEnvironment: 'node',
14-
resetModules: false,
6+
displayName: require('./package').name,
157
};
Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,8 @@
11
const path = require('path');
22

33
module.exports = {
4+
preset: '../../jest/unit-test-config',
45
rootDir: path.resolve(__dirname, '..'),
6+
displayName: require('../package').name,
57
roots: ['src'],
6-
displayName: require('@expo/webpack-config/package.json').name,
7-
testRegex: '/__(tests|testfixtures)__/.*(test|spec)\\.(j|t)sx?$',
8-
moduleNameMapper: {
9-
'^jest/(.*)': path.join(__dirname, '../../../jest/$1'),
10-
},
11-
transform: {
12-
'^.+\\.[jt]sx?$': ['babel-jest', { configFile: require.resolve('../babel.config.js') }],
13-
},
14-
testEnvironment: 'node',
15-
resetModules: false,
168
};

packages/xdl/jest/unit-test-config.js

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,9 @@
11
const path = require('path');
22

33
module.exports = {
4+
preset: '../../jest/unit-test-config',
45
rootDir: path.resolve(__dirname, '..'),
6+
displayName: require('../package.json').name,
57
roots: ['__mocks__', 'src'],
6-
displayName: require('@expo/xdl/package.json').name,
7-
testRegex: '/__(tests|testfixtures)__/.*(test|spec)\\.(j|t)sx?$',
8-
moduleNameMapper: {
9-
'^jest/(.*)': path.join(__dirname, '../../../jest/$1'),
10-
},
11-
transform: {
12-
'^.+\\.[jt]sx?$': ['babel-jest', { configFile: require.resolve('../babel.config.js') }],
13-
},
14-
testEnvironment: 'node',
15-
resetModules: false,
168
setupFiles: ['<rootDir>/jest/fs-mock-setup.js'],
179
};

0 commit comments

Comments
 (0)