@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.
Files changed (226) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +40 -0
  3. package/bin/test.js +7 -0
  4. package/chip/Dockerfile +23 -0
  5. package/dist/cjs/chip/pics-file.d.ts +20 -0
  6. package/dist/cjs/chip/pics-file.d.ts.map +1 -0
  7. package/dist/cjs/chip/pics-file.js +79 -0
  8. package/dist/cjs/chip/pics-file.js.map +6 -0
  9. package/dist/cjs/chip.d.ts +60 -0
  10. package/dist/cjs/chip.d.ts.map +1 -0
  11. package/dist/cjs/chip.js +306 -0
  12. package/dist/cjs/chip.js.map +6 -0
  13. package/dist/cjs/cli.d.ts +9 -0
  14. package/dist/cjs/cli.d.ts.map +1 -0
  15. package/dist/cjs/cli.js +115 -0
  16. package/dist/cjs/cli.js.map +6 -0
  17. package/dist/cjs/failure-detail.d.ts +19 -0
  18. package/dist/cjs/failure-detail.d.ts.map +1 -0
  19. package/dist/cjs/failure-detail.js +143 -0
  20. package/dist/cjs/failure-detail.js.map +6 -0
  21. package/dist/cjs/global-declarations.d.ts +38 -0
  22. package/dist/cjs/global-declarations.d.ts.map +1 -0
  23. package/dist/cjs/global-declarations.js +8 -0
  24. package/dist/cjs/global-declarations.js.map +6 -0
  25. package/dist/cjs/global-definitions.d.ts +7 -0
  26. package/dist/cjs/global-definitions.d.ts.map +1 -0
  27. package/dist/cjs/global-definitions.js +50 -0
  28. package/dist/cjs/global-definitions.js.map +6 -0
  29. package/dist/cjs/index.d.ts +10 -0
  30. package/dist/cjs/index.d.ts.map +1 -0
  31. package/dist/cjs/index.js +27 -0
  32. package/dist/cjs/index.js.map +6 -0
  33. package/dist/cjs/mocha.d.ts +36 -0
  34. package/dist/cjs/mocha.d.ts.map +1 -0
  35. package/dist/cjs/mocha.js +155 -0
  36. package/dist/cjs/mocha.js.map +6 -0
  37. package/dist/cjs/mocharc.cjs +68 -0
  38. package/dist/cjs/mocharc.d.cts +7 -0
  39. package/dist/cjs/mocks/crypto.d.ts +7 -0
  40. package/dist/cjs/mocks/crypto.d.ts.map +1 -0
  41. package/dist/cjs/mocks/crypto.js +79 -0
  42. package/dist/cjs/mocks/crypto.js.map +6 -0
  43. package/dist/cjs/mocks/environment.d.ts +7 -0
  44. package/dist/cjs/mocks/environment.d.ts.map +1 -0
  45. package/dist/cjs/mocks/environment.js +7 -0
  46. package/dist/cjs/mocks/environment.js.map +6 -0
  47. package/dist/cjs/mocks/index.d.ts +10 -0
  48. package/dist/cjs/mocks/index.d.ts.map +1 -0
  49. package/dist/cjs/mocks/index.js +27 -0
  50. package/dist/cjs/mocks/index.js.map +6 -0
  51. package/dist/cjs/mocks/logging.d.ts +28 -0
  52. package/dist/cjs/mocks/logging.d.ts.map +1 -0
  53. package/dist/cjs/mocks/logging.js +93 -0
  54. package/dist/cjs/mocks/logging.js.map +6 -0
  55. package/dist/cjs/mocks/time.d.ts +88 -0
  56. package/dist/cjs/mocks/time.d.ts.map +1 -0
  57. package/dist/cjs/mocks/time.js +251 -0
  58. package/dist/cjs/mocks/time.js.map +6 -0
  59. package/dist/cjs/node.d.ts +9 -0
  60. package/dist/cjs/node.d.ts.map +1 -0
  61. package/dist/cjs/node.js +112 -0
  62. package/dist/cjs/node.js.map +6 -0
  63. package/dist/cjs/options.d.ts +19 -0
  64. package/dist/cjs/options.d.ts.map +1 -0
  65. package/dist/cjs/options.js +62 -0
  66. package/dist/cjs/options.js.map +6 -0
  67. package/dist/cjs/package.json +6 -0
  68. package/dist/cjs/reporter.d.ts +50 -0
  69. package/dist/cjs/reporter.d.ts.map +1 -0
  70. package/dist/cjs/reporter.js +137 -0
  71. package/dist/cjs/reporter.js.map +6 -0
  72. package/dist/cjs/runner.d.ts +21 -0
  73. package/dist/cjs/runner.d.ts.map +1 -0
  74. package/dist/cjs/runner.js +113 -0
  75. package/dist/cjs/runner.js.map +6 -0
  76. package/dist/cjs/util/docker.d.ts +27 -0
  77. package/dist/cjs/util/docker.d.ts.map +1 -0
  78. package/dist/cjs/util/docker.js +163 -0
  79. package/dist/cjs/util/docker.js.map +6 -0
  80. package/dist/cjs/util/files.d.ts +7 -0
  81. package/dist/cjs/util/files.d.ts.map +1 -0
  82. package/dist/cjs/util/files.js +42 -0
  83. package/dist/cjs/util/files.js.map +6 -0
  84. package/dist/cjs/util/node-shims.d.ts +7 -0
  85. package/dist/cjs/util/node-shims.d.ts.map +1 -0
  86. package/dist/cjs/util/node-shims.js +12 -0
  87. package/dist/cjs/util/node-shims.js.map +6 -0
  88. package/dist/cjs/util/trace-unhandled.d.ts +9 -0
  89. package/dist/cjs/util/trace-unhandled.d.ts.map +1 -0
  90. package/dist/cjs/util/trace-unhandled.js +48 -0
  91. package/dist/cjs/util/trace-unhandled.js.map +6 -0
  92. package/dist/cjs/util/wtf.d.ts +10 -0
  93. package/dist/cjs/util/wtf.d.ts.map +1 -0
  94. package/dist/cjs/util/wtf.js +53 -0
  95. package/dist/cjs/util/wtf.js.map +6 -0
  96. package/dist/cjs/web.d.ts +8 -0
  97. package/dist/cjs/web.d.ts.map +1 -0
  98. package/dist/cjs/web.js +165 -0
  99. package/dist/cjs/web.js.map +6 -0
  100. package/dist/esm/chip/pics-file.d.ts +20 -0
  101. package/dist/esm/chip/pics-file.d.ts.map +1 -0
  102. package/dist/esm/chip/pics-file.js +59 -0
  103. package/dist/esm/chip/pics-file.js.map +6 -0
  104. package/dist/esm/chip.d.ts +60 -0
  105. package/dist/esm/chip.d.ts.map +1 -0
  106. package/dist/esm/chip.js +286 -0
  107. package/dist/esm/chip.js.map +6 -0
  108. package/dist/esm/cli.d.ts +9 -0
  109. package/dist/esm/cli.d.ts.map +1 -0
  110. package/dist/esm/cli.js +85 -0
  111. package/dist/esm/cli.js.map +6 -0
  112. package/dist/esm/failure-detail.d.ts +19 -0
  113. package/dist/esm/failure-detail.d.ts.map +1 -0
  114. package/dist/esm/failure-detail.js +113 -0
  115. package/dist/esm/failure-detail.js.map +6 -0
  116. package/dist/esm/global-declarations.d.ts +38 -0
  117. package/dist/esm/global-declarations.d.ts.map +1 -0
  118. package/dist/esm/global-declarations.js +7 -0
  119. package/dist/esm/global-declarations.js.map +6 -0
  120. package/dist/esm/global-definitions.d.ts +7 -0
  121. package/dist/esm/global-definitions.d.ts.map +1 -0
  122. package/dist/esm/global-definitions.js +27 -0
  123. package/dist/esm/global-definitions.js.map +6 -0
  124. package/dist/esm/index.d.ts +10 -0
  125. package/dist/esm/index.d.ts.map +1 -0
  126. package/dist/esm/index.js +10 -0
  127. package/dist/esm/index.js.map +6 -0
  128. package/dist/esm/mocha.d.ts +36 -0
  129. package/dist/esm/mocha.d.ts.map +1 -0
  130. package/dist/esm/mocha.js +135 -0
  131. package/dist/esm/mocha.js.map +6 -0
  132. package/dist/esm/mocharc.cjs +68 -0
  133. package/dist/esm/mocharc.d.cts +7 -0
  134. package/dist/esm/mocks/crypto.d.ts +7 -0
  135. package/dist/esm/mocks/crypto.d.ts.map +1 -0
  136. package/dist/esm/mocks/crypto.js +59 -0
  137. package/dist/esm/mocks/crypto.js.map +6 -0
  138. package/dist/esm/mocks/environment.d.ts +7 -0
  139. package/dist/esm/mocks/environment.d.ts.map +1 -0
  140. package/dist/esm/mocks/environment.js +6 -0
  141. package/dist/esm/mocks/environment.js.map +6 -0
  142. package/dist/esm/mocks/index.d.ts +10 -0
  143. package/dist/esm/mocks/index.d.ts.map +1 -0
  144. package/dist/esm/mocks/index.js +10 -0
  145. package/dist/esm/mocks/index.js.map +6 -0
  146. package/dist/esm/mocks/logging.d.ts +28 -0
  147. package/dist/esm/mocks/logging.d.ts.map +1 -0
  148. package/dist/esm/mocks/logging.js +63 -0
  149. package/dist/esm/mocks/logging.js.map +6 -0
  150. package/dist/esm/mocks/time.d.ts +88 -0
  151. package/dist/esm/mocks/time.d.ts.map +1 -0
  152. package/dist/esm/mocks/time.js +231 -0
  153. package/dist/esm/mocks/time.js.map +6 -0
  154. package/dist/esm/node.d.ts +9 -0
  155. package/dist/esm/node.d.ts.map +1 -0
  156. package/dist/esm/node.js +82 -0
  157. package/dist/esm/node.js.map +6 -0
  158. package/dist/esm/options.d.ts +19 -0
  159. package/dist/esm/options.d.ts.map +1 -0
  160. package/dist/esm/options.js +42 -0
  161. package/dist/esm/options.js.map +6 -0
  162. package/dist/esm/package.json +6 -0
  163. package/dist/esm/reporter.d.ts +50 -0
  164. package/dist/esm/reporter.d.ts.map +1 -0
  165. package/dist/esm/reporter.js +107 -0
  166. package/dist/esm/reporter.js.map +6 -0
  167. package/dist/esm/runner.d.ts +21 -0
  168. package/dist/esm/runner.d.ts.map +1 -0
  169. package/dist/esm/runner.js +83 -0
  170. package/dist/esm/runner.js.map +6 -0
  171. package/dist/esm/util/docker.d.ts +27 -0
  172. package/dist/esm/util/docker.d.ts.map +1 -0
  173. package/dist/esm/util/docker.js +133 -0
  174. package/dist/esm/util/docker.js.map +6 -0
  175. package/dist/esm/util/files.d.ts +7 -0
  176. package/dist/esm/util/files.d.ts.map +1 -0
  177. package/dist/esm/util/files.js +22 -0
  178. package/dist/esm/util/files.js.map +6 -0
  179. package/dist/esm/util/node-shims.d.ts +7 -0
  180. package/dist/esm/util/node-shims.d.ts.map +1 -0
  181. package/dist/esm/util/node-shims.js +11 -0
  182. package/dist/esm/util/node-shims.js.map +6 -0
  183. package/dist/esm/util/trace-unhandled.d.ts +9 -0
  184. package/dist/esm/util/trace-unhandled.d.ts.map +1 -0
  185. package/dist/esm/util/trace-unhandled.js +18 -0
  186. package/dist/esm/util/trace-unhandled.js.map +6 -0
  187. package/dist/esm/util/wtf.d.ts +10 -0
  188. package/dist/esm/util/wtf.d.ts.map +1 -0
  189. package/dist/esm/util/wtf.js +23 -0
  190. package/dist/esm/util/wtf.js.map +6 -0
  191. package/dist/esm/web.d.ts +8 -0
  192. package/dist/esm/web.d.ts.map +1 -0
  193. package/dist/esm/web.js +135 -0
  194. package/dist/esm/web.js.map +6 -0
  195. package/package.json +72 -0
  196. package/src/chip/pics-file.ts +71 -0
  197. package/src/chip/pics.properties +52 -0
  198. package/src/chip.ts +420 -0
  199. package/src/cli.ts +122 -0
  200. package/src/failure-detail.ts +126 -0
  201. package/src/global-declarations.ts +50 -0
  202. package/src/global-definitions.ts +35 -0
  203. package/src/index.html +16 -0
  204. package/src/index.ts +10 -0
  205. package/src/mocha.ts +162 -0
  206. package/src/mocharc.cjs +68 -0
  207. package/src/mocharc.d.cts +7 -0
  208. package/src/mocks/crypto.ts +70 -0
  209. package/src/mocks/environment.ts +7 -0
  210. package/src/mocks/index.ts +10 -0
  211. package/src/mocks/logging.ts +99 -0
  212. package/src/mocks/time.ts +295 -0
  213. package/src/node.ts +106 -0
  214. package/src/options.ts +58 -0
  215. package/src/reporter.ts +144 -0
  216. package/src/runner.ts +92 -0
  217. package/src/tsconfig.json +12 -0
  218. package/src/util/docker.ts +176 -0
  219. package/src/util/files.ts +25 -0
  220. package/src/util/node-shims.ts +13 -0
  221. package/src/util/trace-unhandled.ts +17 -0
  222. package/src/util/wtf.ts +25 -0
  223. package/src/web.ts +174 -0
  224. package/test/mocks/MockTimeTest.ts +113 -0
  225. package/test/tsconfig.json +18 -0
  226. package/tsconfig.json +5 -0
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import "./global-declarations.js";
7
+ export * from "./chip.js";
8
+ export * from "./mocharc.cjs";
9
+ export * from "./util/wtf.js";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,0BAA0B,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import "./global-declarations.js";
7
+ export * from "./chip.js";
8
+ export * from "./mocharc.cjs";
9
+ export * from "./util/wtf.js";
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/index.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,OAAO;AACP,cAAc;AACd,cAAc;AACd,cAAc;",
5
+ "names": []
6
+ }
@@ -0,0 +1,36 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type MochaType from "mocha";
7
+ import { Reporter } from "./reporter.js";
8
+ export declare function generalSetup(mocha: MochaType): void;
9
+ export declare function adaptReporter(Mocha: typeof MochaType, title: string, reporter: Reporter): {
10
+ new (runner: Mocha.Runner): {
11
+ readonly translatedStats: {
12
+ total: number;
13
+ complete: number;
14
+ failures: number;
15
+ };
16
+ stats: MochaType.Stats;
17
+ failures: MochaType.Test[];
18
+ runner: MochaType.Runner;
19
+ epilogue(): void;
20
+ done?(failures: number, fn?: ((failures: number) => void) | undefined): void;
21
+ };
22
+ consoleLog: (...data: any[]) => void;
23
+ color(type: string, str: string): string;
24
+ generateDiff(actual: string, expected: string): string;
25
+ list(failures: MochaType.Test[]): void;
26
+ useColors: boolean;
27
+ inlineDiffs: boolean;
28
+ readonly colors: MochaType.reporters.Base.ColorMap;
29
+ readonly symbols: MochaType.reporters.Base.SymbolMap;
30
+ readonly window: {
31
+ width: number;
32
+ };
33
+ cursor: typeof MochaType.reporters.Base.cursor;
34
+ };
35
+ export declare function browserSetup(mocha: BrowserMocha): void;
36
+ //# sourceMappingURL=mocha.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mocha.d.ts","sourceRoot":"","sources":["../../src/mocha.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,SAAS,MAAM,OAAO,CAAC;AAInC,OAAO,EAAwB,QAAQ,EAAE,MAAM,eAAe,CAAC;AAG/D,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,QAkE5C;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ;iBAM5D,KAAK,CAAC,MAAM;;;;;;;;;;;;iBA0EquiB,GAAG;;;;;;;;;;;;EA1B/wiB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,YAAY,QAuB/C"}
@@ -0,0 +1,135 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { FailureDetail } from "./failure-detail.js";
7
+ import { LoggerHooks } from "./mocks/logging.js";
8
+ import { TestOptions } from "./options.js";
9
+ import { ConsoleProxyReporter } from "./reporter.js";
10
+ import { wtf } from "./util/wtf.js";
11
+ function generalSetup(mocha) {
12
+ const Base = mocha.constructor.reporters.Base;
13
+ Base.colors["diff added inline"] = "97;42;48;5;22";
14
+ Base.colors["diff removed inline"] = "97;41;48;5;52";
15
+ async function onlyLogFailure(fn) {
16
+ if (!MatterHooks) {
17
+ throw new Error("Matter hooks not loaded");
18
+ }
19
+ const logs = Array();
20
+ const existingSink = MatterHooks.loggerSink;
21
+ try {
22
+ MatterHooks.loggerSink = (_, message) => {
23
+ logs.push(message);
24
+ };
25
+ return await fn();
26
+ } catch (e) {
27
+ process.stdout.write(logs.join("\n"));
28
+ throw e;
29
+ } finally {
30
+ MatterHooks.loggerSink = existingSink;
31
+ }
32
+ }
33
+ function filterLogs(hook) {
34
+ const actual = mocha.suite[hook];
35
+ mocha.suite[hook] = function(fn) {
36
+ return actual.call(this, async function(...args) {
37
+ return await onlyLogFailure(() => fn.apply(this, args));
38
+ });
39
+ };
40
+ }
41
+ filterLogs("beforeAll");
42
+ filterLogs("afterAll");
43
+ filterLogs("beforeEach");
44
+ filterLogs("afterEach");
45
+ const actualBeforeAll = mocha.suite.beforeAll;
46
+ mocha.suite.beforeAll = function(...args) {
47
+ MockTime.reset();
48
+ return actualBeforeAll.apply(this, args);
49
+ };
50
+ mocha.suite.beforeEach(() => {
51
+ for (const hook of LoggerHooks.beforeEach) {
52
+ hook(mocha);
53
+ }
54
+ });
55
+ mocha.suite.afterEach(() => {
56
+ for (const hook of LoggerHooks.afterEach) {
57
+ hook(mocha);
58
+ }
59
+ });
60
+ FailureDetail.diff = Base.generateDiff.bind(Base);
61
+ }
62
+ function adaptReporter(Mocha2, title, reporter) {
63
+ const RUNNER = Mocha2.Runner.constants;
64
+ let logs = Array();
65
+ class MochaReporter extends Mocha2.reporters.Base {
66
+ constructor(runner) {
67
+ super(runner);
68
+ runner.once(RUNNER.EVENT_RUN_BEGIN, () => {
69
+ if (!MatterHooks) {
70
+ throw new Error("Matter hooks not loaded");
71
+ }
72
+ MatterHooks.loggerSink = (_, message) => {
73
+ logs.push(message);
74
+ };
75
+ reporter.beginRun(title, this.translatedStats);
76
+ });
77
+ runner.on(RUNNER.EVENT_SUITE_BEGIN, (suite) => {
78
+ reporter.beginSuite(suite.titlePath(), this.translatedStats);
79
+ });
80
+ runner.on(RUNNER.EVENT_TEST_BEGIN, (test) => {
81
+ logs = test.logs = [];
82
+ reporter.beginTest(test.title, this.translatedStats);
83
+ });
84
+ runner.on(RUNNER.EVENT_TEST_FAIL, (test, error) => {
85
+ const logs2 = test.logs;
86
+ reporter.failTest(test.title, FailureDetail(error, logs2));
87
+ wtf.dump();
88
+ });
89
+ runner.once(RUNNER.EVENT_RUN_END, () => {
90
+ if (!MatterHooks) {
91
+ throw new Error("Matter hooks not loaded");
92
+ }
93
+ MatterHooks.loggerSink = void 0;
94
+ reporter.endRun(this.translatedStats);
95
+ wtf.dump();
96
+ });
97
+ }
98
+ get translatedStats() {
99
+ return {
100
+ total: this.runner.total,
101
+ complete: this.stats.tests,
102
+ failures: this.stats.failures
103
+ };
104
+ }
105
+ }
106
+ return MochaReporter;
107
+ }
108
+ function browserSetup(mocha) {
109
+ mocha.setup("bdd");
110
+ globalThis.MatterTest = {
111
+ // Starts Mocha (called by clicking link)
112
+ start: () => {
113
+ const root = document.querySelector("#mocha");
114
+ if (root) {
115
+ root.innerHTML = "";
116
+ }
117
+ return mocha.run();
118
+ },
119
+ // Start Mocha, proxying reporting through console to Playwright and completing once Mocha has finished
120
+ auto: async function(options) {
121
+ TestOptions.apply(mocha, options);
122
+ mocha.reporter(adaptReporter(Mocha, "Web", new ConsoleProxyReporter()));
123
+ return new Promise((accept) => {
124
+ const runner = this.start();
125
+ runner.on("end", accept);
126
+ });
127
+ }
128
+ };
129
+ }
130
+ export {
131
+ adaptReporter,
132
+ browserSetup,
133
+ generalSetup
134
+ };
135
+ //# sourceMappingURL=mocha.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/mocha.ts"],
4
+ "mappings": "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",
5
+ "names": ["Mocha", "logs"]
6
+ }
@@ -0,0 +1,68 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ // This file configures mocha for "buildless" dev execution. May be useful for running tests in IDE with Mocha support.
8
+ // Utilize by importing into .mocharc.cjs as a sibling of package.json in the package to test
9
+
10
+ // Required for Node < 19 (see node-shims.ts)
11
+ const webcrypto = require("node:crypto").webcrypto;
12
+ if (globalThis.crypto === undefined) {
13
+ Object.assign(globalThis, { crypto: webcrypto });
14
+ }
15
+
16
+ function mocharc(format = "cjs") {
17
+ const { resolve } = require("path");
18
+ const cli = require("mocha/lib/cli/cli");
19
+ const listSupportFiles = require("./util/files.js").listSupportFiles;
20
+
21
+ const TOOLS = resolve(__dirname, "../../../tools");
22
+
23
+ const testJs = `build/${format}/test`;
24
+ const defaultSpec = `${testJs}/**/*Test.js`;
25
+
26
+ // Build. Ideally we'd import build code but it's asynchronous and mocharc isn't. So instead build in a separate
27
+ // process
28
+ const spawnSync = require("child_process").spawnSync;
29
+ const result = spawnSync(`${TOOLS}/bin/build.js`, [format], { stdio: "inherit" });
30
+ if (result.error) {
31
+ console.error(result.error);
32
+ process.exit(-1);
33
+ }
34
+
35
+ // Hook Mocha so we can futz with args
36
+ const main = cli.main;
37
+ cli.main = function (argv, args) {
38
+ const spec = args._;
39
+
40
+ // Remove wildcard test selection if there's an input file
41
+ if (spec.length > 1 && spec[spec.length - 1] === defaultSpec) {
42
+ spec.length = spec.length - 1;
43
+ }
44
+
45
+ // Map input files to the compiled test
46
+ for (let i = 0; i < spec.length; i++) {
47
+ let path = spec[i];
48
+
49
+ // Convenience - map src/ file to test equivalent
50
+ path = path.replace(/src\/(.*)(\.[jt]s)/, "test/$1Test$2");
51
+
52
+ // Map ts files to compiled equivalent
53
+ path = path.replace(/test\/(.*)\.ts/, `${testJs}/$1.js`);
54
+
55
+ spec[i] = path;
56
+ }
57
+
58
+ main.call(this, argv, args);
59
+ };
60
+
61
+ return {
62
+ inlineDiffs: true,
63
+ file: listSupportFiles(format),
64
+ spec: [defaultSpec],
65
+ };
66
+ }
67
+
68
+ module.exports.mocharc = mocharc;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ export function mocharc(): any;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export declare function cryptoSetup(Crypto: any): void;
7
+ //# sourceMappingURL=crypto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../../src/mocks/crypto.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAwDH,wBAAgB,WAAW,CAAC,MAAM,EAAE,GAAG,QAStC"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ const subtle = globalThis.crypto.subtle;
7
+ const TheCrypto = {
8
+ getRandomData: (length) => {
9
+ const bytes = new Uint8Array(length);
10
+ return bytes;
11
+ },
12
+ async pbkdf2(secret, salt, iteration, keyLength) {
13
+ const key = await subtle.importKey("raw", secret, "PBKDF2", false, ["deriveBits"]);
14
+ const bits = await subtle.deriveBits(
15
+ {
16
+ name: "PBKDF2",
17
+ hash: "SHA-256",
18
+ salt,
19
+ iterations: iteration
20
+ },
21
+ key,
22
+ keyLength * 8
23
+ );
24
+ return new Uint8Array(bits);
25
+ },
26
+ async hkdf(secret, salt, info, length = 16) {
27
+ const key = await subtle.importKey("raw", secret, "HKDF", false, ["deriveBits"]);
28
+ return new Uint8Array(
29
+ await subtle.deriveBits(
30
+ {
31
+ name: "HKDF",
32
+ hash: "SHA-256",
33
+ salt,
34
+ info
35
+ },
36
+ key,
37
+ length
38
+ )
39
+ );
40
+ },
41
+ verify() {
42
+ return;
43
+ },
44
+ mock: true
45
+ };
46
+ function cryptoSetup(Crypto) {
47
+ try {
48
+ Crypto.get();
49
+ } catch (e) {
50
+ if (e.constructor.name !== "NoProviderError") {
51
+ throw e;
52
+ }
53
+ Crypto.get = () => TheCrypto;
54
+ }
55
+ }
56
+ export {
57
+ cryptoSetup
58
+ };
59
+ //# sourceMappingURL=crypto.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/mocks/crypto.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,MAAM,SAAS,WAAW,OAAO;AAOjC,MAAM,YAAY;AAAA,EACd,eAAe,CAAC,WAAmB;AAE/B,UAAM,QAAQ,IAAI,WAAW,MAAM;AAEnC,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,OAAO,QAAoB,MAAkB,WAAmB,WAAmB;AACrF,UAAM,MAAM,MAAM,OAAO,UAAU,OAAO,QAAQ,UAAU,OAAO,CAAC,YAAY,CAAC;AACjF,UAAM,OAAO,MAAM,OAAO;AAAA,MACtB;AAAA,QACI,MAAM;AAAA,QACN,MAAM;AAAA,QACN;AAAA,QACA,YAAY;AAAA,MAChB;AAAA,MACA;AAAA,MACA,YAAY;AAAA,IAChB;AACA,WAAO,IAAI,WAAW,IAAI;AAAA,EAC9B;AAAA,EAEA,MAAM,KAAK,QAAoB,MAAkB,MAAkB,SAAiB,IAAI;AACpF,UAAM,MAAM,MAAM,OAAO,UAAU,OAAO,QAAQ,QAAQ,OAAO,CAAC,YAAY,CAAC;AAC/E,WAAO,IAAI;AAAA,MACP,MAAM,OAAO;AAAA,QACT;AAAA,UACI,MAAM;AAAA,UACN,MAAM;AAAA,UACN;AAAA,UACA;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,SAAS;AAEL;AAAA,EACJ;AAAA,EAEA,MAAM;AACV;AAEO,SAAS,YAAY,QAAa;AACrC,MAAI;AACA,WAAO,IAAI;AAAA,EACf,SAAS,GAAG;AACR,QAAK,EAAY,YAAY,SAAS,mBAAmB;AACrD,YAAM;AAAA,IACV;AACA,WAAO,MAAM,MAAM;AAAA,EACvB;AACJ;",
5
+ "names": []
6
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=environment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../../src/mocks/environment.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ //# sourceMappingURL=environment.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/mocks/environment.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;",
5
+ "names": []
6
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import "./environment.js";
7
+ import "./logging.js";
8
+ export * from "./crypto.js";
9
+ export * from "./time.js";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mocks/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,kBAAkB,CAAC;AAC1B,OAAO,cAAc,CAAC;AACtB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import "./environment.js";
7
+ import "./logging.js";
8
+ export * from "./crypto.js";
9
+ export * from "./time.js";
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/mocks/index.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,OAAO;AACP,OAAO;AACP,cAAc;AACd,cAAc;",
5
+ "names": []
6
+ }
@@ -0,0 +1,28 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ interface LoggerLike {
7
+ format: string;
8
+ log(level: number, message: string): void;
9
+ }
10
+ export interface MockLogger {
11
+ emitAll: boolean;
12
+ injectExternalMessage: (source: string, text: string) => void;
13
+ }
14
+ export declare const TheMockLogger: MockLogger;
15
+ /**
16
+ * These functions are invoked by beforeEach/afterEach handlers in generalSetup for Mocha.
17
+ *
18
+ * We place them in an array here rather than calling the global hook functions so that load order doesn't matter. We
19
+ * use an array so that if multiple Logger classes are created (e.g. one for CJS and one for ESM) we don't have to worry
20
+ * about which logger is doing the logging.
21
+ */
22
+ export declare const LoggerHooks: {
23
+ beforeEach: ((mocha: Mocha) => void)[];
24
+ afterEach: ((mocha: Mocha) => void)[];
25
+ };
26
+ export declare function loggerSetup(Logger: LoggerLike): void;
27
+ export {};
28
+ //# sourceMappingURL=logging.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../../../src/mocks/logging.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,UAAU,UAAU;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7C;AAED,MAAM,WAAW,UAAU;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,qBAAqB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACjE;AAED,eAAO,MAAM,aAAa,EAAE,UAG3B,CAAC;AAMF;;;;;;GAMG;AACH,eAAO,MAAM,WAAW;yBACM,KAAK,KAAK,IAAI;wBACf,KAAK,KAAK,IAAI;CAC1C,CAAC;AAEF,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,QA2D7C"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import colors from "ansi-colors";
7
+ const TheMockLogger = {
8
+ emitAll: false,
9
+ injectExternalMessage: (source, text) => console.log(formatExternalMessage(source, text))
10
+ };
11
+ function formatExternalMessage(source, text) {
12
+ return ` ${colors.bgCyan.black.bold(` ${source} `)} ${colors.dim(text)}`;
13
+ }
14
+ const LoggerHooks = {
15
+ beforeEach: Array(),
16
+ afterEach: Array()
17
+ };
18
+ function loggerSetup(Logger) {
19
+ Logger.format = "ansi";
20
+ let messageBuffer;
21
+ const defaultLog = Logger.log;
22
+ function passMessage(args) {
23
+ defaultLog.apply(Logger, args);
24
+ }
25
+ function interceptingLogger(...args) {
26
+ let emitAll = TheMockLogger.emitAll;
27
+ if (MatterHooks?.loggerSink) {
28
+ MatterHooks.loggerSink(...args);
29
+ } else if (!emitAll) {
30
+ if (messageBuffer) {
31
+ messageBuffer.push(args);
32
+ } else {
33
+ emitAll = true;
34
+ }
35
+ }
36
+ if (emitAll) {
37
+ passMessage(args);
38
+ }
39
+ }
40
+ TheMockLogger.injectExternalMessage = (source, text) => interceptingLogger(0, formatExternalMessage(source, text));
41
+ Logger.log = interceptingLogger;
42
+ LoggerHooks.beforeEach.push(function() {
43
+ if (!TheMockLogger.emitAll) {
44
+ messageBuffer = [];
45
+ }
46
+ });
47
+ LoggerHooks.afterEach.push((mocha) => {
48
+ if (messageBuffer?.length) {
49
+ if (mocha.suite.ctx.currentTest?.isFailed()) {
50
+ for (const args of messageBuffer) {
51
+ passMessage(args);
52
+ }
53
+ }
54
+ messageBuffer = void 0;
55
+ }
56
+ });
57
+ }
58
+ export {
59
+ LoggerHooks,
60
+ TheMockLogger,
61
+ loggerSetup
62
+ };
63
+ //# 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;AAMA,OAAO,YAAY;AAYZ,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,OAAO,OAAO,MAAM,KAAK,IAAI,MAAM,GAAG,CAAC,IAAI,OAAO,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": []
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"}