forked from jestjs/jest
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest_utils.js
129 lines (118 loc) · 3.21 KB
/
test_utils.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
/**
* Copyright (c) 2014-present, Facebook, Inc. All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*
* @flow
*/
'use strict';
import type {GlobalConfig, ProjectConfig} from 'types/Config';
const DEFAULT_GLOBAL_CONFIG: GlobalConfig = {
bail: false,
changedFilesWithAncestor: false,
collectCoverage: false,
collectCoverageFrom: [],
collectCoverageOnlyFrom: null,
coverageDirectory: 'coverage',
coverageReporters: [],
coverageThreshold: {global: {}},
expand: false,
findRelatedTests: false,
forceExit: false,
json: false,
lastCommit: false,
listTests: false,
logHeapUsage: false,
mapCoverage: false,
maxWorkers: 2,
noSCM: null,
noStackTrace: false,
nonFlagArgs: [],
notify: false,
onlyChanged: false,
outputFile: null,
projects: [],
replname: null,
reporters: [],
rootDir: '/test_root_dir/',
silent: false,
testFailureExitCode: 1,
testNamePattern: '',
testPathPattern: '',
testResultsProcessor: null,
updateSnapshot: 'none',
useStderr: false,
verbose: false,
watch: false,
watchAll: false,
watchman: false,
};
const DEFAULT_PROJECT_CONFIG: ProjectConfig = {
automock: false,
browser: false,
cache: false,
cacheDirectory: '/test_cache_dir/',
clearMocks: false,
coveragePathIgnorePatterns: [],
globals: {},
haste: {
providesModuleNodeModules: [],
},
moduleDirectories: [],
moduleFileExtensions: ['js'],
moduleLoader: '/test_module_loader_path',
moduleNameMapper: [],
modulePathIgnorePatterns: [],
modulePaths: [],
name: 'test_name',
resetMocks: false,
resetModules: false,
resolver: null,
rootDir: '/test_root_dir/',
roots: [],
runner: 'jest-runner',
setupFiles: [],
setupTestFrameworkScriptFile: null,
skipNodeResolution: false,
snapshotSerializers: [],
testEnvironment: 'node',
testMatch: [],
testPathIgnorePatterns: [],
testRegex: '.test.js$',
testRunner: 'jest-jasmine2',
testURL: '',
timers: 'real',
transform: [],
transformIgnorePatterns: [],
unmockedModulePathPatterns: null,
};
const makeGlobalConfig = (overrides: Object = {}): GlobalConfig => {
const overridesKeys = new Set(Object.keys(overrides));
Object.keys(DEFAULT_GLOBAL_CONFIG).forEach(key => overridesKeys.delete(key));
if (overridesKeys.size > 0) {
throw new Error(`
Properties that are not part of GlobalConfig type were passed:
${JSON.stringify(Array.from(overridesKeys))}
`);
}
// $FlowFixMe Object.assign
return Object.assign({}, DEFAULT_GLOBAL_CONFIG, overrides);
};
const makeProjectConfig = (overrides: Object = {}): ProjectConfig => {
const overridesKeys = new Set(Object.keys(overrides));
Object.keys(DEFAULT_PROJECT_CONFIG).forEach(key => overridesKeys.delete(key));
if (overridesKeys.size > 0) {
throw new Error(`
Properties that are not part of ProjectConfig type were passed:
${JSON.stringify(Array.from(overridesKeys))}
`);
}
// $FlowFixMe Object.assign
return Object.assign({}, DEFAULT_PROJECT_CONFIG, overrides);
};
module.exports = {
makeGlobalConfig,
makeProjectConfig,
};