@matter/testing 0.13.0-alpha.0-20250318-c1aa38b08 → 0.13.0-alpha.0-20250322-f085fa576
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.
- package/.mocharc.cjs +7 -0
- package/dist/cjs/mocks/time.d.ts +24 -20
- package/dist/cjs/mocks/time.d.ts.map +1 -1
- package/dist/cjs/mocks/time.js +60 -37
- package/dist/cjs/mocks/time.js.map +1 -1
- package/dist/cjs/nodejs-reporter.js +1 -1
- package/dist/cjs/nodejs-reporter.js.map +1 -1
- package/dist/cjs/runner.d.ts +1 -1
- package/dist/cjs/runner.d.ts.map +1 -1
- package/dist/cjs/runner.js +64 -4
- package/dist/cjs/runner.js.map +2 -2
- package/dist/esm/mocks/time.d.ts +24 -20
- package/dist/esm/mocks/time.d.ts.map +1 -1
- package/dist/esm/mocks/time.js +60 -37
- package/dist/esm/mocks/time.js.map +1 -1
- package/dist/esm/nodejs-reporter.js +1 -1
- package/dist/esm/nodejs-reporter.js.map +1 -1
- package/dist/esm/runner.d.ts +1 -1
- package/dist/esm/runner.d.ts.map +1 -1
- package/dist/esm/runner.js +65 -5
- package/dist/esm/runner.js.map +1 -1
- package/package.json +2 -2
- package/src/mocks/time.ts +71 -41
- package/src/nodejs-reporter.ts +1 -1
- package/src/runner.ts +87 -5
package/.mocharc.cjs
ADDED
package/dist/cjs/mocks/time.d.ts
CHANGED
|
@@ -8,15 +8,14 @@ type MockTimeLike = typeof MockTime;
|
|
|
8
8
|
export interface MockTime extends MockTimeLike {
|
|
9
9
|
}
|
|
10
10
|
declare class MockTimer {
|
|
11
|
-
private
|
|
12
|
-
private readonly durationMs;
|
|
11
|
+
#private;
|
|
13
12
|
name: string;
|
|
14
13
|
systemId: number;
|
|
15
14
|
intervalMs: number;
|
|
16
15
|
isPeriodic: boolean;
|
|
17
16
|
isRunning: boolean;
|
|
18
17
|
private readonly callback;
|
|
19
|
-
constructor(mockTime: MockTime, durationMs: number, callback: TimerCallback);
|
|
18
|
+
constructor(mockTime: MockTime, name: string, durationMs: number, callback: TimerCallback);
|
|
20
19
|
start(): this;
|
|
21
20
|
stop(): this;
|
|
22
21
|
}
|
|
@@ -40,44 +39,46 @@ export declare const MockTime: {
|
|
|
40
39
|
reset(time?: number): void;
|
|
41
40
|
now(): Date;
|
|
42
41
|
nowMs(): number;
|
|
43
|
-
getTimer(
|
|
44
|
-
getPeriodicTimer(
|
|
42
|
+
getTimer(name: string, durationMs: number, callback: TimerCallback): MockTimer;
|
|
43
|
+
getPeriodicTimer(name: string, intervalMs: number, callback: TimerCallback): MockTimer;
|
|
45
44
|
/**
|
|
46
45
|
* Resolve a promise with time dependency.
|
|
47
46
|
*
|
|
48
47
|
* Moves time forward until the promise resolves.
|
|
49
48
|
*/
|
|
50
|
-
resolve<T>(promise: PromiseLike<T
|
|
49
|
+
resolve<T>(promise: PromiseLike<T>, { stepMs, macrotasks }?: {
|
|
50
|
+
stepMs?: number;
|
|
51
|
+
macrotasks?: boolean;
|
|
52
|
+
}): Promise<T>;
|
|
51
53
|
/**
|
|
52
54
|
* Move time forward. Runs tasks scheduled during this interval.
|
|
53
55
|
*/
|
|
54
56
|
advance(ms: number): Promise<void>;
|
|
55
57
|
/**
|
|
56
|
-
* Yield to scheduled microtasks. This means that all code paths waiting
|
|
57
|
-
*
|
|
58
|
-
* returns.
|
|
58
|
+
* Yield to scheduled microtasks. This means that all code paths waiting on resolved promises (including await)
|
|
59
|
+
* will proceed before this method returns.
|
|
59
60
|
*/
|
|
60
61
|
yield(): Promise<void>;
|
|
61
62
|
/**
|
|
62
|
-
* Due to its implementation, an older version of yield() would actually
|
|
63
|
-
*
|
|
64
|
-
* functionality -- one yield could trigger up to three nested awaits.
|
|
63
|
+
* Due to its implementation, an older version of yield() would actually yield to microtasks three times. Our tests
|
|
64
|
+
* then depended on this functionality -- one yield could trigger up to three nested awaits.
|
|
65
65
|
*
|
|
66
|
-
* To make this clear, the version of yield() that emulates old behavior
|
|
67
|
-
* is called "yield3".
|
|
66
|
+
* To make this clear, the version of yield() that emulates old behavior is called "yield3".
|
|
68
67
|
*/
|
|
69
68
|
yield3(): Promise<void>;
|
|
70
69
|
/**
|
|
71
|
-
* Hook a method and invoke a callback just before the method completes.
|
|
72
|
-
* Unhooks after completion.
|
|
70
|
+
* Hook a method and invoke a callback just before the method completes. Unhooks after completion.
|
|
73
71
|
*
|
|
74
|
-
* Handles both synchronous and asynchronous methods. The interceptor
|
|
75
|
-
*
|
|
72
|
+
* Handles both synchronous and asynchronous methods. The interceptor should match the async-ness of the
|
|
73
|
+
* intercepted method.
|
|
76
74
|
*
|
|
77
|
-
* The interceptor can optionally access and/or replace the resolve/reject
|
|
78
|
-
* value.
|
|
75
|
+
* The interceptor can optionally access and/or replace the resolve/reject value.
|
|
79
76
|
*/
|
|
80
77
|
interceptOnce<NameT extends string, ReturnT, ObjT extends { [N in NameT]: (...args: any) => ReturnT; }>(obj: ObjT, method: NameT, interceptor: (result: InterceptResult<ReturnT>) => void | InterceptResult<ReturnT> | Promise<void> | Promise<InterceptResult<ReturnT>>): void;
|
|
78
|
+
/**
|
|
79
|
+
* Count the number of registered timers with a specific name.
|
|
80
|
+
*/
|
|
81
|
+
timerCountFor(name: string): number;
|
|
81
82
|
callbackAtTime(atMs: number, callback: TimerCallback): void;
|
|
82
83
|
removeCallback(callbackToRemove: TimerCallback): void;
|
|
83
84
|
};
|
|
@@ -87,6 +88,9 @@ export declare function timeSetup(Time: {
|
|
|
87
88
|
processMs: number;
|
|
88
89
|
};
|
|
89
90
|
get(): unknown;
|
|
91
|
+
register(timer: MockTimer): void;
|
|
92
|
+
unregister(timer: MockTimer): void;
|
|
93
|
+
timers: Set<MockTimer>;
|
|
90
94
|
}): void;
|
|
91
95
|
export {};
|
|
92
96
|
//# sourceMappingURL=time.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../../src/mocks/time.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,KAAK,aAAa,GAAG,MAAM,GAAG,CAAC;AAE/B,KAAK,YAAY,GAAG,OAAO,QAAQ,CAAC;AACpC,MAAM,WAAW,QAAS,SAAQ,YAAY;CAAG;
|
|
1
|
+
{"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../../src/mocks/time.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,KAAK,aAAa,GAAG,MAAM,GAAG,CAAC;AAE/B,KAAK,YAAY,GAAG,OAAO,QAAQ,CAAC;AACpC,MAAM,WAAW,QAAS,SAAQ,YAAY;CAAG;AASjD,cAAM,SAAS;;IACX,IAAI,SAAU;IACd,QAAQ,SAAK;IACb,UAAU,SAAK;IACf,UAAU,UAAS;IAKnB,SAAS,UAAS;IAClB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;gBAE7B,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa;IAgBzF,KAAK;IAOL,IAAI;CAMP;AAYD,KAAK,eAAe,CAAC,CAAC,IAClB,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,GACd;IAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAAC,MAAM,CAAC,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,OAAO,CAAC,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,EAAE,CAAA;CAAE,GACjF;IAAE,OAAO,EAAE,CAAC,CAAC;IAAC,MAAM,CAAC,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,OAAO,CAAC,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,EAAE,CAAA;CAAE,CAAC;AAY9E,eAAO,MAAM,QAAQ;mCACW,OAAO;;;;WAsB5B,IAAI;;mBAQI,MAAM,cAAc,MAAM,YAAY,aAAa,GAAG,SAAS;2BAIvD,MAAM,cAAc,MAAM,YAAY,aAAa,GAAG,SAAS;IAItF;;;;OAIG;YACW,CAAC,WAAW,WAAW,CAAC,CAAC,CAAC,2BAA0B;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE;IAgE3G;;OAEG;gBACe,MAAM;IAcxB;;;OAGG;;IAKH;;;;;OAKG;;IAOH;;;;;;;OAOG;kBACW,KAAK,SAAS,MAAM,EAAE,OAAO,EAAE,IAAI,SAAS,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,OAAO,GAAE,OAC5F,IAAI,UACD,KAAK,eACA,CACT,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,KAC/B,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IA0C5F;;OAEG;wBACiB,MAAM;yBAIL,MAAM,YAAY,aAAa;qCAKnB,aAAa;CAKjD,CAAC;AAIF,wBAAgB,SAAS,CAAC,IAAI,EAAE;IAC5B,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IACjD,GAAG,IAAI,OAAO,CAAC;IACf,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACjC,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACnC,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;CAC1B,QASA"}
|
package/dist/cjs/mocks/time.js
CHANGED
|
@@ -28,10 +28,26 @@ var import_boot = require("./boot.js");
|
|
|
28
28
|
* Copyright 2022-2025 Matter.js Authors
|
|
29
29
|
* SPDX-License-Identifier: Apache-2.0
|
|
30
30
|
*/
|
|
31
|
+
const registry = {
|
|
32
|
+
timers: /* @__PURE__ */ new Set(),
|
|
33
|
+
register(_timer) {
|
|
34
|
+
},
|
|
35
|
+
unregister(_timer) {
|
|
36
|
+
}
|
|
37
|
+
};
|
|
31
38
|
class MockTimer {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
39
|
+
name = "Test";
|
|
40
|
+
systemId = 0;
|
|
41
|
+
intervalMs = 0;
|
|
42
|
+
isPeriodic = false;
|
|
43
|
+
#mockTime;
|
|
44
|
+
#durationMs;
|
|
45
|
+
isRunning = false;
|
|
46
|
+
callback;
|
|
47
|
+
constructor(mockTime, name, durationMs, callback) {
|
|
48
|
+
this.name = name;
|
|
49
|
+
this.#mockTime = mockTime;
|
|
50
|
+
this.#durationMs = durationMs;
|
|
35
51
|
if (this instanceof MockInterval) {
|
|
36
52
|
this.callback = callback;
|
|
37
53
|
} else {
|
|
@@ -41,30 +57,26 @@ class MockTimer {
|
|
|
41
57
|
};
|
|
42
58
|
}
|
|
43
59
|
}
|
|
44
|
-
name = "Test";
|
|
45
|
-
systemId = 0;
|
|
46
|
-
intervalMs = 0;
|
|
47
|
-
isPeriodic = false;
|
|
48
|
-
isRunning = false;
|
|
49
|
-
callback;
|
|
50
60
|
start() {
|
|
51
|
-
|
|
61
|
+
registry.register(this);
|
|
62
|
+
this.#mockTime.callbackAtTime(this.#mockTime.nowMs() + this.#durationMs, this.callback);
|
|
52
63
|
this.isRunning = true;
|
|
53
64
|
return this;
|
|
54
65
|
}
|
|
55
66
|
stop() {
|
|
56
|
-
|
|
67
|
+
registry.unregister(this);
|
|
68
|
+
this.#mockTime.removeCallback(this.callback);
|
|
57
69
|
this.isRunning = false;
|
|
58
70
|
return this;
|
|
59
71
|
}
|
|
60
72
|
}
|
|
61
73
|
class MockInterval extends MockTimer {
|
|
62
|
-
constructor(mockTime, durationMs, callback) {
|
|
74
|
+
constructor(mockTime, name, durationMs, callback) {
|
|
63
75
|
const intervalCallback = async () => {
|
|
64
76
|
mockTime.callbackAtTime(mockTime.nowMs() + durationMs, intervalCallback);
|
|
65
77
|
await callback();
|
|
66
78
|
};
|
|
67
|
-
super(mockTime, durationMs, intervalCallback);
|
|
79
|
+
super(mockTime, name, durationMs, intervalCallback);
|
|
68
80
|
}
|
|
69
81
|
}
|
|
70
82
|
function isAsync(fn) {
|
|
@@ -97,18 +109,18 @@ const MockTime = {
|
|
|
97
109
|
nowMs() {
|
|
98
110
|
return nowMs;
|
|
99
111
|
},
|
|
100
|
-
getTimer(
|
|
101
|
-
return new MockTimer(this, durationMs, callback);
|
|
112
|
+
getTimer(name, durationMs, callback) {
|
|
113
|
+
return new MockTimer(this, name, durationMs, callback);
|
|
102
114
|
},
|
|
103
|
-
getPeriodicTimer(
|
|
104
|
-
return new MockInterval(this, intervalMs, callback);
|
|
115
|
+
getPeriodicTimer(name, intervalMs, callback) {
|
|
116
|
+
return new MockInterval(this, name, intervalMs, callback);
|
|
105
117
|
},
|
|
106
118
|
/**
|
|
107
119
|
* Resolve a promise with time dependency.
|
|
108
120
|
*
|
|
109
121
|
* Moves time forward until the promise resolves.
|
|
110
122
|
*/
|
|
111
|
-
async resolve(promise) {
|
|
123
|
+
async resolve(promise, { stepMs, macrotasks } = {}) {
|
|
112
124
|
let resolved = false;
|
|
113
125
|
let result;
|
|
114
126
|
let error;
|
|
@@ -124,7 +136,11 @@ const MockTime = {
|
|
|
124
136
|
);
|
|
125
137
|
let timeAdvanced = 0;
|
|
126
138
|
while (!resolved) {
|
|
127
|
-
|
|
139
|
+
if (macrotasks) {
|
|
140
|
+
await new Promise((resolve) => setTimeout(() => resolve(), 0));
|
|
141
|
+
} else {
|
|
142
|
+
await MockTime.yield();
|
|
143
|
+
}
|
|
128
144
|
if (resolved) {
|
|
129
145
|
break;
|
|
130
146
|
}
|
|
@@ -133,8 +149,12 @@ const MockTime = {
|
|
|
133
149
|
"Mock timeout: Promise did not resolve within one (virtual) hour, probably not going to happen"
|
|
134
150
|
);
|
|
135
151
|
}
|
|
136
|
-
|
|
137
|
-
|
|
152
|
+
if (stepMs) {
|
|
153
|
+
await this.advance(stepMs);
|
|
154
|
+
} else {
|
|
155
|
+
await this.advance(1e3);
|
|
156
|
+
timeAdvanced += 1e3;
|
|
157
|
+
}
|
|
138
158
|
if (resolved) {
|
|
139
159
|
break;
|
|
140
160
|
}
|
|
@@ -150,8 +170,7 @@ const MockTime = {
|
|
|
150
170
|
*/
|
|
151
171
|
async advance(ms) {
|
|
152
172
|
const newTimeMs = nowMs + ms;
|
|
153
|
-
while (
|
|
154
|
-
if (callbacks.length === 0) break;
|
|
173
|
+
while (callbacks.length) {
|
|
155
174
|
const { atMs, callback } = callbacks[0];
|
|
156
175
|
if (atMs > newTimeMs) break;
|
|
157
176
|
callbacks.shift();
|
|
@@ -161,20 +180,17 @@ const MockTime = {
|
|
|
161
180
|
nowMs = newTimeMs;
|
|
162
181
|
},
|
|
163
182
|
/**
|
|
164
|
-
* Yield to scheduled microtasks. This means that all code paths waiting
|
|
165
|
-
*
|
|
166
|
-
* returns.
|
|
183
|
+
* Yield to scheduled microtasks. This means that all code paths waiting on resolved promises (including await)
|
|
184
|
+
* will proceed before this method returns.
|
|
167
185
|
*/
|
|
168
186
|
async yield() {
|
|
169
187
|
await Promise.resolve();
|
|
170
188
|
},
|
|
171
189
|
/**
|
|
172
|
-
* Due to its implementation, an older version of yield() would actually
|
|
173
|
-
*
|
|
174
|
-
* functionality -- one yield could trigger up to three nested awaits.
|
|
190
|
+
* Due to its implementation, an older version of yield() would actually yield to microtasks three times. Our tests
|
|
191
|
+
* then depended on this functionality -- one yield could trigger up to three nested awaits.
|
|
175
192
|
*
|
|
176
|
-
* To make this clear, the version of yield() that emulates old behavior
|
|
177
|
-
* is called "yield3".
|
|
193
|
+
* To make this clear, the version of yield() that emulates old behavior is called "yield3".
|
|
178
194
|
*/
|
|
179
195
|
async yield3() {
|
|
180
196
|
await Promise.resolve();
|
|
@@ -182,14 +198,12 @@ const MockTime = {
|
|
|
182
198
|
await Promise.resolve();
|
|
183
199
|
},
|
|
184
200
|
/**
|
|
185
|
-
* Hook a method and invoke a callback just before the method completes.
|
|
186
|
-
* Unhooks after completion.
|
|
201
|
+
* Hook a method and invoke a callback just before the method completes. Unhooks after completion.
|
|
187
202
|
*
|
|
188
|
-
* Handles both synchronous and asynchronous methods. The interceptor
|
|
189
|
-
*
|
|
203
|
+
* Handles both synchronous and asynchronous methods. The interceptor should match the async-ness of the
|
|
204
|
+
* intercepted method.
|
|
190
205
|
*
|
|
191
|
-
* The interceptor can optionally access and/or replace the resolve/reject
|
|
192
|
-
* value.
|
|
206
|
+
* The interceptor can optionally access and/or replace the resolve/reject value.
|
|
193
207
|
*/
|
|
194
208
|
interceptOnce(obj, method, interceptor) {
|
|
195
209
|
const original = obj[method];
|
|
@@ -231,6 +245,12 @@ const MockTime = {
|
|
|
231
245
|
};
|
|
232
246
|
}
|
|
233
247
|
},
|
|
248
|
+
/**
|
|
249
|
+
* Count the number of registered timers with a specific name.
|
|
250
|
+
*/
|
|
251
|
+
timerCountFor(name) {
|
|
252
|
+
return [...registry.timers].filter((timer) => timer.name === name).length;
|
|
253
|
+
},
|
|
234
254
|
callbackAtTime(atMs, callback) {
|
|
235
255
|
callbacks.push({ atMs, callback });
|
|
236
256
|
callbacks.sort(({ atMs: atMsA }, { atMs: atMsB }) => atMsA - atMsB);
|
|
@@ -243,6 +263,9 @@ const MockTime = {
|
|
|
243
263
|
};
|
|
244
264
|
let reinstallTime;
|
|
245
265
|
function timeSetup(Time) {
|
|
266
|
+
registry.register = Time.register;
|
|
267
|
+
registry.unregister = Time.unregister;
|
|
268
|
+
registry.timers = Time.timers;
|
|
246
269
|
Time.startup.systemMs = Time.startup.processMs = 0;
|
|
247
270
|
real = Time.get();
|
|
248
271
|
MockTime.sleep = real.sleep;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/mocks/time.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,kBAAqB;AANrB;AAAA;AAAA;AAAA;AAAA;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -106,7 +106,7 @@ class NodejsReporter {
|
|
|
106
106
|
import_tools.std.out("\n");
|
|
107
107
|
}
|
|
108
108
|
const failure = this.#failures[i];
|
|
109
|
-
const index =
|
|
109
|
+
const index = `\u26A0 Failure ${import_tools.ansi.bold((i + 1).toString())} of ${this.#failures.length}`;
|
|
110
110
|
const title = `${index} ${this.#formatName(failure.suite, failure.test, failure.step)}`;
|
|
111
111
|
import_failure_reporter.FailureReporter.report(import_tools.std.out, failure.detail, title);
|
|
112
112
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/nodejs-reporter.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,mBAAoC;AAEpC,8BAAgC;AARhC;AAAA;AAAA;AAAA;AAAA;AAcO,MAAe,eAAmC;AAAA,EASrD,YAAoB,UAAoB;AAApB;AAAA,EAAqB;AAAA,EARzC,OAAO;AAAA,EACP,SAAS,MAAc;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY,MAAe;AAAA,EAC3B;AAAA,EAIA,SAAS,MAAc,OAA0B,iBAAiB,MAAY;AAC1E,SAAK,OAAO;AACZ,SAAK,SAAS,CAAC;AACf,SAAK,YAAY,CAAC;AAClB,QAAI,CAAC,gBAAgB;AACjB,WAAK,SAAS,OAAO,KAAK,WAAW,KAAK,CAAC;AAAA,IAC/C;AAAA,EACJ;AAAA,EAEA,WAAW,MAAsB;AAC7B,SAAK,SAAS;AAAA,EAClB;AAAA,EAEA,UAAU,MAAc,OAAqB;AACzC,SAAK,QAAQ;AACb,SAAK,SAAS;AACd,SAAK,QAAQ;AAGb,UAAM,QAAQ,QAAQ,OAAO,QAAQ,KAAK,YAAY,KAAK,QAAQ,IAAI,IAAI,KAAK,OAAO,CAAC;AACxF,SAAK,aAAa,KAAK;AAAA,EAC3B;AAAA,EAEA,UAAU,MAAoB;AAC1B,SAAK,QAAQ;AAEb,QAAI,QAAQ,OAAO,SAAS,KAAK,OAAO;AACpC,YAAM,QAAQ,KAAK,YAAY,KAAK,QAAQ,KAAK,OAAO,IAAI;AAC5D,WAAK,aAAa,KAAK;AAAA,IAC3B;AAAA,EACJ;AAAA,EAEA,aAAa,OAAe;AACxB,QAAI,UAAU,KAAK,YAAY;AAC3B;AAAA,IACJ;AACA,SAAK,aAAa;AAClB,SAAK,SAAS,OAAO,KAAK,WAAW,KAAK,MAAM,GAAG,KAAK;AAAA,EAC5D;AAAA,EAEA,SAAS,MAAc,QAAuB;AAC1C,SAAK,UAAU,KAAK;AAAA,MAChB,OAAO,KAAK;AAAA,MACZ,MAAM;AAAA,MACN,MAAM,KAAK;AAAA,MACX;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAIA,OAAO,OAAqB;AACxB,QAAI,KAAK,UAAU,QAAQ;AACvB,WAAK,SAAS,QAAQ,KAAK,WAAW,KAAK,CAAC;AAC5C,WAAK,cAAc;AAAA,IACvB,WAAW,SAAS,CAAC,MAAM,UAAU;AACjC,WAAK,SAAS,QAAQ,gBAAgB;AAAA,IAC1C,OAAO;AACH,WAAK,SAAS,QAAQ,KAAK,WAAW,KAAK,CAAC;AAAA,IAChD;AAAA,EACJ;AAAA,EAEA,WAAW,OAAe;AACtB,QAAI;AACJ,QAAI,OAAO;AACP,YAAM,WAAW,kBAAK,IAAI,GAAG,MAAM,QAAQ,IAAI,MAAM,KAAK,EAAE;AAC5D,YAAM,WAAW,MAAM,WAAW,kBAAK,OAAO,IAAI,IAAI,MAAM,SAAS,SAAS,CAAC,SAAS,IAAI;AAC5F,gBAAU,IAAI,QAAQ,GAAG,QAAQ;AAAA,IACrC,OAAO;AACH,gBAAU;AAAA,IACd;AAEA,WAAO,GAAG,kBAAK,KAAK,KAAK,IAAI,CAAC,GAAG,OAAO;AAAA,EAC5C;AAAA,EAEA,gBAAgB;AACZ,aAAS,IAAI,GAAG,IAAI,KAAK,UAAU,QAAQ,KAAK;AAC5C,UAAI,MAAM,GAAG;AACT,yBAAI,IAAI,IAAI;AAAA,MAChB;AAEA,YAAM,UAAU,KAAK,UAAU,CAAC;AAChC,YAAM,QAAQ,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/cjs/runner.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ import { Package, Progress } from "#tools";
|
|
|
7
7
|
import { TestOptions } from "./options.js";
|
|
8
8
|
import { Reporter } from "./reporter.js";
|
|
9
9
|
export declare class TestRunner {
|
|
10
|
+
#private;
|
|
10
11
|
readonly pkg: Package;
|
|
11
12
|
readonly progress: Progress;
|
|
12
13
|
readonly options: TestOptions;
|
|
@@ -16,6 +17,5 @@ export declare class TestRunner {
|
|
|
16
17
|
runNode(format?: "esm" | "cjs"): Promise<void>;
|
|
17
18
|
runWeb(manual?: boolean): Promise<void>;
|
|
18
19
|
loadFiles(format: "esm" | "cjs"): Promise<string[]>;
|
|
19
|
-
private run;
|
|
20
20
|
}
|
|
21
21
|
//# sourceMappingURL=runner.d.ts.map
|
package/dist/cjs/runner.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/runner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAQ,OAAO,EAAE,QAAQ,EAAO,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/runner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAQ,OAAO,EAAE,QAAQ,EAAO,MAAM,QAAQ,CAAC;AAStD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAIzC,qBAAa,UAAU;;IAKf,QAAQ,CAAC,GAAG,EAAE,OAAO;IACrB,QAAQ,CAAC,QAAQ,EAAE,QAAQ;IAC3B,QAAQ,CAAC,OAAO,EAAE,WAAW;IANjC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,OAAO,CAAC,IAAI,CAAmB;gBAGlB,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,WAAW;IA8B3B,OAAO,CAAC,MAAM,GAAE,KAAK,GAAG,KAAa;IAIrC,MAAM,CAAC,MAAM,UAAQ;IAIrB,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG,KAAK;CA0GxC"}
|
package/dist/cjs/runner.js
CHANGED
|
@@ -33,6 +33,7 @@ __export(runner_exports, {
|
|
|
33
33
|
module.exports = __toCommonJS(runner_exports);
|
|
34
34
|
var import_tools = require("#tools");
|
|
35
35
|
var import_debug = __toESM(require("debug"), 1);
|
|
36
|
+
var import_promises = require("node:fs/promises");
|
|
36
37
|
var import_node_path = require("node:path");
|
|
37
38
|
var import_chip = require("./chip/chip.js");
|
|
38
39
|
var import_failure_reporter = require("./failure-reporter.js");
|
|
@@ -76,13 +77,13 @@ class TestRunner {
|
|
|
76
77
|
reporter;
|
|
77
78
|
spec = Array();
|
|
78
79
|
async runNode(format = "esm") {
|
|
79
|
-
await this
|
|
80
|
+
await this.#run(this.progress, () => (0, import_nodejs.testNodejs)(this, format));
|
|
80
81
|
}
|
|
81
82
|
async runWeb(manual = false) {
|
|
82
|
-
await this
|
|
83
|
+
await this.#run(this.progress, () => (0, import_web.testWeb)(this, manual));
|
|
83
84
|
}
|
|
84
85
|
async loadFiles(format) {
|
|
85
|
-
const tests =
|
|
86
|
+
const tests = Array();
|
|
86
87
|
for (let spec of this.spec) {
|
|
87
88
|
spec = spec.replace(/\.ts$/, ".js");
|
|
88
89
|
spec = (0, import_node_path.relative)(this.pkg.path, spec);
|
|
@@ -91,17 +92,76 @@ class TestRunner {
|
|
|
91
92
|
}
|
|
92
93
|
tests.push(...await this.pkg.glob(spec));
|
|
93
94
|
}
|
|
95
|
+
for (let i = 0; i < tests.length; i++) {
|
|
96
|
+
if (tests[i].indexOf("/src/") === -1) {
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
tests[i] = await this.#mapSourceToTest(tests[i]);
|
|
100
|
+
}
|
|
94
101
|
if (!tests.length) {
|
|
95
102
|
fatal(`No files match ${this.spec.join(", ")}`);
|
|
96
103
|
}
|
|
97
104
|
return [...(0, import_files.listSupportFiles)(format), ...tests];
|
|
98
105
|
}
|
|
99
|
-
async run(progress, runner) {
|
|
106
|
+
async #run(progress, runner) {
|
|
100
107
|
await runner();
|
|
101
108
|
if (progress.status !== import_tools.Progress.Status.Success) {
|
|
102
109
|
fatal(`Test ${progress.status.toLowerCase()}, aborting`);
|
|
103
110
|
}
|
|
104
111
|
}
|
|
112
|
+
async #mapSourceToTest(filename) {
|
|
113
|
+
try {
|
|
114
|
+
const src = await (0, import_promises.readFile)(filename, "utf-8");
|
|
115
|
+
const [, args] = src.match(/\/\/ matter-test (.*)/) ?? [];
|
|
116
|
+
if (args) {
|
|
117
|
+
return this.#parseMarkerArgs(args, filename);
|
|
118
|
+
}
|
|
119
|
+
} catch (e) {
|
|
120
|
+
}
|
|
121
|
+
return filename.replace("/src/", "/test/");
|
|
122
|
+
}
|
|
123
|
+
#parseMarkerArgs(args, filename) {
|
|
124
|
+
const parts = args.match(/[a-z]+=(?:"(?:[^"\\]|\\.)+"|[^"]\S+)/g);
|
|
125
|
+
if (!parts) {
|
|
126
|
+
throw new Error("No matter-test parameters detected");
|
|
127
|
+
}
|
|
128
|
+
let file;
|
|
129
|
+
let module2;
|
|
130
|
+
for (const part of parts) {
|
|
131
|
+
const equalPos = part.indexOf("=");
|
|
132
|
+
const name = part.substring(0, equalPos);
|
|
133
|
+
let value = part.substring(equalPos + 1);
|
|
134
|
+
if (value[0] === '"') {
|
|
135
|
+
value = value.substring(1, value.length - 2).replace(/\\"/g, '"').replace(/\\\\/g, '"');
|
|
136
|
+
}
|
|
137
|
+
switch (name) {
|
|
138
|
+
case "file":
|
|
139
|
+
file = value;
|
|
140
|
+
break;
|
|
141
|
+
case "module":
|
|
142
|
+
module2 = value;
|
|
143
|
+
break;
|
|
144
|
+
default:
|
|
145
|
+
throw new Error(`Unrecognized matter-test parameter "${name}"`);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
if (file === void 0) {
|
|
149
|
+
throw new Error(`matter-test parameter "file" is required`);
|
|
150
|
+
}
|
|
151
|
+
if (file.startsWith("./") || file.startsWith("../")) {
|
|
152
|
+
file = (0, import_node_path.resolve)((0, import_node_path.dirname)(filename), file);
|
|
153
|
+
}
|
|
154
|
+
let testPkg;
|
|
155
|
+
if (module2 === void 0) {
|
|
156
|
+
testPkg = this.pkg;
|
|
157
|
+
} else {
|
|
158
|
+
testPkg = this.pkg.findPackage(module2);
|
|
159
|
+
if (testPkg === void 0) {
|
|
160
|
+
throw new Error(`Unknown matter-test module "${module2}"`);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
return testPkg.resolve("test", file);
|
|
164
|
+
}
|
|
105
165
|
}
|
|
106
166
|
function fatal(message) {
|
|
107
167
|
import_tools.std.err.write(import_tools.ansi.bright.red(`
|
package/dist/cjs/runner.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/runner.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,mBAA6C;AAC7C,mBAAkB;AAClB,
|
|
5
|
-
"names": ["debug"]
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["debug", "module"]
|
|
6
6
|
}
|
package/dist/esm/mocks/time.d.ts
CHANGED
|
@@ -8,15 +8,14 @@ type MockTimeLike = typeof MockTime;
|
|
|
8
8
|
export interface MockTime extends MockTimeLike {
|
|
9
9
|
}
|
|
10
10
|
declare class MockTimer {
|
|
11
|
-
private
|
|
12
|
-
private readonly durationMs;
|
|
11
|
+
#private;
|
|
13
12
|
name: string;
|
|
14
13
|
systemId: number;
|
|
15
14
|
intervalMs: number;
|
|
16
15
|
isPeriodic: boolean;
|
|
17
16
|
isRunning: boolean;
|
|
18
17
|
private readonly callback;
|
|
19
|
-
constructor(mockTime: MockTime, durationMs: number, callback: TimerCallback);
|
|
18
|
+
constructor(mockTime: MockTime, name: string, durationMs: number, callback: TimerCallback);
|
|
20
19
|
start(): this;
|
|
21
20
|
stop(): this;
|
|
22
21
|
}
|
|
@@ -40,44 +39,46 @@ export declare const MockTime: {
|
|
|
40
39
|
reset(time?: number): void;
|
|
41
40
|
now(): Date;
|
|
42
41
|
nowMs(): number;
|
|
43
|
-
getTimer(
|
|
44
|
-
getPeriodicTimer(
|
|
42
|
+
getTimer(name: string, durationMs: number, callback: TimerCallback): MockTimer;
|
|
43
|
+
getPeriodicTimer(name: string, intervalMs: number, callback: TimerCallback): MockTimer;
|
|
45
44
|
/**
|
|
46
45
|
* Resolve a promise with time dependency.
|
|
47
46
|
*
|
|
48
47
|
* Moves time forward until the promise resolves.
|
|
49
48
|
*/
|
|
50
|
-
resolve<T>(promise: PromiseLike<T
|
|
49
|
+
resolve<T>(promise: PromiseLike<T>, { stepMs, macrotasks }?: {
|
|
50
|
+
stepMs?: number;
|
|
51
|
+
macrotasks?: boolean;
|
|
52
|
+
}): Promise<T>;
|
|
51
53
|
/**
|
|
52
54
|
* Move time forward. Runs tasks scheduled during this interval.
|
|
53
55
|
*/
|
|
54
56
|
advance(ms: number): Promise<void>;
|
|
55
57
|
/**
|
|
56
|
-
* Yield to scheduled microtasks. This means that all code paths waiting
|
|
57
|
-
*
|
|
58
|
-
* returns.
|
|
58
|
+
* Yield to scheduled microtasks. This means that all code paths waiting on resolved promises (including await)
|
|
59
|
+
* will proceed before this method returns.
|
|
59
60
|
*/
|
|
60
61
|
yield(): Promise<void>;
|
|
61
62
|
/**
|
|
62
|
-
* Due to its implementation, an older version of yield() would actually
|
|
63
|
-
*
|
|
64
|
-
* functionality -- one yield could trigger up to three nested awaits.
|
|
63
|
+
* Due to its implementation, an older version of yield() would actually yield to microtasks three times. Our tests
|
|
64
|
+
* then depended on this functionality -- one yield could trigger up to three nested awaits.
|
|
65
65
|
*
|
|
66
|
-
* To make this clear, the version of yield() that emulates old behavior
|
|
67
|
-
* is called "yield3".
|
|
66
|
+
* To make this clear, the version of yield() that emulates old behavior is called "yield3".
|
|
68
67
|
*/
|
|
69
68
|
yield3(): Promise<void>;
|
|
70
69
|
/**
|
|
71
|
-
* Hook a method and invoke a callback just before the method completes.
|
|
72
|
-
* Unhooks after completion.
|
|
70
|
+
* Hook a method and invoke a callback just before the method completes. Unhooks after completion.
|
|
73
71
|
*
|
|
74
|
-
* Handles both synchronous and asynchronous methods. The interceptor
|
|
75
|
-
*
|
|
72
|
+
* Handles both synchronous and asynchronous methods. The interceptor should match the async-ness of the
|
|
73
|
+
* intercepted method.
|
|
76
74
|
*
|
|
77
|
-
* The interceptor can optionally access and/or replace the resolve/reject
|
|
78
|
-
* value.
|
|
75
|
+
* The interceptor can optionally access and/or replace the resolve/reject value.
|
|
79
76
|
*/
|
|
80
77
|
interceptOnce<NameT extends string, ReturnT, ObjT extends { [N in NameT]: (...args: any) => ReturnT; }>(obj: ObjT, method: NameT, interceptor: (result: InterceptResult<ReturnT>) => void | InterceptResult<ReturnT> | Promise<void> | Promise<InterceptResult<ReturnT>>): void;
|
|
78
|
+
/**
|
|
79
|
+
* Count the number of registered timers with a specific name.
|
|
80
|
+
*/
|
|
81
|
+
timerCountFor(name: string): number;
|
|
81
82
|
callbackAtTime(atMs: number, callback: TimerCallback): void;
|
|
82
83
|
removeCallback(callbackToRemove: TimerCallback): void;
|
|
83
84
|
};
|
|
@@ -87,6 +88,9 @@ export declare function timeSetup(Time: {
|
|
|
87
88
|
processMs: number;
|
|
88
89
|
};
|
|
89
90
|
get(): unknown;
|
|
91
|
+
register(timer: MockTimer): void;
|
|
92
|
+
unregister(timer: MockTimer): void;
|
|
93
|
+
timers: Set<MockTimer>;
|
|
90
94
|
}): void;
|
|
91
95
|
export {};
|
|
92
96
|
//# sourceMappingURL=time.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../../src/mocks/time.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,KAAK,aAAa,GAAG,MAAM,GAAG,CAAC;AAE/B,KAAK,YAAY,GAAG,OAAO,QAAQ,CAAC;AACpC,MAAM,WAAW,QAAS,SAAQ,YAAY;CAAG;
|
|
1
|
+
{"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../../src/mocks/time.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,KAAK,aAAa,GAAG,MAAM,GAAG,CAAC;AAE/B,KAAK,YAAY,GAAG,OAAO,QAAQ,CAAC;AACpC,MAAM,WAAW,QAAS,SAAQ,YAAY;CAAG;AASjD,cAAM,SAAS;;IACX,IAAI,SAAU;IACd,QAAQ,SAAK;IACb,UAAU,SAAK;IACf,UAAU,UAAS;IAKnB,SAAS,UAAS;IAClB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;gBAE7B,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa;IAgBzF,KAAK;IAOL,IAAI;CAMP;AAYD,KAAK,eAAe,CAAC,CAAC,IAClB,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,GACd;IAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAAC,MAAM,CAAC,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,OAAO,CAAC,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,EAAE,CAAA;CAAE,GACjF;IAAE,OAAO,EAAE,CAAC,CAAC;IAAC,MAAM,CAAC,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,OAAO,CAAC,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,EAAE,CAAA;CAAE,CAAC;AAY9E,eAAO,MAAM,QAAQ;mCACW,OAAO;;;;WAsB5B,IAAI;;mBAQI,MAAM,cAAc,MAAM,YAAY,aAAa,GAAG,SAAS;2BAIvD,MAAM,cAAc,MAAM,YAAY,aAAa,GAAG,SAAS;IAItF;;;;OAIG;YACW,CAAC,WAAW,WAAW,CAAC,CAAC,CAAC,2BAA0B;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE;IAgE3G;;OAEG;gBACe,MAAM;IAcxB;;;OAGG;;IAKH;;;;;OAKG;;IAOH;;;;;;;OAOG;kBACW,KAAK,SAAS,MAAM,EAAE,OAAO,EAAE,IAAI,SAAS,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,OAAO,GAAE,OAC5F,IAAI,UACD,KAAK,eACA,CACT,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,KAC/B,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IA0C5F;;OAEG;wBACiB,MAAM;yBAIL,MAAM,YAAY,aAAa;qCAKnB,aAAa;CAKjD,CAAC;AAIF,wBAAgB,SAAS,CAAC,IAAI,EAAE;IAC5B,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IACjD,GAAG,IAAI,OAAO,CAAC;IACf,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACjC,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACnC,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;CAC1B,QASA"}
|