@eggjs/mock 7.0.0-beta.20 → 7.0.0-beta.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/dist/app/extend/agent.d.ts +33 -38
  2. package/dist/app/extend/agent.js +46 -5
  3. package/dist/app/extend/application.d.ts +171 -5
  4. package/dist/app/extend/application.js +445 -9
  5. package/dist/app/middleware/cluster_app_mock.d.ts +2 -5
  6. package/dist/app/middleware/cluster_app_mock.js +99 -96
  7. package/dist/app.d.ts +5 -9
  8. package/dist/app.js +18 -17
  9. package/dist/bootstrap.d.ts +5 -15
  10. package/dist/bootstrap.js +13 -29
  11. package/dist/index.d.ts +77 -10
  12. package/dist/index.js +90 -22
  13. package/dist/inject_mocha.d.ts +1 -1
  14. package/dist/inject_mocha.js +35 -23
  15. package/dist/lib/agent_handler.d.ts +3 -10
  16. package/dist/lib/agent_handler.js +24 -9
  17. package/dist/lib/app.d.ts +3 -6
  18. package/dist/lib/app.js +291 -14
  19. package/dist/lib/app_handler.d.ts +5 -6
  20. package/dist/lib/app_handler.js +69 -21
  21. package/dist/lib/cluster.d.ts +121 -6
  22. package/dist/lib/cluster.js +340 -7
  23. package/dist/lib/context.d.ts +1 -4
  24. package/dist/lib/context.js +11 -3
  25. package/dist/lib/format_options.d.ts +2 -7
  26. package/dist/lib/format_options.js +93 -4
  27. package/dist/lib/inject_context.d.ts +1 -4
  28. package/dist/lib/inject_context.js +126 -22
  29. package/dist/lib/mock_agent.d.ts +4 -8
  30. package/dist/lib/mock_agent.js +45 -3
  31. package/dist/lib/mock_custom_loader.d.ts +1 -4
  32. package/dist/lib/mock_custom_loader.js +34 -3
  33. package/dist/lib/mock_http_server.d.ts +2 -6
  34. package/dist/lib/mock_http_server.js +18 -3
  35. package/dist/lib/mock_httpclient.d.ts +36 -2
  36. package/dist/lib/mock_httpclient.js +146 -4
  37. package/dist/lib/parallel/agent.d.ts +20 -5
  38. package/dist/lib/parallel/agent.js +117 -8
  39. package/dist/lib/parallel/app.d.ts +19 -24
  40. package/dist/lib/parallel/app.js +111 -9
  41. package/dist/lib/parallel/util.d.ts +3 -2
  42. package/dist/lib/parallel/util.js +66 -4
  43. package/dist/lib/prerequire.d.ts +1 -1
  44. package/dist/lib/prerequire.js +25 -1
  45. package/dist/lib/request_call_function.d.ts +1 -1
  46. package/dist/lib/request_call_function.js +47 -34
  47. package/dist/lib/restore.d.ts +1 -2
  48. package/dist/lib/restore.js +13 -9
  49. package/dist/lib/start-cluster.d.ts +2 -1
  50. package/dist/lib/start-cluster.js +14 -15
  51. package/dist/lib/supertest.d.ts +11 -2
  52. package/dist/lib/supertest.js +40 -5
  53. package/dist/lib/tmp/empty.d.ts +1 -1
  54. package/dist/lib/tmp/empty.js +2 -1
  55. package/dist/lib/types.d.ts +72 -3
  56. package/dist/lib/types.js +2 -3
  57. package/dist/lib/utils.d.ts +8 -11
  58. package/dist/lib/utils.js +69 -3
  59. package/dist/register.d.ts +7 -11
  60. package/dist/register.js +41 -55
  61. package/package.json +7 -7
  62. package/dist/agent-BKYkjoCx.js +0 -111
  63. package/dist/agent-CHCe8tnW.d.ts +0 -24
  64. package/dist/agent-DZ_fHoxJ.js +0 -48
  65. package/dist/agent_handler-DeUtoRVT.js +0 -26
  66. package/dist/app-6Bn3F5Uw.js +0 -252
  67. package/dist/app-CoypamK1.js +0 -99
  68. package/dist/app-l47a-gqT.d.ts +0 -7
  69. package/dist/app_handler-CkiK6fyC.js +0 -55
  70. package/dist/app_handler-Gp5J9X-v.d.ts +0 -9
  71. package/dist/application-BPpvw5dg.d.ts +0 -175
  72. package/dist/application-LrKwuOKn.js +0 -385
  73. package/dist/cluster-CA_hr9eV.js +0 -283
  74. package/dist/cluster-RTfUwmUd.d.ts +0 -126
  75. package/dist/context-BIduDy1M.js +0 -10
  76. package/dist/format_options-LRnReKde.js +0 -65
  77. package/dist/index-BtBMDZg8.d.ts +0 -78
  78. package/dist/inject_context-BxpcF-ds.js +0 -106
  79. package/dist/inject_mocha-BVf8v6El.js +0 -38
  80. package/dist/inject_mocha-Daf1Aj8M.d.ts +0 -1
  81. package/dist/mock_agent-CxT7Q0_N.js +0 -45
  82. package/dist/mock_custom_loader-f_tHRojG.js +0 -35
  83. package/dist/mock_http_server-De0r07gr.js +0 -17
  84. package/dist/mock_httpclient-1EgQkMxi.d.ts +0 -40
  85. package/dist/mock_httpclient-B6UVI7GS.js +0 -110
  86. package/dist/restore-BL0cE0KG.d.ts +0 -4
  87. package/dist/restore-CVQYXquh.js +0 -16
  88. package/dist/src-D22EjdGo.js +0 -47
  89. package/dist/supertest-BIds28yL.d.ts +0 -16
  90. package/dist/supertest-Cg412Los.js +0 -39
  91. package/dist/types-CPNMyF89.js +0 -1
  92. package/dist/types-CjZ-JeCo.d.ts +0 -75
  93. package/dist/typings/index.d.ts +0 -1
  94. package/dist/util-1xYBaaoh.d.ts +0 -6
  95. package/dist/util-BpppqTXv.js +0 -59
  96. package/dist/utils-MhP_Krx1.js +0 -40
@@ -1,7 +1,340 @@
1
- import "../mock_http_server-De0r07gr.js";
2
- import "../utils-MhP_Krx1.js";
3
- import "../supertest-Cg412Los.js";
4
- import "../format_options-LRnReKde.js";
5
- import { ClusterApplication, createCluster, restore } from "../cluster-CA_hr9eV.js";
6
-
7
- export { ClusterApplication, createCluster, restore };
1
+ import { debuglog } from 'node:util';
2
+ import path from 'node:path';
3
+ import os from 'node:os';
4
+ import childProcess from 'node:child_process';
5
+ import { once } from 'node:events';
6
+ import { existsSync } from 'node:fs';
7
+ import { Coffee } from 'coffee';
8
+ import { Ready } from 'get-ready';
9
+ import { request as supertestRequest } from "./supertest.js";
10
+ import { sleep, rimrafSync } from "./utils.js";
11
+ import { formatOptions } from "./format_options.js";
12
+ const debug = debuglog('egg/mock/lib/cluster');
13
+ const clusters = new Map();
14
+ globalThis.eggMockMasterPort = 17000 + (process.pid % 1000);
15
+ let serverBin = path.join(import.meta.dirname, 'start-cluster.js');
16
+ if (!existsSync(serverBin)) {
17
+ serverBin = path.join(import.meta.dirname, 'start-cluster.ts');
18
+ }
19
+ let requestCallFunctionFile = path.join(import.meta.dirname, 'request_call_function.js');
20
+ if (!existsSync(requestCallFunctionFile)) {
21
+ requestCallFunctionFile = path.join(import.meta.dirname, 'request_call_function.ts');
22
+ }
23
+ /**
24
+ * A cluster version of egg.Application, you can test with supertest
25
+ * @example
26
+ * ```js
27
+ * const mm = require('mm');
28
+ * const request = require('supertest');
29
+ *
30
+ * describe('ClusterApplication', () => {
31
+ * let app;
32
+ * before(function (done) {
33
+ * app = mm.cluster({ baseDir });
34
+ * app.ready(done);
35
+ * });
36
+ *
37
+ * after(function () {
38
+ * app.close();
39
+ * });
40
+ *
41
+ * it('should 200', function (done) {
42
+ * request(app.callback())
43
+ * .get('/')
44
+ * .expect(200, done);
45
+ * });
46
+ * });
47
+ */
48
+ export class ClusterApplication extends Coffee {
49
+ options;
50
+ port;
51
+ baseDir;
52
+ closed;
53
+ _address;
54
+ /**
55
+ * @class
56
+ * @param {Object} options
57
+ * - {String} baseDir - The directory of the application
58
+ * - {Object} plugins - Custom you plugins
59
+ * - {String} framework - The directory of the egg framework
60
+ * - {Boolean} [cache=true] - Cache application based on baseDir
61
+ * - {Boolean} [coverage=true] - Switch on process coverage, but it'll be slower
62
+ * - {Boolean} [clean=true] - Remove $baseDir/logs
63
+ * - {Object} [opt] - opt pass to coffee, such as { execArgv: ['--debug'] }
64
+ * ```
65
+ */
66
+ constructor(options) {
67
+ const opt = options.opt;
68
+ delete options.opt;
69
+ // incremental port
70
+ options.port = options.port ?? ++globalThis.eggMockMasterPort;
71
+ // Set 1 worker when test
72
+ if (!options.workers) {
73
+ options.workers = 1;
74
+ }
75
+ const args = [JSON.stringify(options)];
76
+ debug('fork %s, args: %s, opt: %j', serverBin, args.join(' '), opt);
77
+ super({
78
+ method: 'fork',
79
+ cmd: serverBin,
80
+ args,
81
+ opt,
82
+ });
83
+ Ready.mixin(this);
84
+ this.port = options.port;
85
+ this.baseDir = options.baseDir;
86
+ // print stdout and stderr when DEBUG, otherwise stderr.
87
+ this.debug(process.env.DEBUG ? 0 : 2);
88
+ // disable coverage
89
+ if (options.coverage === false) {
90
+ this.coverage(false);
91
+ }
92
+ process.nextTick(() => {
93
+ this.proc.on('message', (msg) => {
94
+ // 'egg-ready' and { action: 'egg-ready' }
95
+ const action = msg && msg.action ? msg.action : msg;
96
+ switch (action) {
97
+ case 'egg-ready':
98
+ // data: { port: 17703, address: 'http://127.0.0.1:17703', protocol: 'http' }
99
+ debug('on message egg-ready %o', msg);
100
+ this._address = msg.data.address;
101
+ this.emit('close', 0);
102
+ break;
103
+ case 'app-worker-died':
104
+ case 'agent-worker-died':
105
+ this.emit('close', 1);
106
+ break;
107
+ default:
108
+ // ignore it
109
+ break;
110
+ }
111
+ });
112
+ });
113
+ this.end(() => this.ready(true));
114
+ }
115
+ /**
116
+ * the process that forked
117
+ * @member {ChildProcess}
118
+ */
119
+ get process() {
120
+ return this.proc;
121
+ }
122
+ /**
123
+ * Compatible API for supertest
124
+ */
125
+ callback() {
126
+ return this;
127
+ }
128
+ /**
129
+ * Compatible API for supertest
130
+ * @member {String} url
131
+ * @private
132
+ */
133
+ get url() {
134
+ if (this._address) {
135
+ return this._address;
136
+ }
137
+ return 'http://127.0.0.1:' + this.port;
138
+ }
139
+ /**
140
+ * Compatible API for supertest
141
+ */
142
+ address() {
143
+ return {
144
+ port: this.port,
145
+ address: this._address,
146
+ };
147
+ }
148
+ /**
149
+ * Compatible API for supertest
150
+ */
151
+ listen() {
152
+ return this;
153
+ }
154
+ /**
155
+ * kill the process
156
+ */
157
+ async close() {
158
+ this.closed = true;
159
+ const proc = this.proc;
160
+ const baseDir = this.baseDir;
161
+ if (proc?.connected) {
162
+ proc.kill('SIGTERM');
163
+ await once(proc, 'exit');
164
+ }
165
+ clusters.delete(baseDir);
166
+ debug('delete cluster cache %s, remain %s', baseDir, [...clusters.keys()]);
167
+ if (os.platform() === 'win32') {
168
+ await sleep(1000);
169
+ }
170
+ }
171
+ get isClosed() {
172
+ return this.closed;
173
+ }
174
+ // mock app.router.pathFor(name) api
175
+ get router() {
176
+ const self = this;
177
+ return {
178
+ pathFor(url) {
179
+ return self._callFunctionOnAppWorker('pathFor', [url], 'router', true);
180
+ },
181
+ };
182
+ }
183
+ /**
184
+ * get app[property] value in app worker
185
+ */
186
+ getAppInstanceProperty(property) {
187
+ return this._callFunctionOnAppWorker('__getter__', [], property, true);
188
+ }
189
+ /**
190
+ * collection logger message, then can be use on `expectLog()`
191
+ * it's different from `app.expectLog()`, only support string params.
192
+ *
193
+ * @param {String} [logger] - logger instance name, default is `logger`
194
+ * @function ClusterApplication#expectLog
195
+ */
196
+ mockLog(logger) {
197
+ logger = logger ?? 'logger';
198
+ this._callFunctionOnAppWorker('mockLog', [logger], null, true);
199
+ }
200
+ /**
201
+ * expect str in the logger
202
+ * it's different from `app.expectLog()`, only support string params.
203
+ *
204
+ * @param {String} str - test str
205
+ * @param {String} [logger] - logger instance name, default is `logger`
206
+ * @function ClusterApplication#expectLog
207
+ */
208
+ expectLog(str, logger) {
209
+ logger = logger ?? 'logger';
210
+ this._callFunctionOnAppWorker('expectLog', [str, logger], null, true);
211
+ }
212
+ /**
213
+ * not expect str in the logger
214
+ * it's different from `app.notExpectLog()`, only support string params.
215
+ *
216
+ * @param {String} str - test str
217
+ * @param {String} [logger] - logger instance name, default is `logger`
218
+ * @function ClusterApplication#notExpectLog
219
+ */
220
+ notExpectLog(str, logger) {
221
+ logger = logger ?? 'logger';
222
+ this._callFunctionOnAppWorker('notExpectLog', [str, logger], null, true);
223
+ }
224
+ httpRequest() {
225
+ return supertestRequest(this);
226
+ }
227
+ _callFunctionOnAppWorker(method, args = [], property = undefined, needResult = false) {
228
+ for (let i = 0; i < args.length; i++) {
229
+ const arg = args[i];
230
+ if (typeof arg === 'function') {
231
+ args[i] = {
232
+ __egg_mock_type: 'function',
233
+ value: arg.toString(),
234
+ };
235
+ }
236
+ else if (arg instanceof Error) {
237
+ const errObject = {
238
+ __egg_mock_type: 'error',
239
+ name: arg.name,
240
+ message: arg.message,
241
+ stack: arg.stack,
242
+ };
243
+ for (const key in arg) {
244
+ if (key !== 'name' && key !== 'message' && key !== 'stack') {
245
+ errObject[key] = arg[key];
246
+ }
247
+ }
248
+ args[i] = errObject;
249
+ }
250
+ }
251
+ const data = {
252
+ port: this.port,
253
+ method,
254
+ args,
255
+ property,
256
+ needResult,
257
+ };
258
+ const child = childProcess.spawnSync(process.execPath, [requestCallFunctionFile, JSON.stringify(data)], {
259
+ stdio: 'pipe',
260
+ });
261
+ // if (child.stderr && child.stderr.length > 0) {
262
+ // console.error(child.stderr.toString());
263
+ // }
264
+ let result;
265
+ if (child.stdout && child.stdout.length > 0) {
266
+ if (needResult) {
267
+ result = JSON.parse(child.stdout.toString());
268
+ }
269
+ else {
270
+ console.error(child.stdout.toString());
271
+ }
272
+ }
273
+ if (child.status !== 0) {
274
+ throw new Error(child.stderr.toString());
275
+ }
276
+ if (child.error) {
277
+ throw child.error;
278
+ }
279
+ return result;
280
+ }
281
+ }
282
+ export function createCluster(initOptions) {
283
+ const options = formatOptions(initOptions);
284
+ if (options.cache && clusters.has(options.baseDir)) {
285
+ const clusterApp = clusters.get(options.baseDir);
286
+ // return cache when it hasn't been killed
287
+ if (!clusterApp.isClosed) {
288
+ return clusterApp;
289
+ }
290
+ // delete the cache when it's closed
291
+ clusters.delete(options.baseDir);
292
+ }
293
+ if (options.clean !== false) {
294
+ const logDir = path.join(options.baseDir, 'logs');
295
+ try {
296
+ rimrafSync(logDir);
297
+ }
298
+ catch (err) {
299
+ console.error(`remove log dir ${logDir} failed: ${err.stack}`);
300
+ }
301
+ const runDir = path.join(options.baseDir, 'run');
302
+ try {
303
+ rimrafSync(runDir);
304
+ }
305
+ catch (err) {
306
+ console.error(`remove run dir ${runDir} failed: ${err.stack}`);
307
+ }
308
+ }
309
+ let clusterApp = new ClusterApplication(options);
310
+ clusterApp = new Proxy(clusterApp, {
311
+ get(target, prop) {
312
+ debug('proxy handler.get %s', prop);
313
+ // proxy mockXXX function to app worker
314
+ const method = prop;
315
+ if (typeof method === 'string' && /^mock\w+$/.test(method) && target[method] === undefined) {
316
+ return function mockProxy(...args) {
317
+ return target._callFunctionOnAppWorker(method, args, null, true);
318
+ };
319
+ }
320
+ return target[prop];
321
+ },
322
+ });
323
+ clusters.set(options.baseDir, clusterApp);
324
+ return clusterApp;
325
+ }
326
+ // export to let mm.restore() worked
327
+ export async function restore() {
328
+ for (const clusterApp of clusters.values()) {
329
+ // will proxy to app.mockRestore()
330
+ await clusterApp.mockRestore();
331
+ }
332
+ }
333
+ // ensure to close App process on test exit.
334
+ process.on('exit', () => {
335
+ for (const clusterApp of clusters.values()) {
336
+ debug('on exit close clusterApp, port: %s', clusterApp.port);
337
+ clusterApp.close();
338
+ }
339
+ });
340
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2x1c3Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY2x1c3Rlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUM3QixPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDekIsT0FBTyxZQUFZLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNuQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRXJDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDaEMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVsQyxPQUFPLEVBQUUsT0FBTyxJQUFJLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBSXBELE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0FBRS9DLE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFLM0IsVUFBVSxDQUFDLGlCQUFpQixHQUFHLEtBQUssR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFFNUQsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0FBQ25FLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztJQUMzQixTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFN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
@@ -1,4 +1 @@
1
- //#region src/lib/context.d.ts
2
- declare const context: any;
3
- //#endregion
4
- export { context };
1
+ export declare const context: any;
@@ -1,3 +1,11 @@
1
- import { context } from "../context-BIduDy1M.js";
2
-
3
- export { context };
1
+ export const context = {
2
+ runInBackground(scope) {
3
+ const taskName = scope._name || scope.name;
4
+ if (taskName) {
5
+ scope._name = taskName;
6
+ }
7
+ const promise = this._runInBackground(scope);
8
+ this.app._backgroundTasks.push(promise);
9
+ },
10
+ };
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUc7SUFDckIsZUFBZSxDQUFDLEtBQVU7UUFDeEIsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQzNDLElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixLQUFLLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQztRQUN6QixDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFDLENBQUM7Q0FDSyxDQUFDIn0=
@@ -1,10 +1,5 @@
1
- import "../mock_httpclient-1EgQkMxi.js";
2
- import { MockApplicationOptions, MockOptions } from "../types-CjZ-JeCo.js";
3
-
4
- //#region src/lib/format_options.d.ts
1
+ import type { MockOptions, MockApplicationOptions } from './types.ts';
5
2
  /**
6
3
  * format the options
7
4
  */
8
- declare function formatOptions(initOptions?: MockOptions): MockApplicationOptions;
9
- //#endregion
10
- export { formatOptions };
5
+ export declare function formatOptions(initOptions?: MockOptions): MockApplicationOptions;
@@ -1,4 +1,93 @@
1
- import "../utils-MhP_Krx1.js";
2
- import { formatOptions } from "../format_options-LRnReKde.js";
3
-
4
- export { formatOptions };
1
+ import { debuglog } from 'node:util';
2
+ import path from 'node:path';
3
+ import { mm, isMocked } from 'mm';
4
+ import { getFrameworkPath } from '@eggjs/utils';
5
+ import { readJSONSync } from 'utility';
6
+ import { getSourceDirname } from "./utils.js";
7
+ const debug = debuglog('egg/mock/lib/format_options');
8
+ /**
9
+ * format the options
10
+ */
11
+ export function formatOptions(initOptions) {
12
+ const options = {
13
+ baseDir: process.cwd(),
14
+ cache: true,
15
+ coverage: true,
16
+ clean: true,
17
+ ...initOptions,
18
+ };
19
+ // relative path to test/fixtures
20
+ // ```js
21
+ // formatOptions({ baseDir: 'app' }); // baseDir => $PWD/test/fixtures/app
22
+ // ```
23
+ if (!path.isAbsolute(options.baseDir)) {
24
+ options.baseDir = path.join(process.cwd(), 'test/fixtures', options.baseDir);
25
+ }
26
+ let framework = initOptions?.framework ?? initOptions?.customEgg;
27
+ // test for framework
28
+ if (framework === true) {
29
+ framework = process.cwd();
30
+ // disable plugin test when framework test
31
+ options.plugin = false;
32
+ }
33
+ else {
34
+ if (!framework) {
35
+ framework = '';
36
+ }
37
+ // it will throw when framework is not found
38
+ framework = getFrameworkPath({ framework, baseDir: options.baseDir });
39
+ }
40
+ options.framework = options.customEgg = framework;
41
+ const plugins = (options.plugins = options.plugins || {});
42
+ // add self as a plugin
43
+ let pluginPath = path.join(getSourceDirname(), '..');
44
+ // for dist directory
45
+ // convert `/eggjs/mock/dist` to `/eggjs/mock`
46
+ if (pluginPath.endsWith('/dist') || pluginPath.endsWith('\\dist')) {
47
+ pluginPath = path.join(pluginPath, '..');
48
+ }
49
+ plugins['egg-mock'] = {
50
+ enable: true,
51
+ path: pluginPath,
52
+ };
53
+ // test for plugin
54
+ if (options.plugin !== false) {
55
+ // add self to plugin list
56
+ const pluginPath = process.cwd();
57
+ const pkgPath = path.join(pluginPath, 'package.json');
58
+ const pluginName = getPluginName(pkgPath);
59
+ if (options.plugin && !pluginName) {
60
+ throw new Error(`should set "eggPlugin" property in ${pkgPath}`);
61
+ }
62
+ if (pluginName) {
63
+ plugins[pluginName] = {
64
+ enable: true,
65
+ path: pluginPath,
66
+ };
67
+ }
68
+ }
69
+ // mock HOME as baseDir, but ignore if it has been mocked
70
+ const env = process.env.EGG_SERVER_ENV;
71
+ if (!isMocked(process.env, 'HOME') && (env === 'default' || env === 'test' || env === 'prod')) {
72
+ mm(process.env, 'HOME', options.baseDir);
73
+ }
74
+ // disable cache after call mm.env(),
75
+ // otherwise it will use cache and won't load again.
76
+ if (process.env.EGG_MOCK_SERVER_ENV) {
77
+ options.cache = false;
78
+ }
79
+ debug('[formatOptions] options: %j', options);
80
+ return options;
81
+ }
82
+ function getPluginName(pkgPath) {
83
+ try {
84
+ const pkg = readJSONSync(pkgPath);
85
+ if (pkg.eggPlugin?.name) {
86
+ return pkg.eggPlugin.name;
87
+ }
88
+ }
89
+ catch {
90
+ // ignore
91
+ }
92
+ }
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0X29wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2Zvcm1hdF9vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDckMsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBRTdCLE9BQU8sRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBR3ZDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUU5QyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsNkJBQTZCLENBQUMsQ0FBQztBQUV0RDs7R0FFRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsV0FBeUI7SUFDckQsTUFBTSxPQUFPLEdBQUc7UUFDZCxPQUFPLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRTtRQUN0QixLQUFLLEVBQUUsSUFBSTtRQUNYLFFBQVEsRUFBRSxJQUFJO1FBQ2QsS0FBSyxFQUFFLElBQUk7UUFDWCxHQUFHLFdBQVc7S0FDVyxDQUFDO0lBRTVCLGlDQUFpQztJQUNqQyxRQUFRO0lBQ1IsMEVBQTBFO0lBQzFFLE1BQU07SUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUN0QyxPQUFPLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLGVBQWUsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVELElBQUksU0FBUyxHQUFHLFdBQVcsRUFBRSxTQUFTLElBQUksV0FBVyxFQUFFLFNBQVMsQ0FBQztJQUNq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
@@ -1,9 +1,6 @@
1
- //#region src/lib/inject_context.d.ts
2
1
  /**
3
2
  * Monkey patch the mocha instance with egg context.
4
3
  *
5
4
  * @param {Function} mocha - the module of mocha
6
5
  */
7
- declare function injectContext(mocha: any): void;
8
- //#endregion
9
- export { injectContext };
6
+ export declare function injectContext(mocha: any): void;