@matter/testing 0.11.0-alpha.0-20241027-de3c9d280
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/LICENSE +201 -0
- package/README.md +40 -0
- package/bin/test.js +7 -0
- package/chip/Dockerfile +23 -0
- package/dist/cjs/chip/pics-file.d.ts +20 -0
- package/dist/cjs/chip/pics-file.d.ts.map +1 -0
- package/dist/cjs/chip/pics-file.js +79 -0
- package/dist/cjs/chip/pics-file.js.map +6 -0
- package/dist/cjs/chip.d.ts +60 -0
- package/dist/cjs/chip.d.ts.map +1 -0
- package/dist/cjs/chip.js +306 -0
- package/dist/cjs/chip.js.map +6 -0
- package/dist/cjs/cli.d.ts +9 -0
- package/dist/cjs/cli.d.ts.map +1 -0
- package/dist/cjs/cli.js +115 -0
- package/dist/cjs/cli.js.map +6 -0
- package/dist/cjs/failure-detail.d.ts +19 -0
- package/dist/cjs/failure-detail.d.ts.map +1 -0
- package/dist/cjs/failure-detail.js +143 -0
- package/dist/cjs/failure-detail.js.map +6 -0
- package/dist/cjs/global-declarations.d.ts +38 -0
- package/dist/cjs/global-declarations.d.ts.map +1 -0
- package/dist/cjs/global-declarations.js +8 -0
- package/dist/cjs/global-declarations.js.map +6 -0
- package/dist/cjs/global-definitions.d.ts +7 -0
- package/dist/cjs/global-definitions.d.ts.map +1 -0
- package/dist/cjs/global-definitions.js +50 -0
- package/dist/cjs/global-definitions.js.map +6 -0
- package/dist/cjs/index.d.ts +10 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +27 -0
- package/dist/cjs/index.js.map +6 -0
- package/dist/cjs/mocha.d.ts +36 -0
- package/dist/cjs/mocha.d.ts.map +1 -0
- package/dist/cjs/mocha.js +155 -0
- package/dist/cjs/mocha.js.map +6 -0
- package/dist/cjs/mocharc.cjs +68 -0
- package/dist/cjs/mocharc.d.cts +7 -0
- package/dist/cjs/mocks/crypto.d.ts +7 -0
- package/dist/cjs/mocks/crypto.d.ts.map +1 -0
- package/dist/cjs/mocks/crypto.js +79 -0
- package/dist/cjs/mocks/crypto.js.map +6 -0
- package/dist/cjs/mocks/environment.d.ts +7 -0
- package/dist/cjs/mocks/environment.d.ts.map +1 -0
- package/dist/cjs/mocks/environment.js +7 -0
- package/dist/cjs/mocks/environment.js.map +6 -0
- package/dist/cjs/mocks/index.d.ts +10 -0
- package/dist/cjs/mocks/index.d.ts.map +1 -0
- package/dist/cjs/mocks/index.js +27 -0
- package/dist/cjs/mocks/index.js.map +6 -0
- package/dist/cjs/mocks/logging.d.ts +28 -0
- package/dist/cjs/mocks/logging.d.ts.map +1 -0
- package/dist/cjs/mocks/logging.js +93 -0
- package/dist/cjs/mocks/logging.js.map +6 -0
- package/dist/cjs/mocks/time.d.ts +88 -0
- package/dist/cjs/mocks/time.d.ts.map +1 -0
- package/dist/cjs/mocks/time.js +251 -0
- package/dist/cjs/mocks/time.js.map +6 -0
- package/dist/cjs/node.d.ts +9 -0
- package/dist/cjs/node.d.ts.map +1 -0
- package/dist/cjs/node.js +112 -0
- package/dist/cjs/node.js.map +6 -0
- package/dist/cjs/options.d.ts +19 -0
- package/dist/cjs/options.d.ts.map +1 -0
- package/dist/cjs/options.js +62 -0
- package/dist/cjs/options.js.map +6 -0
- package/dist/cjs/package.json +6 -0
- package/dist/cjs/reporter.d.ts +50 -0
- package/dist/cjs/reporter.d.ts.map +1 -0
- package/dist/cjs/reporter.js +137 -0
- package/dist/cjs/reporter.js.map +6 -0
- package/dist/cjs/runner.d.ts +21 -0
- package/dist/cjs/runner.d.ts.map +1 -0
- package/dist/cjs/runner.js +113 -0
- package/dist/cjs/runner.js.map +6 -0
- package/dist/cjs/util/docker.d.ts +27 -0
- package/dist/cjs/util/docker.d.ts.map +1 -0
- package/dist/cjs/util/docker.js +163 -0
- package/dist/cjs/util/docker.js.map +6 -0
- package/dist/cjs/util/files.d.ts +7 -0
- package/dist/cjs/util/files.d.ts.map +1 -0
- package/dist/cjs/util/files.js +42 -0
- package/dist/cjs/util/files.js.map +6 -0
- package/dist/cjs/util/node-shims.d.ts +7 -0
- package/dist/cjs/util/node-shims.d.ts.map +1 -0
- package/dist/cjs/util/node-shims.js +12 -0
- package/dist/cjs/util/node-shims.js.map +6 -0
- package/dist/cjs/util/trace-unhandled.d.ts +9 -0
- package/dist/cjs/util/trace-unhandled.d.ts.map +1 -0
- package/dist/cjs/util/trace-unhandled.js +48 -0
- package/dist/cjs/util/trace-unhandled.js.map +6 -0
- package/dist/cjs/util/wtf.d.ts +10 -0
- package/dist/cjs/util/wtf.d.ts.map +1 -0
- package/dist/cjs/util/wtf.js +53 -0
- package/dist/cjs/util/wtf.js.map +6 -0
- package/dist/cjs/web.d.ts +8 -0
- package/dist/cjs/web.d.ts.map +1 -0
- package/dist/cjs/web.js +165 -0
- package/dist/cjs/web.js.map +6 -0
- package/dist/esm/chip/pics-file.d.ts +20 -0
- package/dist/esm/chip/pics-file.d.ts.map +1 -0
- package/dist/esm/chip/pics-file.js +59 -0
- package/dist/esm/chip/pics-file.js.map +6 -0
- package/dist/esm/chip.d.ts +60 -0
- package/dist/esm/chip.d.ts.map +1 -0
- package/dist/esm/chip.js +286 -0
- package/dist/esm/chip.js.map +6 -0
- package/dist/esm/cli.d.ts +9 -0
- package/dist/esm/cli.d.ts.map +1 -0
- package/dist/esm/cli.js +85 -0
- package/dist/esm/cli.js.map +6 -0
- package/dist/esm/failure-detail.d.ts +19 -0
- package/dist/esm/failure-detail.d.ts.map +1 -0
- package/dist/esm/failure-detail.js +113 -0
- package/dist/esm/failure-detail.js.map +6 -0
- package/dist/esm/global-declarations.d.ts +38 -0
- package/dist/esm/global-declarations.d.ts.map +1 -0
- package/dist/esm/global-declarations.js +7 -0
- package/dist/esm/global-declarations.js.map +6 -0
- package/dist/esm/global-definitions.d.ts +7 -0
- package/dist/esm/global-definitions.d.ts.map +1 -0
- package/dist/esm/global-definitions.js +27 -0
- package/dist/esm/global-definitions.js.map +6 -0
- package/dist/esm/index.d.ts +10 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +10 -0
- package/dist/esm/index.js.map +6 -0
- package/dist/esm/mocha.d.ts +36 -0
- package/dist/esm/mocha.d.ts.map +1 -0
- package/dist/esm/mocha.js +135 -0
- package/dist/esm/mocha.js.map +6 -0
- package/dist/esm/mocharc.cjs +68 -0
- package/dist/esm/mocharc.d.cts +7 -0
- package/dist/esm/mocks/crypto.d.ts +7 -0
- package/dist/esm/mocks/crypto.d.ts.map +1 -0
- package/dist/esm/mocks/crypto.js +59 -0
- package/dist/esm/mocks/crypto.js.map +6 -0
- package/dist/esm/mocks/environment.d.ts +7 -0
- package/dist/esm/mocks/environment.d.ts.map +1 -0
- package/dist/esm/mocks/environment.js +6 -0
- package/dist/esm/mocks/environment.js.map +6 -0
- package/dist/esm/mocks/index.d.ts +10 -0
- package/dist/esm/mocks/index.d.ts.map +1 -0
- package/dist/esm/mocks/index.js +10 -0
- package/dist/esm/mocks/index.js.map +6 -0
- package/dist/esm/mocks/logging.d.ts +28 -0
- package/dist/esm/mocks/logging.d.ts.map +1 -0
- package/dist/esm/mocks/logging.js +63 -0
- package/dist/esm/mocks/logging.js.map +6 -0
- package/dist/esm/mocks/time.d.ts +88 -0
- package/dist/esm/mocks/time.d.ts.map +1 -0
- package/dist/esm/mocks/time.js +231 -0
- package/dist/esm/mocks/time.js.map +6 -0
- package/dist/esm/node.d.ts +9 -0
- package/dist/esm/node.d.ts.map +1 -0
- package/dist/esm/node.js +82 -0
- package/dist/esm/node.js.map +6 -0
- package/dist/esm/options.d.ts +19 -0
- package/dist/esm/options.d.ts.map +1 -0
- package/dist/esm/options.js +42 -0
- package/dist/esm/options.js.map +6 -0
- package/dist/esm/package.json +6 -0
- package/dist/esm/reporter.d.ts +50 -0
- package/dist/esm/reporter.d.ts.map +1 -0
- package/dist/esm/reporter.js +107 -0
- package/dist/esm/reporter.js.map +6 -0
- package/dist/esm/runner.d.ts +21 -0
- package/dist/esm/runner.d.ts.map +1 -0
- package/dist/esm/runner.js +83 -0
- package/dist/esm/runner.js.map +6 -0
- package/dist/esm/util/docker.d.ts +27 -0
- package/dist/esm/util/docker.d.ts.map +1 -0
- package/dist/esm/util/docker.js +133 -0
- package/dist/esm/util/docker.js.map +6 -0
- package/dist/esm/util/files.d.ts +7 -0
- package/dist/esm/util/files.d.ts.map +1 -0
- package/dist/esm/util/files.js +22 -0
- package/dist/esm/util/files.js.map +6 -0
- package/dist/esm/util/node-shims.d.ts +7 -0
- package/dist/esm/util/node-shims.d.ts.map +1 -0
- package/dist/esm/util/node-shims.js +11 -0
- package/dist/esm/util/node-shims.js.map +6 -0
- package/dist/esm/util/trace-unhandled.d.ts +9 -0
- package/dist/esm/util/trace-unhandled.d.ts.map +1 -0
- package/dist/esm/util/trace-unhandled.js +18 -0
- package/dist/esm/util/trace-unhandled.js.map +6 -0
- package/dist/esm/util/wtf.d.ts +10 -0
- package/dist/esm/util/wtf.d.ts.map +1 -0
- package/dist/esm/util/wtf.js +23 -0
- package/dist/esm/util/wtf.js.map +6 -0
- package/dist/esm/web.d.ts +8 -0
- package/dist/esm/web.d.ts.map +1 -0
- package/dist/esm/web.js +135 -0
- package/dist/esm/web.js.map +6 -0
- package/package.json +72 -0
- package/src/chip/pics-file.ts +71 -0
- package/src/chip/pics.properties +52 -0
- package/src/chip.ts +420 -0
- package/src/cli.ts +122 -0
- package/src/failure-detail.ts +126 -0
- package/src/global-declarations.ts +50 -0
- package/src/global-definitions.ts +35 -0
- package/src/index.html +16 -0
- package/src/index.ts +10 -0
- package/src/mocha.ts +162 -0
- package/src/mocharc.cjs +68 -0
- package/src/mocharc.d.cts +7 -0
- package/src/mocks/crypto.ts +70 -0
- package/src/mocks/environment.ts +7 -0
- package/src/mocks/index.ts +10 -0
- package/src/mocks/logging.ts +99 -0
- package/src/mocks/time.ts +295 -0
- package/src/node.ts +106 -0
- package/src/options.ts +58 -0
- package/src/reporter.ts +144 -0
- package/src/runner.ts +92 -0
- package/src/tsconfig.json +12 -0
- package/src/util/docker.ts +176 -0
- package/src/util/files.ts +25 -0
- package/src/util/node-shims.ts +13 -0
- package/src/util/trace-unhandled.ts +17 -0
- package/src/util/wtf.ts +25 -0
- package/src/web.ts +174 -0
- package/test/mocks/MockTimeTest.ts +113 -0
- package/test/tsconfig.json +18 -0
- package/tsconfig.json +5 -0
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var logging_exports = {};
|
|
30
|
+
__export(logging_exports, {
|
|
31
|
+
LoggerHooks: () => LoggerHooks,
|
|
32
|
+
TheMockLogger: () => TheMockLogger,
|
|
33
|
+
loggerSetup: () => loggerSetup
|
|
34
|
+
});
|
|
35
|
+
module.exports = __toCommonJS(logging_exports);
|
|
36
|
+
var import_ansi_colors = __toESM(require("ansi-colors"), 1);
|
|
37
|
+
/**
|
|
38
|
+
* @license
|
|
39
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
40
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
41
|
+
*/
|
|
42
|
+
const TheMockLogger = {
|
|
43
|
+
emitAll: false,
|
|
44
|
+
injectExternalMessage: (source, text) => console.log(formatExternalMessage(source, text))
|
|
45
|
+
};
|
|
46
|
+
function formatExternalMessage(source, text) {
|
|
47
|
+
return ` ${import_ansi_colors.default.bgCyan.black.bold(` ${source} `)} ${import_ansi_colors.default.dim(text)}`;
|
|
48
|
+
}
|
|
49
|
+
const LoggerHooks = {
|
|
50
|
+
beforeEach: Array(),
|
|
51
|
+
afterEach: Array()
|
|
52
|
+
};
|
|
53
|
+
function loggerSetup(Logger) {
|
|
54
|
+
Logger.format = "ansi";
|
|
55
|
+
let messageBuffer;
|
|
56
|
+
const defaultLog = Logger.log;
|
|
57
|
+
function passMessage(args) {
|
|
58
|
+
defaultLog.apply(Logger, args);
|
|
59
|
+
}
|
|
60
|
+
function interceptingLogger(...args) {
|
|
61
|
+
let emitAll = TheMockLogger.emitAll;
|
|
62
|
+
if (MatterHooks?.loggerSink) {
|
|
63
|
+
MatterHooks.loggerSink(...args);
|
|
64
|
+
} else if (!emitAll) {
|
|
65
|
+
if (messageBuffer) {
|
|
66
|
+
messageBuffer.push(args);
|
|
67
|
+
} else {
|
|
68
|
+
emitAll = true;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
if (emitAll) {
|
|
72
|
+
passMessage(args);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
TheMockLogger.injectExternalMessage = (source, text) => interceptingLogger(0, formatExternalMessage(source, text));
|
|
76
|
+
Logger.log = interceptingLogger;
|
|
77
|
+
LoggerHooks.beforeEach.push(function() {
|
|
78
|
+
if (!TheMockLogger.emitAll) {
|
|
79
|
+
messageBuffer = [];
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
LoggerHooks.afterEach.push((mocha) => {
|
|
83
|
+
if (messageBuffer?.length) {
|
|
84
|
+
if (mocha.suite.ctx.currentTest?.isFailed()) {
|
|
85
|
+
for (const args of messageBuffer) {
|
|
86
|
+
passMessage(args);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
messageBuffer = void 0;
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=logging.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/mocks/logging.ts"],
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,yBAAmB;AANnB;AAAA;AAAA;AAAA;AAAA;AAkBO,MAAM,gBAA4B;AAAA,EACrC,SAAS;AAAA,EACT,uBAAuB,CAAC,QAAgB,SAAiB,QAAQ,IAAI,sBAAsB,QAAQ,IAAI,CAAC;AAC5G;AAEA,SAAS,sBAAsB,QAAgB,MAAc;AACzD,SAAO,OAAO,mBAAAA,QAAO,OAAO,MAAM,KAAK,IAAI,MAAM,GAAG,CAAC,IAAI,mBAAAA,QAAO,IAAI,IAAI,CAAC;AAC7E;AASO,MAAM,cAAc;AAAA,EACvB,YAAY,MAA8B;AAAA,EAC1C,WAAW,MAA8B;AAC7C;AAEO,SAAS,YAAY,QAAoB;AAU5C,SAAO,SAAS;AAEhB,MAAI;AAEJ,QAAM,aAAa,OAAO;AAE1B,WAAS,YAAY,MAAwB;AACzC,eAAW,MAAM,QAAQ,IAAI;AAAA,EACjC;AAEA,WAAS,sBAAsB,MAAwB;AACnD,QAAI,UAAU,cAAc;AAC5B,QAAI,aAAa,YAAY;AACzB,kBAAY,WAAW,GAAG,IAAI;AAAA,IAClC,WAAW,CAAC,SAAS;AACjB,UAAI,eAAe;AACf,sBAAc,KAAK,IAAI;AAAA,MAC3B,OAAO;AACH,kBAAU;AAAA,MACd;AAAA,IACJ;AAEA,QAAI,SAAS;AACT,kBAAY,IAAI;AAAA,IACpB;AAAA,EACJ;AAEA,gBAAc,wBAAwB,CAAC,QAAQ,SAAS,mBAAmB,GAAG,sBAAsB,QAAQ,IAAI,CAAC;AAEjH,SAAO,MAAM;AAGb,cAAY,WAAW,KAAK,WAAY;AACpC,QAAI,CAAC,cAAc,SAAS;AACxB,sBAAgB,CAAC;AAAA,IACrB;AAAA,EACJ,CAAC;AAGD,cAAY,UAAU,KAAK,WAAS;AAChC,QAAI,eAAe,QAAQ;AACvB,UAAI,MAAM,MAAM,IAAI,aAAa,SAAS,GAAG;AACzC,mBAAW,QAAQ,eAAe;AAC9B,sBAAY,IAAI;AAAA,QACpB;AAAA,MACJ;AACA,sBAAgB;AAAA,IACpB;AAAA,EACJ,CAAC;AACL;",
|
|
5
|
+
"names": ["colors"]
|
|
6
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
type TimerCallback = () => any;
|
|
7
|
+
type MockTimeLike = typeof MockTime;
|
|
8
|
+
export interface MockTime extends MockTimeLike {
|
|
9
|
+
}
|
|
10
|
+
declare class MockTimer {
|
|
11
|
+
private readonly mockTime;
|
|
12
|
+
private readonly durationMs;
|
|
13
|
+
name: string;
|
|
14
|
+
systemId: number;
|
|
15
|
+
intervalMs: number;
|
|
16
|
+
isPeriodic: boolean;
|
|
17
|
+
isRunning: boolean;
|
|
18
|
+
private readonly callback;
|
|
19
|
+
constructor(mockTime: MockTime, durationMs: number, callback: TimerCallback);
|
|
20
|
+
start(): this;
|
|
21
|
+
stop(): this;
|
|
22
|
+
}
|
|
23
|
+
type InterceptResult<T> = T extends Promise<T> ? {
|
|
24
|
+
resolve: Awaited<T>;
|
|
25
|
+
reject?: undefined;
|
|
26
|
+
} | {
|
|
27
|
+
resolve?: undefined;
|
|
28
|
+
reject: {};
|
|
29
|
+
} : {
|
|
30
|
+
resolve: T;
|
|
31
|
+
reject?: undefined;
|
|
32
|
+
} | {
|
|
33
|
+
resolve?: void;
|
|
34
|
+
reject: {};
|
|
35
|
+
};
|
|
36
|
+
export declare const MockTime: {
|
|
37
|
+
readonly activeImplementation: unknown;
|
|
38
|
+
disable(): void;
|
|
39
|
+
enable(): void;
|
|
40
|
+
reset(time?: number): void;
|
|
41
|
+
now(): Date;
|
|
42
|
+
nowMs(): number;
|
|
43
|
+
getTimer(_name: string, durationMs: number, callback: TimerCallback): MockTimer;
|
|
44
|
+
getPeriodicTimer(_name: string, intervalMs: number, callback: TimerCallback): MockTimer;
|
|
45
|
+
/**
|
|
46
|
+
* Resolve a promise with time dependency.
|
|
47
|
+
*
|
|
48
|
+
* Moves time forward until the promise resolves.
|
|
49
|
+
*/
|
|
50
|
+
resolve<T>(promise: PromiseLike<T>): Promise<T>;
|
|
51
|
+
/**
|
|
52
|
+
* Move time forward. Runs tasks scheduled during this interval.
|
|
53
|
+
*/
|
|
54
|
+
advance(ms: number): Promise<void>;
|
|
55
|
+
/**
|
|
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.
|
|
59
|
+
*/
|
|
60
|
+
yield(): Promise<void>;
|
|
61
|
+
/**
|
|
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.
|
|
65
|
+
*
|
|
66
|
+
* To make this clear, the version of yield() that emulates old behavior
|
|
67
|
+
* is called "yield3".
|
|
68
|
+
*/
|
|
69
|
+
yield3(): Promise<void>;
|
|
70
|
+
/**
|
|
71
|
+
* Hook a method and invoke a callback just before the method completes.
|
|
72
|
+
* Unhooks after completion.
|
|
73
|
+
*
|
|
74
|
+
* Handles both synchronous and asynchronous methods. The interceptor
|
|
75
|
+
* should match the async-ness of the intercepted method.
|
|
76
|
+
*
|
|
77
|
+
* The interceptor can optionally access and/or replace the resolve/reject
|
|
78
|
+
* value.
|
|
79
|
+
*/
|
|
80
|
+
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;
|
|
81
|
+
callbackAtTime(atMs: number, callback: TimerCallback): void;
|
|
82
|
+
removeCallback(callbackToRemove: TimerCallback): void;
|
|
83
|
+
};
|
|
84
|
+
export declare function timeSetup(Time: {
|
|
85
|
+
get(): unknown;
|
|
86
|
+
}): void;
|
|
87
|
+
export {};
|
|
88
|
+
//# sourceMappingURL=time.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../../src/mocks/time.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,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;;;;;WAuBV,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,CAAU,IAAL,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;yBA2CvE,MAAM,YAAY,aAAa;qCAKnB,aAAa;CAKjD,CAAC;AAIF,wBAAgB,SAAS,CAAC,IAAI,EAAE;IAAE,GAAG,IAAI,OAAO,CAAA;CAAE,QAKjD"}
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var time_exports = {};
|
|
20
|
+
__export(time_exports, {
|
|
21
|
+
MockTime: () => MockTime,
|
|
22
|
+
timeSetup: () => timeSetup
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(time_exports);
|
|
25
|
+
/**
|
|
26
|
+
* @license
|
|
27
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
28
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
29
|
+
*/
|
|
30
|
+
class MockTimer {
|
|
31
|
+
constructor(mockTime, durationMs, callback) {
|
|
32
|
+
this.mockTime = mockTime;
|
|
33
|
+
this.durationMs = durationMs;
|
|
34
|
+
if (this instanceof MockInterval) {
|
|
35
|
+
this.callback = callback;
|
|
36
|
+
} else {
|
|
37
|
+
this.callback = () => {
|
|
38
|
+
this.isRunning = false;
|
|
39
|
+
callback();
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
name = "Test";
|
|
44
|
+
systemId = 0;
|
|
45
|
+
intervalMs = 0;
|
|
46
|
+
isPeriodic = false;
|
|
47
|
+
isRunning = false;
|
|
48
|
+
callback;
|
|
49
|
+
start() {
|
|
50
|
+
this.mockTime.callbackAtTime(this.mockTime.nowMs() + this.durationMs, this.callback);
|
|
51
|
+
this.isRunning = true;
|
|
52
|
+
return this;
|
|
53
|
+
}
|
|
54
|
+
stop() {
|
|
55
|
+
this.mockTime.removeCallback(this.callback);
|
|
56
|
+
this.isRunning = false;
|
|
57
|
+
return this;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
class MockInterval extends MockTimer {
|
|
61
|
+
constructor(mockTime, durationMs, callback) {
|
|
62
|
+
const intervalCallback = async () => {
|
|
63
|
+
mockTime.callbackAtTime(mockTime.nowMs() + durationMs, intervalCallback);
|
|
64
|
+
await callback();
|
|
65
|
+
};
|
|
66
|
+
super(mockTime, durationMs, intervalCallback);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
function isAsync(fn) {
|
|
70
|
+
return fn.constructor.name === "AsyncFunction";
|
|
71
|
+
}
|
|
72
|
+
let callbacks = new Array();
|
|
73
|
+
let nowMs = 0;
|
|
74
|
+
let real = void 0;
|
|
75
|
+
let enabled = true;
|
|
76
|
+
const MockTime = {
|
|
77
|
+
get activeImplementation() {
|
|
78
|
+
return enabled ? this : real ?? this;
|
|
79
|
+
},
|
|
80
|
+
disable() {
|
|
81
|
+
enabled = false;
|
|
82
|
+
reinstallTime?.();
|
|
83
|
+
},
|
|
84
|
+
enable() {
|
|
85
|
+
enabled = true;
|
|
86
|
+
reinstallTime?.();
|
|
87
|
+
},
|
|
88
|
+
reset(time = 0) {
|
|
89
|
+
callbacks = [];
|
|
90
|
+
nowMs = time;
|
|
91
|
+
reinstallTime?.();
|
|
92
|
+
},
|
|
93
|
+
now() {
|
|
94
|
+
return new Date(nowMs);
|
|
95
|
+
},
|
|
96
|
+
nowMs() {
|
|
97
|
+
return nowMs;
|
|
98
|
+
},
|
|
99
|
+
getTimer(_name, durationMs, callback) {
|
|
100
|
+
return new MockTimer(this, durationMs, callback);
|
|
101
|
+
},
|
|
102
|
+
getPeriodicTimer(_name, intervalMs, callback) {
|
|
103
|
+
return new MockInterval(this, intervalMs, callback);
|
|
104
|
+
},
|
|
105
|
+
/**
|
|
106
|
+
* Resolve a promise with time dependency.
|
|
107
|
+
*
|
|
108
|
+
* Moves time forward until the promise resolves.
|
|
109
|
+
*/
|
|
110
|
+
async resolve(promise) {
|
|
111
|
+
let resolved = false;
|
|
112
|
+
let result;
|
|
113
|
+
let error;
|
|
114
|
+
promise.then(
|
|
115
|
+
(r) => {
|
|
116
|
+
resolved = true;
|
|
117
|
+
result = r;
|
|
118
|
+
},
|
|
119
|
+
(e) => {
|
|
120
|
+
resolved = true;
|
|
121
|
+
error = e;
|
|
122
|
+
}
|
|
123
|
+
);
|
|
124
|
+
let timeAdvanced = 0;
|
|
125
|
+
while (!resolved) {
|
|
126
|
+
await new Promise((resolve) => setTimeout(() => resolve(), 0));
|
|
127
|
+
if (resolved) {
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
if (timeAdvanced > 60 * 60 * 1e3) {
|
|
131
|
+
throw new Error(
|
|
132
|
+
"Mock timeout: Promise did not resolve within one (virtual) hour, probably not going to happen"
|
|
133
|
+
);
|
|
134
|
+
}
|
|
135
|
+
await this.advance(1e3);
|
|
136
|
+
timeAdvanced += 1e3;
|
|
137
|
+
if (resolved) {
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
140
|
+
await this.yield();
|
|
141
|
+
}
|
|
142
|
+
if (error !== void 0) {
|
|
143
|
+
throw error;
|
|
144
|
+
}
|
|
145
|
+
return result;
|
|
146
|
+
},
|
|
147
|
+
/**
|
|
148
|
+
* Move time forward. Runs tasks scheduled during this interval.
|
|
149
|
+
*/
|
|
150
|
+
async advance(ms) {
|
|
151
|
+
const newTimeMs = nowMs + ms;
|
|
152
|
+
while (true) {
|
|
153
|
+
if (callbacks.length === 0) break;
|
|
154
|
+
const { atMs, callback } = callbacks[0];
|
|
155
|
+
if (atMs > newTimeMs) break;
|
|
156
|
+
callbacks.shift();
|
|
157
|
+
nowMs = atMs;
|
|
158
|
+
await callback();
|
|
159
|
+
}
|
|
160
|
+
nowMs = newTimeMs;
|
|
161
|
+
},
|
|
162
|
+
/**
|
|
163
|
+
* Yield to scheduled microtasks. This means that all code paths waiting
|
|
164
|
+
* on resolved promises (including await) will proceed before this method
|
|
165
|
+
* returns.
|
|
166
|
+
*/
|
|
167
|
+
async yield() {
|
|
168
|
+
await Promise.resolve();
|
|
169
|
+
},
|
|
170
|
+
/**
|
|
171
|
+
* Due to its implementation, an older version of yield() would actually
|
|
172
|
+
* yield to microtasks three times. Our tests then depended on this
|
|
173
|
+
* functionality -- one yield could trigger up to three nested awaits.
|
|
174
|
+
*
|
|
175
|
+
* To make this clear, the version of yield() that emulates old behavior
|
|
176
|
+
* is called "yield3".
|
|
177
|
+
*/
|
|
178
|
+
async yield3() {
|
|
179
|
+
await Promise.resolve();
|
|
180
|
+
await Promise.resolve();
|
|
181
|
+
await Promise.resolve();
|
|
182
|
+
},
|
|
183
|
+
/**
|
|
184
|
+
* Hook a method and invoke a callback just before the method completes.
|
|
185
|
+
* Unhooks after completion.
|
|
186
|
+
*
|
|
187
|
+
* Handles both synchronous and asynchronous methods. The interceptor
|
|
188
|
+
* should match the async-ness of the intercepted method.
|
|
189
|
+
*
|
|
190
|
+
* The interceptor can optionally access and/or replace the resolve/reject
|
|
191
|
+
* value.
|
|
192
|
+
*/
|
|
193
|
+
interceptOnce(obj, method, interceptor) {
|
|
194
|
+
const original = obj[method];
|
|
195
|
+
if (!original) {
|
|
196
|
+
throw new Error(`Interception method ${method} is not present`);
|
|
197
|
+
}
|
|
198
|
+
let result;
|
|
199
|
+
if (isAsync(interceptor)) {
|
|
200
|
+
obj[method] = async function(...args) {
|
|
201
|
+
try {
|
|
202
|
+
const resolve = await original.apply(this, args);
|
|
203
|
+
result = { resolve };
|
|
204
|
+
} catch (reject) {
|
|
205
|
+
result = { reject };
|
|
206
|
+
} finally {
|
|
207
|
+
obj[method] = original;
|
|
208
|
+
}
|
|
209
|
+
result = await interceptor(result) ?? result;
|
|
210
|
+
if (result.reject) {
|
|
211
|
+
throw result.reject;
|
|
212
|
+
}
|
|
213
|
+
return result.resolve;
|
|
214
|
+
};
|
|
215
|
+
} else {
|
|
216
|
+
obj[method] = function(...args) {
|
|
217
|
+
try {
|
|
218
|
+
const resolve = original.apply(this, args);
|
|
219
|
+
result = { resolve };
|
|
220
|
+
} catch (reject) {
|
|
221
|
+
result = { reject };
|
|
222
|
+
} finally {
|
|
223
|
+
obj[method] = original;
|
|
224
|
+
}
|
|
225
|
+
result = interceptor(result) ?? result;
|
|
226
|
+
if (result.reject) {
|
|
227
|
+
throw result.reject;
|
|
228
|
+
}
|
|
229
|
+
return result.resolve;
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
},
|
|
233
|
+
callbackAtTime(atMs, callback) {
|
|
234
|
+
callbacks.push({ atMs, callback });
|
|
235
|
+
callbacks.sort(({ atMs: atMsA }, { atMs: atMsB }) => atMsA - atMsB);
|
|
236
|
+
},
|
|
237
|
+
removeCallback(callbackToRemove) {
|
|
238
|
+
const index = callbacks.findIndex(({ callback }) => callbackToRemove === callback);
|
|
239
|
+
if (index === -1) return;
|
|
240
|
+
callbacks.splice(index, 1);
|
|
241
|
+
}
|
|
242
|
+
};
|
|
243
|
+
let reinstallTime;
|
|
244
|
+
function timeSetup(Time) {
|
|
245
|
+
real = Time.get();
|
|
246
|
+
MockTime.sleep = real.sleep;
|
|
247
|
+
reinstallTime = () => Time.get = () => MockTime.activeImplementation;
|
|
248
|
+
reinstallTime();
|
|
249
|
+
}
|
|
250
|
+
Object.assign(globalThis, { MockTime });
|
|
251
|
+
//# sourceMappingURL=time.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/mocks/time.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { TestRunner } from "./runner.js";
|
|
7
|
+
import "./global-definitions.js";
|
|
8
|
+
export declare function testNode(runner: TestRunner, format: "cjs" | "esm"): Promise<void>;
|
|
9
|
+
//# sourceMappingURL=node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/node.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAI9C,OAAO,yBAAyB,CAAC;AAEjC,wBAAsB,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,GAAG,KAAK,iBA+CvE"}
|
package/dist/cjs/node.js
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var node_exports = {};
|
|
30
|
+
__export(node_exports, {
|
|
31
|
+
testNode: () => testNode
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(node_exports);
|
|
34
|
+
var import_promises = require("fs/promises");
|
|
35
|
+
var import_mocha = __toESM(require("mocha"), 1);
|
|
36
|
+
var import_path = require("path");
|
|
37
|
+
var import_mocha2 = require("./mocha.js");
|
|
38
|
+
var import_options = require("./options.js");
|
|
39
|
+
var import_failure_detail = require("./failure-detail.js");
|
|
40
|
+
var import_global_definitions = require("./global-definitions.js");
|
|
41
|
+
/**
|
|
42
|
+
* @license
|
|
43
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
44
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
45
|
+
*/
|
|
46
|
+
async function testNode(runner, format) {
|
|
47
|
+
process.on("unhandledRejection", (e) => {
|
|
48
|
+
if (process.listenerCount("unhandledRejection") === 1) {
|
|
49
|
+
const error = new Error("Unhandled rejection (ignored by mocha)");
|
|
50
|
+
error.cause = e;
|
|
51
|
+
runner.reporter.failRun((0, import_failure_detail.FailureDetail)(error));
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
const mocha = new import_mocha.default({
|
|
55
|
+
inlineDiffs: true,
|
|
56
|
+
reporter: (0, import_mocha2.adaptReporter)(import_mocha.default, format.toUpperCase(), runner.reporter)
|
|
57
|
+
});
|
|
58
|
+
(0, import_mocha2.generalSetup)(mocha);
|
|
59
|
+
import_options.TestOptions.apply(mocha, runner.options);
|
|
60
|
+
const files = await runner.loadFiles(format);
|
|
61
|
+
files.forEach((path) => {
|
|
62
|
+
path = (0, import_path.relative)(process.cwd(), path);
|
|
63
|
+
if (path[0] !== ".") {
|
|
64
|
+
path = `./${path}`;
|
|
65
|
+
}
|
|
66
|
+
mocha.addFile(path);
|
|
67
|
+
});
|
|
68
|
+
await mocha.loadFilesAsync();
|
|
69
|
+
const profiler = new Profiler();
|
|
70
|
+
if (runner.options.profile) {
|
|
71
|
+
await profiler.start();
|
|
72
|
+
}
|
|
73
|
+
await new Promise((resolve) => {
|
|
74
|
+
const runner2 = mocha.run(() => resolve(runner2));
|
|
75
|
+
});
|
|
76
|
+
if (runner.options.profile) {
|
|
77
|
+
await profiler.stop(runner.pkg.resolve("build/profiles"));
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
class Profiler {
|
|
81
|
+
#session;
|
|
82
|
+
async start() {
|
|
83
|
+
if (this.#session) {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
let Session;
|
|
87
|
+
try {
|
|
88
|
+
Session = (await import("inspector/promises")).Session;
|
|
89
|
+
} catch (e) {
|
|
90
|
+
console.error(`We don't support profiling on this version of Node.js: ${e}`);
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
this.#session = new Session();
|
|
94
|
+
this.#session.connect();
|
|
95
|
+
await this.#session.post("Profiler.enable");
|
|
96
|
+
await this.#session.post("Profiler.start");
|
|
97
|
+
}
|
|
98
|
+
async stop(outputDir) {
|
|
99
|
+
if (!this.#session) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
const { profile } = await this.#session.post("Profiler.stop");
|
|
103
|
+
await this.#session.post("Profiler.disable");
|
|
104
|
+
await (0, import_promises.mkdir)(outputDir, { recursive: true });
|
|
105
|
+
await (0, import_promises.writeFile)(
|
|
106
|
+
`${outputDir}/test-${(/* @__PURE__ */ new Date()).toISOString().slice(0, 19)}.cpuprofile`,
|
|
107
|
+
JSON.stringify(profile)
|
|
108
|
+
);
|
|
109
|
+
this.#session = void 0;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=node.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/node.ts"],
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,sBAAiC;AAEjC,mBAAkB;AAClB,kBAAyB;AACzB,IAAAA,gBAA4C;AAC5C,qBAA4B;AAI5B,4BAA8B;AAC9B,gCAAO;AAhBP;AAAA;AAAA;AAAA;AAAA;AAkBA,eAAsB,SAAS,QAAoB,QAAuB;AAOtE,UAAQ,GAAG,sBAAsB,OAAK;AAClC,QAAI,QAAQ,cAAc,oBAAoB,MAAM,GAAG;AACnD,YAAM,QAAQ,IAAI,MAAM,wCAAwC;AAChE,YAAM,QAAQ;AACd,aAAO,SAAS,YAAQ,qCAAc,KAAK,CAAC;AAAA,IAChD;AAAA,EACJ,CAAC;AAED,QAAM,QAAQ,IAAI,aAAAC,QAAM;AAAA,IACpB,aAAa;AAAA,IACb,cAAU,6BAAc,aAAAA,SAAO,OAAO,YAAY,GAAG,OAAO,QAAQ;AAAA,EACxE,CAAC;AAED,kCAAa,KAAK;AAElB,6BAAY,MAAM,OAAO,OAAO,OAAO;AAEvC,QAAM,QAAQ,MAAM,OAAO,UAAU,MAAM;AAC3C,QAAM,QAAQ,UAAQ;AAClB,eAAO,sBAAS,QAAQ,IAAI,GAAG,IAAI;AACnC,QAAI,KAAK,CAAC,MAAM,KAAK;AACjB,aAAO,KAAK,IAAI;AAAA,IACpB;AACA,UAAM,QAAQ,IAAI;AAAA,EACtB,CAAC;AAED,QAAM,MAAM,eAAe;AAE3B,QAAM,WAAW,IAAI,SAAS;AAC9B,MAAI,OAAO,QAAQ,SAAS;AACxB,UAAM,SAAS,MAAM;AAAA,EACzB;AAEA,QAAM,IAAI,QAAsB,aAAW;AACvC,UAAMC,UAAS,MAAM,IAAI,MAAM,QAAQA,OAAM,CAAC;AAAA,EAClD,CAAC;AAED,MAAI,OAAO,QAAQ,SAAS;AACxB,UAAM,SAAS,KAAK,OAAO,IAAI,QAAQ,gBAAgB,CAAC;AAAA,EAC5D;AACJ;AAEA,MAAM,SAAS;AAAA,EACX;AAAA,EAEA,MAAM,QAAQ;AACV,QAAI,KAAK,UAAU;AACf;AAAA,IACJ;AAEA,QAAI;AACJ,QAAI;AACA,iBAAW,MAAM,OAAO,oBAAoB,GAAG;AAAA,IACnD,SAAS,GAAG;AACR,cAAQ,MAAM,0DAA0D,CAAC,EAAE;AAC3E;AAAA,IACJ;AAEA,SAAK,WAAW,IAAI,QAAQ;AAC5B,SAAK,SAAS,QAAQ;AACtB,UAAM,KAAK,SAAS,KAAK,iBAAiB;AAC1C,UAAM,KAAK,SAAS,KAAK,gBAAgB;AAAA,EAC7C;AAAA,EAEA,MAAM,KAAK,WAAmB;AAC1B,QAAI,CAAC,KAAK,UAAU;AAChB;AAAA,IACJ;AAEA,UAAM,EAAE,QAAQ,IAAI,MAAM,KAAK,SAAS,KAAK,eAAe;AAC5D,UAAM,KAAK,SAAS,KAAK,kBAAkB;AAE3C,cAAM,uBAAM,WAAW,EAAE,WAAW,KAAK,CAAC;AAC1C,cAAM;AAAA,MACF,GAAG,SAAS,UAAS,oBAAI,KAAK,GAAE,YAAY,EAAE,MAAM,GAAG,EAAE,CAAC;AAAA,MAC1D,KAAK,UAAU,OAAO;AAAA,IAC1B;AAEA,SAAK,WAAW;AAAA,EACpB;AACJ;",
|
|
5
|
+
"names": ["import_mocha", "Mocha", "runner"]
|
|
6
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
export type TestOptions = {
|
|
7
|
+
spec?: string | string[];
|
|
8
|
+
profile?: boolean;
|
|
9
|
+
grep?: string;
|
|
10
|
+
fgrep?: string;
|
|
11
|
+
invert?: boolean;
|
|
12
|
+
allLogs?: boolean;
|
|
13
|
+
wtf?: boolean;
|
|
14
|
+
debug?: boolean;
|
|
15
|
+
};
|
|
16
|
+
export declare namespace TestOptions {
|
|
17
|
+
function apply(mocha: Mocha, options: TestOptions): void;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=options.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/options.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,WAAW,GAAG;IACtB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAqBF,yBAAiB,WAAW,CAAC;IACzB,SAAgB,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,QAmBvD;CACJ"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var options_exports = {};
|
|
20
|
+
__export(options_exports, {
|
|
21
|
+
TestOptions: () => TestOptions
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(options_exports);
|
|
24
|
+
/**
|
|
25
|
+
* @license
|
|
26
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
27
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
28
|
+
*/
|
|
29
|
+
function option(options, name) {
|
|
30
|
+
if (options[name] !== void 0 && options[name] !== null) {
|
|
31
|
+
return options[name];
|
|
32
|
+
}
|
|
33
|
+
if (typeof process === "undefined") {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
return process.env?.["MATTER_" + name.match(/(.[^A-Z]+)/g)?.map((s) => s.toUpperCase()).join("_")];
|
|
37
|
+
}
|
|
38
|
+
var TestOptions;
|
|
39
|
+
((TestOptions2) => {
|
|
40
|
+
function apply(mocha, options) {
|
|
41
|
+
const grep = option(options, "grep");
|
|
42
|
+
if (grep) {
|
|
43
|
+
mocha.grep(grep);
|
|
44
|
+
}
|
|
45
|
+
const fgrep = option(options, "fgrep");
|
|
46
|
+
if (fgrep) {
|
|
47
|
+
mocha.fgrep(fgrep);
|
|
48
|
+
}
|
|
49
|
+
const invert = option(options, "invert");
|
|
50
|
+
if (invert) {
|
|
51
|
+
mocha.invert();
|
|
52
|
+
}
|
|
53
|
+
const allLogs = option(options, "allLogs");
|
|
54
|
+
if (allLogs) {
|
|
55
|
+
if (typeof MockLogger !== "undefined") {
|
|
56
|
+
MockLogger.emitAll = true;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
TestOptions2.apply = apply;
|
|
61
|
+
})(TestOptions || (TestOptions = {}));
|
|
62
|
+
//# sourceMappingURL=options.js.map
|