@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 ADDED
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2023 Project CHIP Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ module.exports = require("@matter/tools").mocharc();
@@ -8,15 +8,14 @@ type MockTimeLike = typeof MockTime;
8
8
  export interface MockTime extends MockTimeLike {
9
9
  }
10
10
  declare class MockTimer {
11
- private readonly mockTime;
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(_name: string, durationMs: number, callback: TimerCallback): MockTimer;
44
- getPeriodicTimer(_name: string, intervalMs: number, callback: TimerCallback): MockTimer;
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>): Promise<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
- * on resolved promises (including await) will proceed before this method
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
- * yield to microtasks three times. Our tests then depended on this
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
- * should match the async-ness of the intercepted method.
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;AAGjD,cAAM,SAAS;IAUP,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAV/B,IAAI,SAAU;IACd,QAAQ,SAAK;IACb,UAAU,SAAK;IACf,UAAU,UAAS;IAEnB,SAAS,UAAS;IAClB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;gBAGpB,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,MAAM,EACnC,QAAQ,EAAE,aAAa;IAY3B,KAAK;IAML,IAAI;CAKP;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;;oBAQK,MAAM,cAAc,MAAM,YAAY,aAAa,GAAG,SAAS;4BAIvD,MAAM,cAAc,MAAM,YAAY,aAAa,GAAG,SAAS;IAIvF;;;;OAIG;YACW,CAAC,WAAW,WAAW,CAAC,CAAC,CAAC;IAwDxC;;OAEG;gBACe,MAAM;IAexB;;;;OAIG;;IAKH;;;;;;;OAOG;;IAOH;;;;;;;;;OASG;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;yBA0CvE,MAAM,YAAY,aAAa;qCAKnB,aAAa;CAKjD,CAAC;AAIF,wBAAgB,SAAS,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,GAAG,IAAI,OAAO,CAAA;CAAE,QAMnG"}
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"}
@@ -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
- constructor(mockTime, durationMs, callback) {
33
- this.mockTime = mockTime;
34
- this.durationMs = durationMs;
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
- this.mockTime.callbackAtTime(this.mockTime.nowMs() + this.durationMs, this.callback);
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
- this.mockTime.removeCallback(this.callback);
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(_name, durationMs, callback) {
101
- return new MockTimer(this, durationMs, callback);
112
+ getTimer(name, durationMs, callback) {
113
+ return new MockTimer(this, name, durationMs, callback);
102
114
  },
103
- getPeriodicTimer(_name, intervalMs, callback) {
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
- await new Promise((resolve) => setTimeout(() => resolve(), 0));
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
- await this.advance(1e3);
137
- timeAdvanced += 1e3;
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 (true) {
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
- * on resolved promises (including await) will proceed before this method
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
- * yield to microtasks three times. Our tests then depended on this
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
- * should match the async-ness of the intercepted method.
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": "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",
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 = `Failure ${import_tools.ansi.bold((i + 1).toString())} of ${this.#failures.length}`;
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": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -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
@@ -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;AAQtD,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;YAmBvB,GAAG;CAMpB"}
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"}
@@ -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.run(this.progress, () => (0, import_nodejs.testNodejs)(this, format));
80
+ await this.#run(this.progress, () => (0, import_nodejs.testNodejs)(this, format));
80
81
  }
81
82
  async runWeb(manual = false) {
82
- await this.run(this.progress, () => (0, import_web.testWeb)(this, manual));
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(`
@@ -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,uBAAyB;AACzB,kBAAqB;AAErB,8BAAgC;AAChC,6BAA+B;AAC/B,oBAA2B;AAG3B,mBAAiC;AACjC,iBAAwB;AAjBxB;AAAA;AAAA;AAAA;AAAA;AAmBO,MAAM,WAAW;AAAA,EAIpB,YACa,KACA,UACA,SACX;AAHW;AACA;AACA;AAET,qBAAK,SAAS;AAEd,SAAK,WAAW,IAAK,cAAc,sCAAe;AAAA,MAC9C,cAAc;AACV,cAAM,QAAQ;AAAA,MAClB;AAAA,MAES,QAAQ,QAAuB;AACpC,yBAAI,IAAI,MAAM,IAAI;AAClB,gDAAgB,OAAO,iBAAI,KAAK,QAAQ,kBAAkB;AAC1D,yBAAI,IAAI,MAAM,IAAI;AAClB,gBAAQ,KAAK,CAAC;AAAA,MAClB;AAAA,IACJ,EAAG;AAEH,QAAI,QAAQ,SAAS,QAAW;AAC5B,WAAK,OAAO,CAAC,kBAAkB;AAAA,IACnC,WAAW,MAAM,QAAQ,QAAQ,IAAI,GAAG;AACpC,WAAK,OAAO,QAAQ;AAAA,IACxB,OAAO;AACH,WAAK,OAAO,CAAC,QAAQ,IAAI;AAAA,IAC7B;AAEA,QAAI,QAAQ,OAAO;AACf,mBAAAA,QAAM,OAAO,SAAS;AAAA,IAC1B;AAAA,EACJ;AAAA,EAlCS;AAAA,EACD,OAAO,MAAc;AAAA,EAmC7B,MAAM,QAAQ,SAAwB,OAAO;AACzC,UAAM,KAAK,IAAI,KAAK,UAAU,UAAM,0BAAW,MAAM,MAAM,CAAC;AAAA,EAChE;AAAA,EAEA,MAAM,OAAO,SAAS,OAAO;AACzB,UAAM,KAAK,IAAI,KAAK,UAAU,UAAM,oBAAQ,MAAM,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEA,MAAM,UAAU,QAAuB;AACnC,UAAM,QAAQ,CAAC;AACf,aAAS,QAAQ,KAAK,MAAM;AACxB,aAAO,KAAK,QAAQ,SAAS,KAAK;AAClC,iBAAO,2BAAS,KAAK,IAAI,MAAM,IAAI;AACnC,UAAI,CAAC,KAAK,WAAW,GAAG,KAAK,CAAC,KAAK,WAAW,QAAQ,KAAK,CAAC,KAAK,WAAW,OAAO,GAAG;AAClF,eAAO,SAAS,MAAM,IAAI,IAAI;AAAA,MAClC;AAEA,YAAM,KAAK,GAAI,MAAM,KAAK,IAAI,KAAK,IAAI,CAAE;AAAA,IAC7C;AAEA,QAAI,CAAC,MAAM,QAAQ;AACf,YAAM,kBAAkB,KAAK,KAAK,KAAK,IAAI,CAAC,EAAE;AAAA,IAClD;AAEA,WAAO,CAAC,OAAG,+BAAiB,MAAM,GAAG,GAAG,KAAK;AAAA,EACjD;AAAA,EAEA,MAAc,IAAI,UAAoB,QAA6B;AAC/D,UAAM,OAAO;AACb,QAAI,SAAS,WAAW,sBAAS,OAAO,SAAS;AAC7C,YAAM,QAAQ,SAAS,OAAO,YAAY,CAAC,YAAY;AAAA,IAC3D;AAAA,EACJ;AACJ;AAEA,SAAS,MAAM,SAAiB;AAC5B,mBAAI,IAAI,MAAM,kBAAK,OAAO,IAAI;AAAA,EAAK,OAAO;AAAA;AAAA,CAAM,CAAC;AACjD,UAAQ,KAAK,CAAC;AAClB;",
5
- "names": ["debug"]
4
+ "mappings": "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",
5
+ "names": ["debug", "module"]
6
6
  }
@@ -8,15 +8,14 @@ type MockTimeLike = typeof MockTime;
8
8
  export interface MockTime extends MockTimeLike {
9
9
  }
10
10
  declare class MockTimer {
11
- private readonly mockTime;
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(_name: string, durationMs: number, callback: TimerCallback): MockTimer;
44
- getPeriodicTimer(_name: string, intervalMs: number, callback: TimerCallback): MockTimer;
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>): Promise<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
- * on resolved promises (including await) will proceed before this method
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
- * yield to microtasks three times. Our tests then depended on this
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
- * should match the async-ness of the intercepted method.
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;AAGjD,cAAM,SAAS;IAUP,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAV/B,IAAI,SAAU;IACd,QAAQ,SAAK;IACb,UAAU,SAAK;IACf,UAAU,UAAS;IAEnB,SAAS,UAAS;IAClB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;gBAGpB,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,MAAM,EACnC,QAAQ,EAAE,aAAa;IAY3B,KAAK;IAML,IAAI;CAKP;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;;oBAQK,MAAM,cAAc,MAAM,YAAY,aAAa,GAAG,SAAS;4BAIvD,MAAM,cAAc,MAAM,YAAY,aAAa,GAAG,SAAS;IAIvF;;;;OAIG;YACW,CAAC,WAAW,WAAW,CAAC,CAAC,CAAC;IAwDxC;;OAEG;gBACe,MAAM;IAexB;;;;OAIG;;IAKH;;;;;;;OAOG;;IAOH;;;;;;;;;OASG;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;yBA0CvE,MAAM,YAAY,aAAa;qCAKnB,aAAa;CAKjD,CAAC;AAIF,wBAAgB,SAAS,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,GAAG,IAAI,OAAO,CAAA;CAAE,QAMnG"}
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"}