/
testRunner.test.js
126 lines (117 loc) · 3.14 KB
/
testRunner.test.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
/**
* 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 {TestWatcher} from '@jest/core';
import TestRunner from '../index';
let mockWorkerFarm;
jest.mock('jest-worker', () =>
jest.fn(
worker =>
(mockWorkerFarm = {
end: jest.fn(),
getStderr: jest.fn(),
getStdout: jest.fn(),
worker: jest.fn((data, callback) => require(worker)(data, callback)),
}),
),
);
jest.mock('../testWorker', () => {});
test('injects the serializable module map into each worker in watch mode', () => {
const globalConfig = {maxWorkers: 2, watch: true};
const config = {rootDir: '/path/'};
const serializableModuleMap = jest.fn();
const runContext = {};
const context = {
config,
moduleMap: {toJSON: () => serializableModuleMap},
};
return new TestRunner(globalConfig)
.runTests(
[{context, path: './file.test.js'}, {context, path: './file2.test.js'}],
new TestWatcher({isWatchMode: globalConfig.watch}),
() => {},
() => {},
() => {},
{serial: false},
)
.then(() => {
expect(mockWorkerFarm.worker.mock.calls).toEqual([
[
{
config,
context: runContext,
globalConfig,
path: './file.test.js',
serializableModuleMap,
},
],
[
{
config,
context: runContext,
globalConfig,
path: './file2.test.js',
serializableModuleMap,
},
],
]);
});
});
test('does not inject the serializable module map in serial mode', () => {
const globalConfig = {maxWorkers: 1, watch: false};
const config = {rootDir: '/path/'};
const context = {config};
const runContext = {};
return new TestRunner(globalConfig, runContext)
.runTests(
[{context, path: './file.test.js'}, {context, path: './file2.test.js'}],
new TestWatcher({isWatchMode: globalConfig.watch}),
() => {},
() => {},
() => {},
{serial: false},
)
.then(() => {
expect(mockWorkerFarm.worker.mock.calls).toEqual([
[
{
config,
context: runContext,
globalConfig,
path: './file.test.js',
serializableModuleMap: null,
},
],
[
{
config,
context: runContext,
globalConfig,
path: './file2.test.js',
serializableModuleMap: null,
},
],
]);
});
});
test('assign process.env.JEST_WORKER_ID = 1 when in runInBand mode', () => {
const globalConfig = {maxWorkers: 1, watch: false};
const config = {rootDir: '/path/'};
const context = {config};
return new TestRunner(globalConfig)
.runTests(
[{context, path: './file.test.js'}],
new TestWatcher({isWatchMode: globalConfig.watch}),
() => {},
() => {},
() => {},
{serial: true},
)
.then(() => {
expect(process.env.JEST_WORKER_ID).toBe('1');
});
});