@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,306 @@
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 chip_exports = {};
20
+ __export(chip_exports, {
21
+ Chip: () => Chip
22
+ });
23
+ module.exports = __toCommonJS(chip_exports);
24
+ var import_tools = require("#tools");
25
+ var import_path = require("path");
26
+ var import_pics_file = require("./chip/pics-file.js");
27
+ var import_docker = require("./util/docker.js");
28
+ /**
29
+ * @license
30
+ * Copyright 2022-2024 Matter.js Authors
31
+ * SPDX-License-Identifier: Apache-2.0
32
+ */
33
+ var Constants;
34
+ ((Constants2) => {
35
+ Constants2.chip = "/connectedhomeip";
36
+ Constants2.chipTool = `${Constants2.chip}/scripts/tests/chipyaml/chiptool.py`;
37
+ Constants2.yamlTests = `${Constants2.chip}/src/app/tests/suites/certification`;
38
+ Constants2.pythonTests = `${Constants2.chip}/src/python_testing`;
39
+ Constants2.python = ["/usr/bin/env", "-S", "python3", "-B"];
40
+ Constants2.pythonRunner = `${Constants2.chip}/scripts/tests/run_python_test.py`;
41
+ Constants2.pics = "/matter.js/packages/tools/build/pics.properties";
42
+ Constants2.chipPics = "/connectedhomeip/src/app/tests/suites/certification/ci-pics-values";
43
+ Constants2.buildTimeout = 6e5;
44
+ Constants2.defaultTimeout = 6e4;
45
+ Constants2.dockerBuildPath = "chip";
46
+ Constants2.dockerName = "matterjs-chip";
47
+ })(Constants || (Constants = {}));
48
+ const State = {
49
+ configured: false,
50
+ options: void 0,
51
+ docker: void 0,
52
+ yamlTests: Array(),
53
+ pythonTests: Array()
54
+ };
55
+ const Config = {
56
+ set options(options) {
57
+ State.options = options;
58
+ },
59
+ get runner() {
60
+ const runner = State.options?.runner;
61
+ if (runner === void 0) {
62
+ throw new Error("No test runner configured");
63
+ }
64
+ return runner;
65
+ },
66
+ async docker() {
67
+ if (State.docker) {
68
+ return State.docker;
69
+ }
70
+ const docker = new import_docker.Docker();
71
+ const { progress } = Config.runner;
72
+ await progress.run(
73
+ `Build ${progress.emphasize("CHIP image")}`,
74
+ () => docker.buildImage(Constants.dockerName, import_tools.Package.tools.resolve(Constants.dockerBuildPath))
75
+ );
76
+ State.docker = docker;
77
+ return docker;
78
+ }
79
+ };
80
+ const Chip = {
81
+ /**
82
+ * Configure CHIP testing. Invoke prior to use of other methods.
83
+ */
84
+ set config(config) {
85
+ Config.options = config;
86
+ },
87
+ /**
88
+ * Initialize. This must run before defining tests to enable test definition via globs.
89
+ */
90
+ async initialize() {
91
+ await initialize();
92
+ },
93
+ /**
94
+ * Define YAML tests. This is a declarative CHIP test defined in a YAML file.
95
+ */
96
+ yaml(testee, includeGlob, excludeGlob) {
97
+ let tests = filterWithGlob(State.yamlTests, includeGlob);
98
+ if (excludeGlob !== void 0) {
99
+ tests = filterWithGlob(tests, excludeGlob, true);
100
+ }
101
+ if (tests.length === 0) {
102
+ throw new Error(`YAML test glob ${includeGlob} matched no tests`);
103
+ }
104
+ for (const file of tests) {
105
+ implementTest(testee, {
106
+ name: (0, import_path.parse)(file).base,
107
+ command: [Constants.pythonRunner, file],
108
+ // TODO - complete argument set
109
+ args: {
110
+ "--pics-file": Constants.pics,
111
+ "--discriminator": "1234",
112
+ "--passcode": "20202021"
113
+ }
114
+ });
115
+ }
116
+ },
117
+ /**
118
+ * Define a "python" test. This is a CHIP test implemented as a python script.
119
+ */
120
+ python(testee, tester, excludeGlob) {
121
+ if (typeof tester === "string") {
122
+ tester = {
123
+ name: tester
124
+ };
125
+ } else {
126
+ tester = { ...tester };
127
+ }
128
+ tester.args = {
129
+ "--commissioning-method": "on-network",
130
+ "--PICS": Constants.pics,
131
+ "--discriminator": "1234",
132
+ "--passcode": "20202021",
133
+ ...tester.args
134
+ };
135
+ let files = filterWithGlob(State.pythonTests, tester.name, false);
136
+ if (excludeGlob !== void 0) {
137
+ files = filterWithGlob(files, excludeGlob, true);
138
+ }
139
+ if (files.length === 0) {
140
+ throw new Error(`Python test glob ${tester.name} matched no tests`);
141
+ }
142
+ for (const file of files) {
143
+ const name = (0, import_path.parse)(file).name;
144
+ implementTest(testee, { ...tester, name, command: [file] });
145
+ }
146
+ }
147
+ };
148
+ let containerInitializerInstalled = false;
149
+ function implementTest(testee, tester) {
150
+ if (!containerInitializerInstalled) {
151
+ containerInitializerInstalled = true;
152
+ before(async function() {
153
+ this.timeout(Constants.buildTimeout);
154
+ await initialize();
155
+ });
156
+ }
157
+ it(tester.description ?? tester.name, async () => {
158
+ await testee.setup();
159
+ await testee.start();
160
+ try {
161
+ await invokeTester(tester);
162
+ } finally {
163
+ try {
164
+ await testee.stop();
165
+ } catch (e) {
166
+ console.warn("Error stopping test subject", e);
167
+ }
168
+ }
169
+ }).timeout(tester.timeout ?? Constants.defaultTimeout);
170
+ }
171
+ async function invokeTester(tester) {
172
+ const docker = await Config.docker();
173
+ const args = Array();
174
+ if (tester.command) {
175
+ args.push(...tester.command);
176
+ }
177
+ if (tester.args) {
178
+ args.push(...Object.entries(tester.args).flat());
179
+ }
180
+ const output = docker.run(Constants.dockerName, {
181
+ args,
182
+ env: tester.environment,
183
+ binds: {
184
+ [import_tools.Package.workspace.path]: "/matter.js"
185
+ },
186
+ network: "host"
187
+ });
188
+ await translateTestOutput(Config.runner, output);
189
+ }
190
+ function deansify(text) {
191
+ return text.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, "");
192
+ }
193
+ async function translateTestOutput(runner, output) {
194
+ let testCount = 0;
195
+ let capture = Array();
196
+ let partial;
197
+ function reportFailures() {
198
+ let testName;
199
+ let testLogs;
200
+ for (const line of capture) {
201
+ const subtestBoundary = deansify(line).match(/\*{5} (Test Step \d+|Test Failure) : (.*)/);
202
+ if (subtestBoundary) {
203
+ if (subtestBoundary[1] === "Test Failure") {
204
+ if (testName === void 0) {
205
+ continue;
206
+ }
207
+ runner.reporter.failTest(testName, {
208
+ message: subtestBoundary[2],
209
+ logs: testLogs?.join("\n")
210
+ });
211
+ } else {
212
+ testName = subtestBoundary[2];
213
+ testLogs = [];
214
+ }
215
+ } else if (testLogs) {
216
+ const appOut = line.match(/^.* APP {2}OUT {2}: (.*)$/);
217
+ if (appOut) {
218
+ testLogs.push(appOut[1]);
219
+ continue;
220
+ }
221
+ const testOut = line.match(/(\d{4}-\d\d-\d\d) .*(\d\d:\d\d:\d\d\.\d\d\d) - TEST OUT {2}: (.*)$/);
222
+ if (testOut) {
223
+ if (deansify(testOut[3]).match(/^(?:✗ \d+.\d+ms$|\s+\d+\. Running )/)) {
224
+ continue;
225
+ }
226
+ const date = testOut[1];
227
+ const time = testOut[2];
228
+ const message = testOut[3].replace(" ", "").replace(/\t/g, " ");
229
+ testLogs.push(`CHIP ${date} ${time} ${message}`);
230
+ continue;
231
+ }
232
+ testLogs.push(line);
233
+ }
234
+ }
235
+ }
236
+ function processLine(line) {
237
+ MockLogger.injectExternalMessage("CHIP", line);
238
+ line = line.trim();
239
+ const plain = deansify(line);
240
+ const testBoundary = plain.match(
241
+ /^\d{4}-\d\d-\d\d \d\d:\d\d:\d\d\.\d{3} [A-Z ]{7} ([a-zA-Z0-9_]+)\s+- (Starting test|(?:Completed|FAILED) in \d+\.\d+ seconds)$/
242
+ );
243
+ if (testBoundary) {
244
+ if (testBoundary[2].startsWith("Start")) {
245
+ testCount++;
246
+ capture = [];
247
+ runner.reporter.beginRun(testBoundary[1], void 0, false);
248
+ } else if (testBoundary[2].startsWith("Completed")) {
249
+ runner.reporter.endRun();
250
+ } else {
251
+ reportFailures();
252
+ runner.reporter.endRun();
253
+ }
254
+ }
255
+ capture.push(line);
256
+ }
257
+ for await (const chunk of output) {
258
+ const lines = chunk.split("\n");
259
+ if (partial) {
260
+ lines[0] = partial + lines[0];
261
+ }
262
+ partial = lines.pop();
263
+ for (const line of lines) {
264
+ processLine(line);
265
+ }
266
+ }
267
+ if (partial !== void 0) {
268
+ processLine(partial);
269
+ }
270
+ }
271
+ async function initialize() {
272
+ if (State.configured) {
273
+ return;
274
+ }
275
+ await Config.docker();
276
+ await configurePics();
277
+ await configureYaml();
278
+ await configurePython();
279
+ State.configured = true;
280
+ }
281
+ async function configurePics() {
282
+ const docker = await Config.docker();
283
+ const ciPics = await docker.readFileFromImage(Constants.dockerName, Constants.chipPics);
284
+ const pics = new import_pics_file.PicsFile(ciPics, true);
285
+ const overrides = new import_pics_file.PicsFile(import_tools.Package.tools.resolve("src/testing/chip/pics.properties"));
286
+ pics.patch(overrides);
287
+ pics.save(import_tools.Package.tools.resolve("build/pics.properties"));
288
+ }
289
+ async function configureYaml() {
290
+ const docker = await Config.docker();
291
+ const tests = await docker.resolveGlobFromImage(Constants.dockerName, `${Constants.yamlTests}/Test_*.yaml`);
292
+ State.yamlTests.push(...tests);
293
+ }
294
+ async function configurePython() {
295
+ const docker = await Config.docker();
296
+ const tests = (await docker.resolveGlobFromImage(Constants.dockerName, `${Constants.pythonTests}/*.py`)).filter(
297
+ (name) => name.match(/(?:TC_|Test)[^/]\.py$/)
298
+ );
299
+ State.pythonTests.push(...tests);
300
+ }
301
+ function filterWithGlob(list, glob, invert = false) {
302
+ const globPattern = glob.replace(/\*/g, "[^\\/]+");
303
+ const pattern = new RegExp(`^.*/(?:Test_TC_|TC|Test)${globPattern}\\.(?:py|yaml)$`);
304
+ return list.filter((s) => !!s.match(pattern) === !invert);
305
+ }
306
+ //# sourceMappingURL=chip.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/chip.ts"],
4
+ "mappings": "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",
5
+ "names": ["Constants"]
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 "./util/node-shims.js";
7
+ import "./global-definitions.js";
8
+ export declare function main(argv?: string[]): Promise<void>;
9
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,sBAAsB,CAAC;AAE9B,OAAO,yBAAyB,CAAC;AAejC,wBAAsB,IAAI,CAAC,IAAI,WAAe,iBAiG7C"}
@@ -0,0 +1,115 @@
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 cli_exports = {};
30
+ __export(cli_exports, {
31
+ main: () => main
32
+ });
33
+ module.exports = __toCommonJS(cli_exports);
34
+ var import_node_shims = require("./util/node-shims.js");
35
+ var import_global_definitions = require("./global-definitions.js");
36
+ var import_tools = require("#tools");
37
+ var import_yargs = __toESM(require("yargs"), 1);
38
+ var import_helpers = require("yargs/helpers");
39
+ var import_runner = require("./runner.js");
40
+ /**
41
+ * @license
42
+ * Copyright 2022-2024 Matter.js Authors
43
+ * SPDX-License-Identifier: Apache-2.0
44
+ */
45
+ var TestType = /* @__PURE__ */ ((TestType2) => {
46
+ TestType2["esm"] = "esm";
47
+ TestType2["cjs"] = "cjs";
48
+ TestType2["web"] = "web";
49
+ return TestType2;
50
+ })(TestType || {});
51
+ Error.stackTraceLimit = 50;
52
+ async function main(argv = process.argv) {
53
+ const testTypes = /* @__PURE__ */ new Set();
54
+ let manual = false;
55
+ const args = await (0, import_yargs.default)((0, import_helpers.hideBin)(argv)).usage("Runs tests in packages adhering to matter.js standards.").option("prefix", {
56
+ alias: "p",
57
+ default: ".",
58
+ type: "string",
59
+ describe: "specify directory of package to test"
60
+ }).option("web", {
61
+ alias: "w",
62
+ default: false,
63
+ type: "boolean",
64
+ describe: "enable web tests in default test mode"
65
+ }).option("spec", {
66
+ type: "array",
67
+ string: true,
68
+ describe: "One or more paths of tests to run",
69
+ default: "./test/**/*Test.ts"
70
+ }).option("all-logs", { type: "boolean", describe: "Emit log messages in real time" }).option("debug", { type: "boolean", describe: "Enable Mocha debugging" }).option("environment", { alias: "e", type: "string", describe: "Select named test environment" }).option("fgrep", { alias: "f", type: "string", describe: "Only run tests matching this string" }).option("force-exit", { type: "boolean", describe: "Force Node to exit after tests complete" }).option("grep", { alias: "g", type: "string", describe: "Only run tests matching this regexp" }).option("invert", { alias: "i", type: "boolean", describe: "Inverts --grep and --fgrep matches" }).option("profile", { type: "boolean", describe: "Write profiling data to build/profiles (node only)" }).option("wtf", { type: "boolean", describe: "Enlist wtfnode to detect test leaks" }).option("trace-unhandled", { type: "boolean", describe: "Detail unhandled rejections with trace-unhandled" }).command("*", "run all supported test types").command("esm", "run tests on node (ES6 modules)", () => testTypes.add("esm" /* esm */)).command("cjs", "run tests on node (CommonJS modules)", () => testTypes.add("cjs" /* cjs */)).command("web", "run tests in web browser", () => testTypes.add("web" /* web */)).command("manual", "start test server and print URL for manual testing", () => {
71
+ testTypes.add("web" /* web */);
72
+ manual = true;
73
+ }).strict().argv;
74
+ let packageLocation = args.prefix;
75
+ if (packageLocation === "." && args.spec) {
76
+ const firstSpec = Array.isArray(args.spec) ? args.spec[0] : args.spec;
77
+ packageLocation = firstSpec;
78
+ }
79
+ const project = new import_tools.Project(packageLocation);
80
+ process.chdir(project.pkg.path);
81
+ if (!testTypes.size) {
82
+ if (project.pkg.supportsEsm) {
83
+ testTypes.add("esm" /* esm */);
84
+ }
85
+ if (project.pkg.supportsCjs) {
86
+ testTypes.add("cjs" /* cjs */);
87
+ }
88
+ if (args.web) {
89
+ testTypes.add("web" /* web */);
90
+ }
91
+ }
92
+ const builder = new import_tools.Builder();
93
+ const dependencies = await import_tools.Graph.forProject(packageLocation);
94
+ if (dependencies) {
95
+ await dependencies.build(builder, false);
96
+ } else {
97
+ await builder.build(project);
98
+ }
99
+ const progress = project.pkg.start("Testing");
100
+ const runner = new import_runner.TestRunner(project.pkg, progress, args);
101
+ if (testTypes.has("esm" /* esm */)) {
102
+ await runner.runNode("esm");
103
+ }
104
+ if (testTypes.has("cjs" /* cjs */)) {
105
+ await runner.runNode("cjs");
106
+ }
107
+ if (testTypes.has("web" /* web */)) {
108
+ await runner.runWeb(manual);
109
+ }
110
+ progress.shutdown();
111
+ if (args.forceExit) {
112
+ process.exit(0);
113
+ }
114
+ }
115
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/cli.ts"],
4
+ "mappings": "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",
5
+ "names": ["TestType", "yargs"]
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 interface FailureDetail {
7
+ message: string;
8
+ stack?: string;
9
+ diff?: string;
10
+ logs?: string;
11
+ cause?: FailureDetail;
12
+ errors?: FailureDetail[];
13
+ }
14
+ export declare function FailureDetail(error: any, logs?: string[]): FailureDetail;
15
+ export declare namespace FailureDetail {
16
+ function dump(failure: FailureDetail, prefix?: string): void;
17
+ let diff: undefined | ((actual: string, expected: string) => string);
18
+ }
19
+ //# sourceMappingURL=failure-detail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"failure-detail.d.ts","sourceRoot":"","sources":["../../src/failure-detail.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC;CAC5B;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,iBAgCxD;AAED,yBAAiB,aAAa,CAAC;IAC3B,SAAgB,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,GAAE,MAAW,QA2B/D;IAEM,IAAI,IAAI,EAAE,SAAS,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;CAC/E"}
@@ -0,0 +1,143 @@
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 failure_detail_exports = {};
30
+ __export(failure_detail_exports, {
31
+ FailureDetail: () => FailureDetail
32
+ });
33
+ module.exports = __toCommonJS(failure_detail_exports);
34
+ var import_ansi_colors = __toESM(require("ansi-colors"), 1);
35
+ /**
36
+ * @license
37
+ * Copyright 2022-2024 Matter.js Authors
38
+ * SPDX-License-Identifier: Apache-2.0
39
+ */
40
+ function FailureDetail(error, logs) {
41
+ let diff;
42
+ const { message, stack, cause, errors } = parseError(error);
43
+ if (error.expected && error.actual) {
44
+ if (FailureDetail.diff === void 0) {
45
+ diff = "(no diff implementation installed)";
46
+ } else {
47
+ diff = FailureDetail.diff(error.actual.toString(), error.expected.toString());
48
+ diff = diff.trim().replace(/^ {6}/gms, "");
49
+ }
50
+ }
51
+ const result = { message };
52
+ if (diff) {
53
+ result.diff = diff;
54
+ }
55
+ if (stack) {
56
+ result.stack = stack;
57
+ }
58
+ if (logs?.length) {
59
+ result.logs = logs.join("\n");
60
+ }
61
+ if (cause) {
62
+ result.cause = cause;
63
+ }
64
+ if (errors) {
65
+ result.errors = errors;
66
+ }
67
+ return result;
68
+ }
69
+ ((FailureDetail2) => {
70
+ function dump(failure, prefix = "") {
71
+ process.stdout.write(import_ansi_colors.default.redBright(`${prefix}${failure.message}
72
+
73
+ `));
74
+ if (failure.diff) {
75
+ process.stdout.write(`${prefix} ${failure.diff.replace(/\n/gm, "\n ")}
76
+
77
+ `);
78
+ }
79
+ if (failure.stack) {
80
+ process.stdout.write(`${prefix}${import_ansi_colors.default.dim(failure.stack.replace(/\n/gm, `
81
+ ${prefix}`))}
82
+
83
+ `);
84
+ }
85
+ if (failure.cause) {
86
+ process.stdout.write(`${prefix}Caused by:
87
+
88
+ `);
89
+ dump(failure.cause, prefix);
90
+ }
91
+ if (failure.errors?.length) {
92
+ let num = 0;
93
+ for (const cause of failure.errors) {
94
+ process.stdout.write(`${prefix}Cause #${++num}:
95
+
96
+ `);
97
+ dump(cause, `${prefix} `);
98
+ }
99
+ }
100
+ if (failure.logs) {
101
+ process.stdout.write(` ${failure.logs.replace(/\n/gm, "\n ")}
102
+
103
+ `);
104
+ }
105
+ }
106
+ FailureDetail2.dump = dump;
107
+ })(FailureDetail || (FailureDetail = {}));
108
+ function parseError(error) {
109
+ let message, stack, cause, errors;
110
+ if (error === void 0 || error === null) {
111
+ message = `(error is ${error})`;
112
+ } else {
113
+ message = error.message;
114
+ }
115
+ if (error.stack) {
116
+ let lines = error.stack.trim().split("\n");
117
+ if (!message) {
118
+ message = lines[0];
119
+ }
120
+ lines = lines.filter((line) => line.match(/:\d+:\d+\)?/));
121
+ if (lines.length) {
122
+ stack = lines.map((line) => line.trim()).join("\n");
123
+ }
124
+ } else if (error.message) {
125
+ message = error.message;
126
+ } else {
127
+ message = error.toString();
128
+ }
129
+ message = message.trim().replace(/Error: /, "");
130
+ if (message.endsWith(":")) {
131
+ message = message.slice(0, message.length - 1);
132
+ }
133
+ const errorCause = error.cause;
134
+ if (errorCause) {
135
+ cause = FailureDetail(errorCause);
136
+ }
137
+ const errorErrors = error.errors;
138
+ if (Array.isArray(errorErrors)) {
139
+ errors = errorErrors.map((e) => FailureDetail(e));
140
+ }
141
+ return { message, stack, cause, errors };
142
+ }
143
+ //# sourceMappingURL=failure-detail.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/failure-detail.ts"],
4
+ "mappings": "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",
5
+ "names": ["FailureDetail", "colors"]
6
+ }
@@ -0,0 +1,38 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type Chai from "chai";
7
+ import "chai-as-promised";
8
+ import type { MockLogger } from "./mocks/logging.js";
9
+ import type { MockTime } from "./mocks/time.js";
10
+ declare global {
11
+ const expect: typeof Chai.expect;
12
+ let MockTime: MockTime;
13
+ let MockLogger: MockLogger;
14
+ /**
15
+ * If present, the following hooks are engaged by matter.js packages to
16
+ * enable mocking. We use globals rather than imports so we can hook the
17
+ * modules regardless of whether they're loaded as CommonJS or ESM.
18
+ */
19
+ let MatterHooks: undefined | {
20
+ /**
21
+ * Configure time.
22
+ */
23
+ timeSetup?: (Time: any) => void;
24
+ /**
25
+ * Configure logging.
26
+ */
27
+ loggerSetup?: (Logger: any) => void;
28
+ /**
29
+ * Configure crypto.
30
+ */
31
+ cryptoSetup?: (Crypto: any) => void;
32
+ /**
33
+ * Receive intercepted log messages. The logging mocks
34
+ */
35
+ loggerSink?: (level: number, message: string) => void;
36
+ };
37
+ }
38
+ //# sourceMappingURL=global-declarations.d.ts.map