@matter/testing 0.13.1-alpha.0-20250501-80c86b03e → 0.13.1-alpha.0-20250504-87f265a2e

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 (161) hide show
  1. package/bin/test.js +1 -2
  2. package/dist/cjs/chip/chip.d.ts +7 -2
  3. package/dist/cjs/chip/chip.d.ts.map +1 -1
  4. package/dist/cjs/chip/chip.js +20 -15
  5. package/dist/cjs/chip/chip.js.map +1 -1
  6. package/dist/cjs/chip/command-pipe.d.ts +2 -1
  7. package/dist/cjs/chip/command-pipe.d.ts.map +1 -1
  8. package/dist/cjs/chip/command-pipe.js +5 -2
  9. package/dist/cjs/chip/command-pipe.js.map +1 -1
  10. package/dist/cjs/chip/config.d.ts +2 -2
  11. package/dist/cjs/chip/config.d.ts.map +1 -1
  12. package/dist/cjs/chip/config.js +7 -6
  13. package/dist/cjs/chip/config.js.map +1 -1
  14. package/dist/cjs/chip/container-command-pipe.d.ts +2 -1
  15. package/dist/cjs/chip/container-command-pipe.d.ts.map +1 -1
  16. package/dist/cjs/chip/container-command-pipe.js +26 -24
  17. package/dist/cjs/chip/container-command-pipe.js.map +1 -1
  18. package/dist/cjs/chip/index.d.ts +1 -1
  19. package/dist/cjs/chip/index.d.ts.map +1 -1
  20. package/dist/cjs/chip/index.js +1 -1
  21. package/dist/cjs/chip/index.js.map +1 -1
  22. package/dist/cjs/chip/{pics-expression.d.ts → pics/expression.d.ts} +2 -2
  23. package/dist/cjs/chip/pics/expression.d.ts.map +1 -0
  24. package/dist/cjs/chip/{pics-expression.js → pics/expression.js} +6 -6
  25. package/dist/cjs/chip/pics/expression.js.map +6 -0
  26. package/dist/cjs/chip/{pics-file.d.ts → pics/file.d.ts} +10 -5
  27. package/dist/cjs/chip/pics/file.d.ts.map +1 -0
  28. package/dist/cjs/chip/{pics-file.js → pics/file.js} +21 -13
  29. package/dist/cjs/chip/pics/file.js.map +6 -0
  30. package/dist/cjs/chip/pics/index.d.ts +10 -0
  31. package/dist/cjs/chip/pics/index.d.ts.map +1 -0
  32. package/dist/cjs/chip/pics/index.js +27 -0
  33. package/dist/cjs/chip/pics/index.js.map +6 -0
  34. package/dist/cjs/chip/pics/source.d.ts +52 -0
  35. package/dist/cjs/chip/pics/source.d.ts.map +1 -0
  36. package/dist/cjs/chip/pics/source.js +117 -0
  37. package/dist/cjs/chip/pics/source.js.map +6 -0
  38. package/dist/cjs/chip/pics/values.d.ts +9 -0
  39. package/dist/cjs/chip/pics/values.d.ts.map +1 -0
  40. package/dist/cjs/chip/pics/values.js +22 -0
  41. package/dist/cjs/chip/pics/values.js.map +6 -0
  42. package/dist/cjs/chip/python-test.d.ts.map +1 -1
  43. package/dist/cjs/chip/python-test.js +14 -7
  44. package/dist/cjs/chip/python-test.js.map +1 -1
  45. package/dist/cjs/chip/state.d.ts +3 -2
  46. package/dist/cjs/chip/state.d.ts.map +1 -1
  47. package/dist/cjs/chip/state.js +38 -25
  48. package/dist/cjs/chip/state.js.map +1 -1
  49. package/dist/cjs/chip/yaml-test.d.ts +1 -1
  50. package/dist/cjs/chip/yaml-test.d.ts.map +1 -1
  51. package/dist/cjs/chip/yaml-test.js +5 -1
  52. package/dist/cjs/chip/yaml-test.js.map +1 -1
  53. package/dist/cjs/cli.d.ts.map +1 -1
  54. package/dist/cjs/cli.js +18 -3
  55. package/dist/cjs/cli.js.map +2 -2
  56. package/dist/cjs/device/subject.d.ts +4 -0
  57. package/dist/cjs/device/subject.d.ts.map +1 -1
  58. package/dist/cjs/failure-reporter.js +4 -6
  59. package/dist/cjs/failure-reporter.js.map +1 -1
  60. package/dist/cjs/print-report.d.ts +3 -0
  61. package/dist/cjs/print-report.d.ts.map +1 -1
  62. package/dist/cjs/print-report.js +13 -16
  63. package/dist/cjs/print-report.js.map +2 -2
  64. package/dist/cjs/test-descriptor.d.ts +18 -13
  65. package/dist/cjs/test-descriptor.d.ts.map +1 -1
  66. package/dist/cjs/test-descriptor.js +48 -49
  67. package/dist/cjs/test-descriptor.js.map +2 -2
  68. package/dist/esm/chip/chip.d.ts +7 -2
  69. package/dist/esm/chip/chip.d.ts.map +1 -1
  70. package/dist/esm/chip/chip.js +20 -15
  71. package/dist/esm/chip/chip.js.map +1 -1
  72. package/dist/esm/chip/command-pipe.d.ts +2 -1
  73. package/dist/esm/chip/command-pipe.d.ts.map +1 -1
  74. package/dist/esm/chip/command-pipe.js +5 -2
  75. package/dist/esm/chip/command-pipe.js.map +1 -1
  76. package/dist/esm/chip/config.d.ts +2 -2
  77. package/dist/esm/chip/config.d.ts.map +1 -1
  78. package/dist/esm/chip/config.js +7 -6
  79. package/dist/esm/chip/config.js.map +1 -1
  80. package/dist/esm/chip/container-command-pipe.d.ts +2 -1
  81. package/dist/esm/chip/container-command-pipe.d.ts.map +1 -1
  82. package/dist/esm/chip/container-command-pipe.js +26 -24
  83. package/dist/esm/chip/container-command-pipe.js.map +1 -1
  84. package/dist/esm/chip/index.d.ts +1 -1
  85. package/dist/esm/chip/index.d.ts.map +1 -1
  86. package/dist/esm/chip/index.js +1 -1
  87. package/dist/esm/chip/{pics-expression.d.ts → pics/expression.d.ts} +2 -2
  88. package/dist/esm/chip/pics/expression.d.ts.map +1 -0
  89. package/dist/esm/chip/{pics-expression.js → pics/expression.js} +3 -3
  90. package/dist/esm/chip/pics/expression.js.map +6 -0
  91. package/dist/esm/chip/{pics-file.d.ts → pics/file.d.ts} +10 -5
  92. package/dist/esm/chip/pics/file.d.ts.map +1 -0
  93. package/dist/esm/chip/{pics-file.js → pics/file.js} +18 -10
  94. package/dist/esm/chip/pics/file.js.map +6 -0
  95. package/dist/esm/chip/pics/index.d.ts +10 -0
  96. package/dist/esm/chip/pics/index.d.ts.map +1 -0
  97. package/dist/esm/chip/pics/index.js +10 -0
  98. package/dist/esm/chip/pics/index.js.map +6 -0
  99. package/dist/esm/chip/pics/source.d.ts +52 -0
  100. package/dist/esm/chip/pics/source.d.ts.map +1 -0
  101. package/dist/esm/chip/pics/source.js +97 -0
  102. package/dist/esm/chip/pics/source.js.map +6 -0
  103. package/dist/esm/chip/pics/values.d.ts +9 -0
  104. package/dist/esm/chip/pics/values.d.ts.map +1 -0
  105. package/dist/esm/chip/pics/values.js +6 -0
  106. package/dist/esm/chip/pics/values.js.map +6 -0
  107. package/dist/esm/chip/python-test.d.ts.map +1 -1
  108. package/dist/esm/chip/python-test.js +14 -7
  109. package/dist/esm/chip/python-test.js.map +1 -1
  110. package/dist/esm/chip/state.d.ts +3 -2
  111. package/dist/esm/chip/state.d.ts.map +1 -1
  112. package/dist/esm/chip/state.js +39 -26
  113. package/dist/esm/chip/state.js.map +1 -1
  114. package/dist/esm/chip/yaml-test.d.ts +1 -1
  115. package/dist/esm/chip/yaml-test.d.ts.map +1 -1
  116. package/dist/esm/chip/yaml-test.js +5 -1
  117. package/dist/esm/chip/yaml-test.js.map +1 -1
  118. package/dist/esm/cli.d.ts.map +1 -1
  119. package/dist/esm/cli.js +19 -4
  120. package/dist/esm/cli.js.map +2 -2
  121. package/dist/esm/device/subject.d.ts +4 -0
  122. package/dist/esm/device/subject.d.ts.map +1 -1
  123. package/dist/esm/failure-reporter.js +4 -6
  124. package/dist/esm/failure-reporter.js.map +1 -1
  125. package/dist/esm/print-report.d.ts +3 -0
  126. package/dist/esm/print-report.d.ts.map +1 -1
  127. package/dist/esm/print-report.js +12 -15
  128. package/dist/esm/print-report.js.map +2 -2
  129. package/dist/esm/test-descriptor.d.ts +18 -13
  130. package/dist/esm/test-descriptor.d.ts.map +1 -1
  131. package/dist/esm/test-descriptor.js +48 -49
  132. package/dist/esm/test-descriptor.js.map +2 -2
  133. package/package.json +2 -2
  134. package/src/chip/chip.ts +31 -17
  135. package/src/chip/command-pipe.ts +6 -2
  136. package/src/chip/config.ts +9 -9
  137. package/src/chip/container-command-pipe.ts +28 -30
  138. package/src/chip/index.ts +1 -1
  139. package/src/chip/matter-js-pics.properties +7 -4
  140. package/src/chip/{pics-expression.ts → pics/expression.ts} +4 -3
  141. package/src/chip/{pics-file.ts → pics/file.ts} +30 -13
  142. package/src/chip/pics/index.ts +10 -0
  143. package/src/chip/pics/source.ts +163 -0
  144. package/src/chip/pics/values.ts +9 -0
  145. package/src/chip/python-test.ts +18 -11
  146. package/src/chip/state.ts +56 -33
  147. package/src/chip/yaml-test.ts +6 -1
  148. package/src/cli.ts +29 -5
  149. package/src/device/subject.ts +4 -0
  150. package/src/failure-reporter.ts +4 -4
  151. package/src/print-report.ts +13 -18
  152. package/src/test-descriptor.ts +70 -61
  153. package/src/tsconfig.json +6 -2
  154. package/dist/cjs/chip/pics-expression.d.ts.map +0 -1
  155. package/dist/cjs/chip/pics-expression.js.map +0 -6
  156. package/dist/cjs/chip/pics-file.d.ts.map +0 -1
  157. package/dist/cjs/chip/pics-file.js.map +0 -6
  158. package/dist/esm/chip/pics-expression.d.ts.map +0 -1
  159. package/dist/esm/chip/pics-expression.js.map +0 -6
  160. package/dist/esm/chip/pics-file.d.ts.map +0 -1
  161. package/dist/esm/chip/pics-file.js.map +0 -6
@@ -5,21 +5,19 @@
5
5
  */
6
6
  import { ansi, STATUS_ICON_FAILURE } from "#tools";
7
7
  import { TextDiff } from "./text-diff.js";
8
- const BEGIN_ERROR = `${ansi.red}\u250F\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2505
9
- \u2503${ansi.not.red}`;
8
+ const BEGIN_ERROR = `${ansi.red}\u250F\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2505${ansi.not.red}`;
10
9
  const OUTER_PREFIX = `${ansi.red}\u2503 ${ansi.not.red}`;
11
10
  const INNER_PREFIX = `${ansi.dim}\u2506 ${ansi.not.dim}`;
12
- const END_ERROR = `${ansi.red}\u2503
13
- \u2517\u2501\u2505${ansi.not.red}`;
11
+ const END_ERROR = `${ansi.red}\u2517\u2501\u2505${ansi.not.red}`;
14
12
  var FailureReporter;
15
13
  ((FailureReporter2) => {
16
14
  function report(out, failure, title) {
17
- out(BEGIN_ERROR, "\n");
15
+ out(BEGIN_ERROR, "\n", OUTER_PREFIX, "\n");
18
16
  out.state({ linePrefix: OUTER_PREFIX }, () => {
19
17
  out(ansi.bold.red(STATUS_ICON_FAILURE), " ", title, "\n");
20
18
  dumpDetails(out, failure);
21
19
  });
22
- out(END_ERROR, "\n");
20
+ out(OUTER_PREFIX, "\n", END_ERROR, "\n");
23
21
  }
24
22
  FailureReporter2.report = report;
25
23
  })(FailureReporter || (FailureReporter = {}));
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/failure-reporter.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,MAAe,2BAA2B;AAEnD,SAAS,gBAAgB;AAEzB,MAAM,cAAc,GAAG,KAAK,GAAG;AAAA,QAA+C,KAAK,IAAI,GAAG;AAC1F,MAAM,eAAe,GAAG,KAAK,GAAG,WAAM,KAAK,IAAI,GAAG;AAClD,MAAM,eAAe,GAAG,KAAK,GAAG,WAAM,KAAK,IAAI,GAAG;AAClD,MAAM,YAAY,GAAG,KAAK,GAAG;AAAA,oBAAS,KAAK,IAAI,GAAG;AAE3C,IAAU;AAAA,CAAV,CAAUA,qBAAV;AACI,WAAS,OAAO,KAAc,SAAwB,OAAe;AACxE,QAAI,aAAa,IAAI;AAErB,QAAI,MAAM,EAAE,YAAY,aAAa,GAAG,MAAM;AAC1C,UAAI,KAAK,KAAK,IAAI,mBAAmB,GAAG,KAAK,OAAO,IAAI;AACxD,kBAAY,KAAK,OAAO;AAAA,IAC5B,CAAC;AAED,QAAI,WAAW,IAAI;AAAA,EACvB;AATO,EAAAA,iBAAS;AAAA,GADH;AAajB,SAAS,UAAU,KAAc,SAAwB;AACrD,MAAI,MAAM,EAAE,YAAY,aAAa,GAAG,MAAM;AAC1C,gBAAY,KAAK,OAAO;AAAA,EAC5B,CAAC;AACL;AAEA,SAAS,YAAY,KAAc,EAAE,SAAS,QAAQ,UAAU,OAAO,OAAO,QAAQ,KAAK,GAAkB;AACzG,MAAI,MAAM,KAAK,OAAO,IAAI,OAAO,GAAG,IAAI;AAExC,MAAI,WAAW,UAAa,aAAa,QAAW;AAChD,QAAI,IAAI;AACR,QAAI,MAAM,EAAE,YAAY,OAAO,GAAG,MAAM,IAAI,SAAS,QAAQ,QAAQ,CAAC,CAAC;AACvE,QAAI,IAAI;AAAA,EACZ;AAEA,MAAI,OAAO;AACP,QAAI,IAAI;AACR,QAAI,MAAM,EAAE,YAAY,KAAK,GAAG,MAAM,IAAI,KAAK,CAAC;AAChD,QAAI,IAAI;AAAA,EACZ;AAEA,MAAI,OAAO;AACP,QAAI,MAAM,KAAK,KAAK,YAAY,GAAG,IAAI;AACvC,cAAU,KAAK,KAAK;AAAA,EACxB;AAEA,MAAI,QAAQ,QAAQ;AAChB,QAAI,MAAM;AACV,eAAWC,UAAS,QAAQ;AACxB,UAAI,MAAM,KAAK,KAAK,UAAU,EAAE,GAAG,GAAG,GAAG,IAAI;AAC7C,gBAAU,KAAKA,MAAK;AAAA,IACxB;AAAA,EACJ;AAEA,MAAI,MAAM;AACN,QAAI,MAAM,MAAM,IAAI;AAAA,EACxB;AACJ;",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,MAAe,2BAA2B;AAEnD,SAAS,gBAAgB;AAEzB,MAAM,cAAc,GAAG,KAAK,GAAG,yPAA4C,KAAK,IAAI,GAAG;AACvF,MAAM,eAAe,GAAG,KAAK,GAAG,WAAM,KAAK,IAAI,GAAG;AAClD,MAAM,eAAe,GAAG,KAAK,GAAG,WAAM,KAAK,IAAI,GAAG;AAClD,MAAM,YAAY,GAAG,KAAK,GAAG,qBAAM,KAAK,IAAI,GAAG;AAExC,IAAU;AAAA,CAAV,CAAUA,qBAAV;AACI,WAAS,OAAO,KAAc,SAAwB,OAAe;AACxE,QAAI,aAAa,MAAM,cAAc,IAAI;AAEzC,QAAI,MAAM,EAAE,YAAY,aAAa,GAAG,MAAM;AAC1C,UAAI,KAAK,KAAK,IAAI,mBAAmB,GAAG,KAAK,OAAO,IAAI;AACxD,kBAAY,KAAK,OAAO;AAAA,IAC5B,CAAC;AAED,QAAI,cAAc,MAAM,WAAW,IAAI;AAAA,EAC3C;AATO,EAAAA,iBAAS;AAAA,GADH;AAajB,SAAS,UAAU,KAAc,SAAwB;AACrD,MAAI,MAAM,EAAE,YAAY,aAAa,GAAG,MAAM;AAC1C,gBAAY,KAAK,OAAO;AAAA,EAC5B,CAAC;AACL;AAEA,SAAS,YAAY,KAAc,EAAE,SAAS,QAAQ,UAAU,OAAO,OAAO,QAAQ,KAAK,GAAkB;AACzG,MAAI,MAAM,KAAK,OAAO,IAAI,OAAO,GAAG,IAAI;AAExC,MAAI,WAAW,UAAa,aAAa,QAAW;AAChD,QAAI,IAAI;AACR,QAAI,MAAM,EAAE,YAAY,OAAO,GAAG,MAAM,IAAI,SAAS,QAAQ,QAAQ,CAAC,CAAC;AACvE,QAAI,IAAI;AAAA,EACZ;AAEA,MAAI,OAAO;AACP,QAAI,IAAI;AACR,QAAI,MAAM,EAAE,YAAY,KAAK,GAAG,MAAM,IAAI,KAAK,CAAC;AAChD,QAAI,IAAI;AAAA,EACZ;AAEA,MAAI,OAAO;AACP,QAAI,MAAM,KAAK,KAAK,YAAY,GAAG,IAAI;AACvC,cAAU,KAAK,KAAK;AAAA,EACxB;AAEA,MAAI,QAAQ,QAAQ;AAChB,QAAI,MAAM;AACV,eAAWC,UAAS,QAAQ;AACxB,UAAI,MAAM,KAAK,KAAK,UAAU,EAAE,GAAG,GAAG,GAAG,IAAI;AAC7C,gBAAU,KAAKA,MAAK;AAAA,IACxB;AAAA,EACJ;AAEA,MAAI,MAAM;AACN,QAAI,MAAM,MAAM,IAAI;AAAA,EACxB;AACJ;",
5
5
  "names": ["FailureReporter", "cause"]
6
6
  }
@@ -20,6 +20,8 @@ export declare function defaultDescriptor(runner: TestRunner): Promise<{
20
20
  name: string;
21
21
  kind: TestDescriptor.Kind;
22
22
  path?: string;
23
+ subpath?: string;
24
+ app?: string;
23
25
  isDisabled?: boolean;
24
26
  timeoutMs?: number;
25
27
  description?: string;
@@ -29,5 +31,6 @@ export declare function defaultDescriptor(runner: TestRunner): Promise<{
29
31
  runAt?: Date;
30
32
  passed?: boolean;
31
33
  durationMs?: number;
34
+ picsValues?: import("./index.js").PicsFile;
32
35
  }>;
33
36
  //# sourceMappingURL=print-report.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"print-report.d.ts","sourceRoot":"","sources":["../../src/print-report.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD;;GAEG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,cAAc,EAAE,eAAe,CAAC,EAAE,OAAO,QAEhF;AAiGD;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,UAAU;;;;;;;;;;;;;;GAgDzD"}
1
+ {"version":3,"file":"print-report.d.ts","sourceRoot":"","sources":["../../src/print-report.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD;;GAEG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,cAAc,EAAE,eAAe,CAAC,EAAE,OAAO,QAEhF;AAqGD;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,UAAU;;;;;;;;;;;;;;;;;GAuCzD"}
@@ -3,10 +3,10 @@
3
3
  * Copyright 2022-2025 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { Progress, STATUS_ICON_FAILURE, STATUS_ICON_SUCCESS } from "@matter/tools";
6
+ import { Progress, STATUS_ICON_FAILURE, STATUS_ICON_SKIPPED, STATUS_ICON_SUCCESS } from "@matter/tools";
7
7
  import colors from "ansi-colors";
8
8
  import { chip } from "./chip/chip.js";
9
- import { InvalidPicsExpressionError, PicsExpression } from "./chip/pics-expression.js";
9
+ import { InvalidPicsExpressionError, PicsExpression } from "./chip/pics/expression.js";
10
10
  import { createNodejsMocha } from "./nodejs.js";
11
11
  import { TestDescriptor } from "./test-descriptor.js";
12
12
  function printReport(descriptor, includeDisabled) {
@@ -49,7 +49,7 @@ function printDescriptor(descriptor, includeDisabled, prefix = "", path) {
49
49
  title = `${STATUS_ICON_FAILURE} ${title}`;
50
50
  break;
51
51
  default:
52
- title = ` ${title}`;
52
+ title = `${STATUS_ICON_SKIPPED} ${title}`;
53
53
  }
54
54
  }
55
55
  if (member.durationMs !== void 0) {
@@ -64,7 +64,7 @@ function printDescriptor(descriptor, includeDisabled, prefix = "", path) {
64
64
  if (member.pics) {
65
65
  try {
66
66
  const expr = new PicsExpression(member.pics);
67
- if (expr.evaluate(chip.pics)) {
67
+ if (expr.evaluate(member.picsValues ?? chip.defaultPics)) {
68
68
  title = `${title} ${colors.dim.green(member.pics)}`;
69
69
  } else {
70
70
  title = `${title} ${colors.dim.red(member.pics)}`;
@@ -78,7 +78,11 @@ function printDescriptor(descriptor, includeDisabled, prefix = "", path) {
78
78
  }
79
79
  }
80
80
  if (member.path && member.path !== path) {
81
- title = `${title} ${colors.dim.blueBright(member.path)}`;
81
+ let { path: path2 } = member;
82
+ if (member.subpath) {
83
+ path2 = `${path2}#${member.subpath}`;
84
+ }
85
+ title = `${title} ${colors.dim.blueBright(path2)}`;
82
86
  }
83
87
  if (member.kind === "manual") {
84
88
  title = colors.strikethrough(title);
@@ -98,17 +102,10 @@ async function defaultDescriptor(runner) {
98
102
  TestDescriptor.visit(descriptor, (descriptor2) => {
99
103
  used.add(descriptor2);
100
104
  });
101
- let unused = TestDescriptor.filter(chip.tests.descriptor, (descriptor2, recurse) => {
102
- if (descriptor2.kind === "py" || descriptor2.kind === "yaml") {
103
- if (used.has(descriptor2)) {
104
- return;
105
- }
106
- }
107
- const result = recurse();
108
- if (!result || result.kind === "suite" && !result.members?.length) {
109
- return;
105
+ let unused = TestDescriptor.filter(chip.tests.descriptor, {
106
+ predicate(descriptor2) {
107
+ return descriptor2.kind !== "py" && descriptor2.kind !== "yaml" || !used.has(descriptor2);
110
108
  }
111
- return result;
112
109
  });
113
110
  if (unused) {
114
111
  unused = {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/print-report.ts"],
4
- "mappings": "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",
5
- "names": ["descriptor"]
4
+ "mappings": "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",
5
+ "names": ["path", "descriptor"]
6
6
  }
@@ -4,7 +4,7 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import type { FilesystemSync } from "#tools";
7
- import type { PicsFile } from "./chip/pics-file.js";
7
+ import type { PicsFile } from "./chip/pics/file.js";
8
8
  /**
9
9
  * Metadata for a single test or group of tests.
10
10
  */
@@ -12,6 +12,8 @@ export interface TestDescriptor {
12
12
  name: string;
13
13
  kind: TestDescriptor.Kind;
14
14
  path?: string;
15
+ subpath?: string;
16
+ app?: string;
15
17
  members?: TestDescriptor[];
16
18
  isDisabled?: boolean;
17
19
  timeoutMs?: number;
@@ -22,6 +24,7 @@ export interface TestDescriptor {
22
24
  runAt?: Date;
23
25
  passed?: boolean;
24
26
  durationMs?: number;
27
+ picsValues?: PicsFile;
25
28
  }
26
29
  export interface TestFileDescriptor extends TestDescriptor {
27
30
  path: string;
@@ -29,7 +32,14 @@ export interface TestFileDescriptor extends TestDescriptor {
29
32
  export interface TestSuiteDescriptor extends TestDescriptor {
30
33
  members: TestDescriptor[];
31
34
  }
35
+ export interface RootTestDescriptor extends TestDescriptor {
36
+ format?: number;
37
+ }
32
38
  export declare namespace TestDescriptor {
39
+ /**
40
+ * Used to validate format of test descriptor files.
41
+ */
42
+ const CURRENT_FORMAT = 2;
33
43
  type Kind = "suite" | "js" | "py" | "yaml" | "manual" | "step";
34
44
  const DEFAULT_FILENAME = "build/test-report.json";
35
45
  interface Filesystem extends FilesystemSync<Stat> {
@@ -38,23 +48,18 @@ export declare namespace TestDescriptor {
38
48
  interface Stat extends FilesystemSync.Stat {
39
49
  descriptor: TestDescriptor;
40
50
  }
41
- /**
42
- * Create a filtering predicate based on specified criteria.
43
- *
44
- * The predicate treats tests as atomic and ignores empty suites.
45
- */
46
- function predicateFor(criteria: {
51
+ type Criteria = {
47
52
  includePaths?: string[];
48
53
  kinds?: Kind[];
49
54
  pics?: PicsFile;
50
- }): Predicate;
51
- interface Predicate {
52
- (descriptor: TestDescriptor, recurse: () => TestDescriptor | undefined): TestDescriptor | undefined;
53
- }
55
+ predicate?: (descriptor: TestDescriptor) => boolean;
56
+ };
54
57
  /**
55
- * Filter a {@link TestDescriptor} hierarchy using a predicate.
58
+ * Create a filter function for specified criteria.
59
+ *
60
+ * The filter treats tests as atomic and ignores empty suites.
56
61
  */
57
- function filter(descriptor: TestDescriptor, predicate: Predicate): TestDescriptor | undefined;
62
+ function filter(descriptor: TestDescriptor, criteria: Criteria): TestDescriptor | undefined;
58
63
  /**
59
64
  * Visit a {@link TestDescriptor} hierarchy.
60
65
  */
@@ -1 +1 @@
1
- {"version":3,"file":"test-descriptor.d.ts","sourceRoot":"","sources":["../../src/test-descriptor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAG7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,kBAAmB,SAAQ,cAAc;IACtD,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAoB,SAAQ,cAAc;IACvD,OAAO,EAAE,cAAc,EAAE,CAAC;CAC7B;AAED,yBAAiB,cAAc,CAAC;IAC5B,KAAY,IAAI,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IAE/D,MAAM,gBAAgB,2BAA2B,CAAC;IAEzD,UAAiB,UAAW,SAAQ,cAAc,CAAC,IAAI,CAAC;QACpD,UAAU,EAAE,cAAc,CAAC;KAC9B;IAED,UAAiB,IAAK,SAAQ,cAAc,CAAC,IAAI;QAC7C,UAAU,EAAE,cAAc,CAAC;KAC9B;IAED;;;;OAIG;IACH,SAAgB,YAAY,CAAC,QAAQ,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;QAAC,IAAI,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,SAAS,CA4D9G;IAED,UAAiB,SAAS;QACtB,CAAC,UAAU,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,cAAc,GAAG,SAAS,GAAG,cAAc,GAAG,SAAS,CAAC;KACvG;IAED;;OAEG;IACH,SAAgB,MAAM,CAAC,UAAU,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,GAAG,cAAc,GAAG,SAAS,CAqBnG;IAED;;OAEG;IACH,SAAgB,KAAK,CAAC,UAAU,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,UAAU,EAAE,cAAc,KAAK,IAAI,GAAG,OAAO,GAAG,IAAI,CAY1G;IAED;;OAEG;IACH,SAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAwBrE;IAED;;OAEG;IACH,SAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,mBAAmB,iBAEvE;IAED;;;;;OAKG;IACH,SAAgB,KAAK,CAAC,CAAC,SAAS,cAAc,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,CA8CvF;IAED;;OAEG;IACH,SAAgB,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,cAAc,CAAC,UAAU,CA+G1E;CACJ"}
1
+ {"version":3,"file":"test-descriptor.d.ts","sourceRoot":"","sources":["../../src/test-descriptor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAG7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,QAAQ,CAAC;CACzB;AAED,MAAM,WAAW,kBAAmB,SAAQ,cAAc;IACtD,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAoB,SAAQ,cAAc;IACvD,OAAO,EAAE,cAAc,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAmB,SAAQ,cAAc;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,yBAAiB,cAAc,CAAC;IAC5B;;OAEG;IACI,MAAM,cAAc,IAAI,CAAC;IAEhC,KAAY,IAAI,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IAE/D,MAAM,gBAAgB,2BAA2B,CAAC;IAEzD,UAAiB,UAAW,SAAQ,cAAc,CAAC,IAAI,CAAC;QACpD,UAAU,EAAE,cAAc,CAAC;KAC9B;IAED,UAAiB,IAAK,SAAQ,cAAc,CAAC,IAAI;QAC7C,UAAU,EAAE,cAAc,CAAC;KAC9B;IAED,KAAY,QAAQ,GAAG;QACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;QACf,IAAI,CAAC,EAAE,QAAQ,CAAC;QAChB,SAAS,CAAC,EAAE,CAAC,UAAU,EAAE,cAAc,KAAK,OAAO,CAAC;KACvD,CAAC;IAEF;;;;OAIG;IACH,SAAgB,MAAM,CAAC,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,GAAG,cAAc,GAAG,SAAS,CA6EjG;IAED;;OAEG;IACH,SAAgB,KAAK,CAAC,UAAU,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,UAAU,EAAE,cAAc,KAAK,IAAI,GAAG,OAAO,GAAG,IAAI,CAY1G;IAED;;OAEG;IACH,SAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAwBrE;IAED;;OAEG;IACH,SAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,mBAAmB,iBAKvE;IAED;;;;;OAKG;IACH,SAAgB,KAAK,CAAC,CAAC,SAAS,cAAc,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,CA8CvF;IAED;;OAEG;IACH,SAAgB,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,cAAc,CAAC,UAAU,CA+G1E;CACJ"}
@@ -4,74 +4,70 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { readFile, writeFile } from "node:fs/promises";
7
- import { PicsExpression } from "./chip/pics-expression.js";
7
+ import { PicsExpression } from "./chip/pics/expression.js";
8
8
  var TestDescriptor;
9
9
  ((TestDescriptor2) => {
10
+ TestDescriptor2.CURRENT_FORMAT = 2;
10
11
  TestDescriptor2.DEFAULT_FILENAME = "build/test-report.json";
11
- function predicateFor(criteria) {
12
- const { includePaths, kinds, pics } = criteria;
13
- let inclusion;
12
+ function filter(descriptor, criteria) {
13
+ const { includePaths, kinds, pics, predicate } = criteria;
14
+ let memberNames;
14
15
  if (includePaths) {
15
- inclusion = {};
16
+ memberNames = {};
16
17
  for (const path of includePaths) {
17
- let incl = inclusion;
18
- for (const segment of path.split("/").filter((segment2) => segment2 !== "")) {
18
+ let incl = memberNames;
19
+ const segments = path.split("/");
20
+ if (segments[0] === "") {
21
+ segments[0] = descriptor.name;
22
+ }
23
+ for (const segment of segments) {
19
24
  incl = incl[segment] ??= {};
20
25
  }
21
26
  }
22
27
  }
23
- let firstLevel = true;
24
- return (descriptor, recurse) => {
25
- if (!firstLevel && inclusion && !inclusion[descriptor.name]) {
28
+ return filter2(descriptor, memberNames);
29
+ function filter2(descriptor2, names) {
30
+ const memberNames2 = names?.[descriptor2.name];
31
+ if (names && !memberNames2) {
26
32
  return;
27
33
  }
28
- if (pics && descriptor.pics !== void 0) {
29
- const expr = new PicsExpression(descriptor.pics);
34
+ if (pics && descriptor2.pics !== void 0) {
35
+ descriptor2.picsValues = pics;
36
+ const expr = new PicsExpression(descriptor2.pics);
30
37
  if (!expr.evaluate(pics)) {
31
38
  return;
32
39
  }
33
40
  }
34
- if (descriptor.kind === "suite") {
35
- const revertInclusion = inclusion;
36
- try {
37
- if (firstLevel) {
38
- firstLevel = false;
39
- } else if (inclusion) {
40
- inclusion = inclusion[descriptor.name];
41
+ if (descriptor2.kind === "suite") {
42
+ const { members } = descriptor2;
43
+ if (!members?.length) {
44
+ return;
45
+ }
46
+ let filteredMembers;
47
+ for (const member of members) {
48
+ const filteredMember = filter2(member, memberNames2);
49
+ if (!filteredMember) {
50
+ continue;
41
51
  }
42
- const result = recurse();
43
- if (!result?.members?.length) {
44
- return;
52
+ if (predicate && !predicate(filteredMember)) {
53
+ continue;
54
+ }
55
+ if (filteredMembers) {
56
+ filteredMembers.push(filteredMember);
57
+ } else {
58
+ filteredMembers = [filteredMember];
45
59
  }
46
- return result;
47
- } finally {
48
- inclusion = revertInclusion;
49
60
  }
50
- }
51
- if (kinds && !kinds.includes(descriptor.kind)) {
61
+ if (filteredMembers) {
62
+ return { ...descriptor2, members: filteredMembers };
63
+ }
52
64
  return;
53
65
  }
54
- return descriptor;
55
- };
56
- }
57
- TestDescriptor2.predicateFor = predicateFor;
58
- function filter(descriptor, predicate) {
59
- return predicate(descriptor, () => {
60
- let { members } = descriptor;
61
- if (members) {
62
- members = members.map((member) => filter(member, predicate)).filter((member) => member);
63
- }
64
- if (descriptor.members === void 0 || members?.length === descriptor.members?.length) {
65
- return descriptor;
66
- }
67
- descriptor = { ...descriptor };
68
- if (members?.length) {
69
- descriptor.members = members;
70
- } else {
71
- delete descriptor.members;
66
+ if (kinds && !kinds.includes(descriptor2.kind)) {
67
+ return;
72
68
  }
73
- return descriptor;
74
- });
69
+ return descriptor2;
70
+ }
75
71
  }
76
72
  TestDescriptor2.filter = filter;
77
73
  function visit(descriptor, fn) {
@@ -94,7 +90,7 @@ var TestDescriptor;
94
90
  };
95
91
  try {
96
92
  const json = await readFile(path, "utf-8");
97
- descriptor = JSON.parse(json);
93
+ descriptor = JSON.parse(json, (k, v) => k === "picsValues" ? void 0 : v);
98
94
  if (typeof descriptor?.name !== "string" || descriptor.kind !== "suite" || !Array.isArray(descriptor.members)) {
99
95
  throw new Error(`Invalid test descriptor "${path}"`);
100
96
  }
@@ -107,7 +103,10 @@ var TestDescriptor;
107
103
  }
108
104
  TestDescriptor2.open = open;
109
105
  async function save(path, descriptor) {
110
- await writeFile(path, JSON.stringify(descriptor, void 0, 4));
106
+ await writeFile(
107
+ path,
108
+ JSON.stringify(descriptor, (k, v) => k === "picsValues" ? void 0 : v, 4)
109
+ );
111
110
  }
112
111
  TestDescriptor2.save = save;
113
112
  function merge(previous, updates) {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/test-descriptor.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,SAAS,UAAU,iBAAiB;AACpC,SAAS,sBAAsB;AA8BxB,IAAU;AAAA,CAAV,CAAUA,oBAAV;AAGI,EAAMA,gBAAA,mBAAmB;AAezB,WAAS,aAAa,UAAmF;AAC5G,UAAM,EAAE,cAAc,OAAO,KAAK,IAAI;AAItC,QAAI;AACJ,QAAI,cAAc;AACd,kBAAY,CAAC;AACb,iBAAW,QAAQ,cAAc;AAC7B,YAAI,OAAO;AACX,mBAAW,WAAW,KAAK,MAAM,GAAG,EAAE,OAAO,CAAAC,aAAWA,aAAY,EAAE,GAAG;AACrE,iBAAO,KAAK,OAAO,MAAM,CAAC;AAAA,QAC9B;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,aAAa;AAEjB,WAAO,CAAC,YAAY,YAAY;AAE5B,UAAI,CAAC,cAAc,aAAa,CAAC,UAAU,WAAW,IAAI,GAAG;AACzD;AAAA,MACJ;AAGA,UAAI,QAAQ,WAAW,SAAS,QAAW;AACvC,cAAM,OAAO,IAAI,eAAe,WAAW,IAAI;AAC/C,YAAI,CAAC,KAAK,SAAS,IAAI,GAAG;AACtB;AAAA,QACJ;AAAA,MACJ;AAGA,UAAI,WAAW,SAAS,SAAS;AAC7B,cAAM,kBAAkB;AACxB,YAAI;AACA,cAAI,YAAY;AACZ,yBAAa;AAAA,UACjB,WAAW,WAAW;AAClB,wBAAY,UAAU,WAAW,IAAI;AAAA,UACzC;AAEA,gBAAM,SAAS,QAAQ;AACvB,cAAI,CAAC,QAAQ,SAAS,QAAQ;AAC1B;AAAA,UACJ;AAEA,iBAAO;AAAA,QACX,UAAE;AACE,sBAAY;AAAA,QAChB;AAAA,MACJ;AAGA,UAAI,SAAS,CAAC,MAAM,SAAS,WAAW,IAAI,GAAG;AAC3C;AAAA,MACJ;AAEA,aAAO;AAAA,IACX;AAAA,EACJ;AA5DO,EAAAD,gBAAS;AAqET,WAAS,OAAO,YAA4B,WAAkD;AACjG,WAAO,UAAU,YAAY,MAAM;AAC/B,UAAI,EAAE,QAAQ,IAAI;AAElB,UAAI,SAAS;AACT,kBAAU,QAAQ,IAAI,YAAU,OAAO,QAAQ,SAAS,CAAC,EAAE,OAAO,YAAU,MAAM;AAAA,MACtF;AAEA,UAAI,WAAW,YAAY,UAAa,SAAS,WAAW,WAAW,SAAS,QAAQ;AACpF,eAAO;AAAA,MACX;AAEA,mBAAa,EAAE,GAAG,WAAW;AAC7B,UAAI,SAAS,QAAQ;AACjB,mBAAW,UAAU;AAAA,MACzB,OAAO;AACH,eAAO,WAAW;AAAA,MACtB;AAEA,aAAO;AAAA,IACX,CAAC;AAAA,EACL;AArBO,EAAAA,gBAAS;AA0BT,WAAS,MAAM,YAA4B,IAA0D;AACxG,QAAI,GAAG,UAAU,MAAM,OAAO;AAC1B;AAAA,IACJ;AAEA,QAAI,CAAC,WAAW,SAAS;AACrB;AAAA,IACJ;AAEA,eAAW,UAAU,WAAW,SAAS;AACrC,YAAM,QAAQ,EAAE;AAAA,IACpB;AAAA,EACJ;AAZO,EAAAA,gBAAS;AAiBhB,iBAAsB,KAAK,MAA4C;AACnE,QAAI,aAAkC;AAAA,MAClC,MAAM;AAAA,MACN,MAAM;AAAA,MACN,SAAS,CAAC;AAAA,IACd;AAEA,QAAI;AACA,YAAM,OAAO,MAAM,SAAS,MAAM,OAAO;AACzC,mBAAa,KAAK,MAAM,IAAI;AAC5B,UACI,OAAO,YAAY,SAAS,YAC5B,WAAW,SAAS,WACpB,CAAC,MAAM,QAAQ,WAAW,OAAO,GACnC;AACE,cAAM,IAAI,MAAM,4BAA4B,IAAI,GAAG;AAAA,MACvD;AAAA,IACJ,SAAS,GAAG;AACR,UAAK,GAAqC,SAAS,UAAU;AACzD,cAAM;AAAA,MACV;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AAxBA,EAAAA,gBAAsB;AA6BtB,iBAAsB,KAAK,MAAc,YAAiC;AACtE,UAAM,UAAU,MAAM,KAAK,UAAU,YAAY,QAAW,CAAC,CAAC;AAAA,EAClE;AAFA,EAAAA,gBAAsB;AAUf,WAAS,MAAgC,UAA0B,SAAe;AACrF,UAAM,aAAa;AAAA,MACf,GAAG;AAAA,IACP;AAEA,eAAW,QAAQ,CAAC,cAAc,UAAU,OAAO,GAAY;AAC3D,UAAI,SAAS,IAAI,MAAM,UAAa,WAAW,IAAI,MAAM,QAAW;AAChE,QAAC,WAAuC,IAAI,IAAI,SAAS,IAAI;AAAA,MACjE;AAAA,IACJ;AAEA,QAAI,SAAS,YAAY,QAAW;AAChC,aAAO;AAAA,IACX;AAEA,QAAI,QAAQ,YAAY,QAAW;AAC/B,iBAAW,UAAU,SAAS;AAC9B,aAAO;AAAA,IACX;AAEA,UAAM,iBAAiB,CAAC;AACxB,eAAW,UAAU,QAAQ,SAAS;AAClC,qBAAe,OAAO,IAAI,IAAI;AAAA,IAClC;AAEA,UAAM,aAAa,MAAsB;AACzC,eAAW,UAAU,SAAS,SAAS;AACnC,YAAM,SAAS,eAAe,OAAO,IAAI;AAEzC,UAAI,WAAW,QAAW;AACtB,mBAAW,KAAK;AAAA,UACZ,GAAG;AAAA,UACH,YAAY;AAAA,QAChB,CAAC;AACD;AAAA,MACJ;AAEA,iBAAW,KAAK,MAAM,QAAQ,MAAM,CAAC;AACrC,aAAO,eAAe,OAAO,IAAI;AAAA,IACrC;AAEA,eAAW,KAAK,GAAG,OAAO,OAAO,cAAc,CAAC;AAEhD,eAAW,UAAU;AAErB,WAAO;AAAA,EACX;AA9CO,EAAAA,gBAAS;AAmDT,WAAS,WAAW,MAAiD;AACxE,UAAM,QAAQ,oBAAI,QAAwD;AAE1E,WAAO;AAAA,MACH,YAAY;AAAA,MAEZ,WAAW,UAAU;AACjB,YAAI,SAAS;AAEb,mBAAW,WAAW,UAAU;AAC5B,cAAI,QAAQ,WAAW,GAAG,GAAG;AACzB,qBAAS;AACT;AAAA,UACJ;AAEA,cAAI,OAAO,OAAO,SAAS,CAAC,MAAM,KAAK;AACnC,qBAAS,GAAG,MAAM,IAAI,OAAO;AAC7B;AAAA,UACJ;AAEA,mBAAS,GAAG,MAAM,GAAG,OAAO;AAAA,QAChC;AAEA,eAAO;AAAA,MACX;AAAA,MAEA,QAAQ,MAAM;AACV,eAAO,KAAK,KAAK,IAAI,GAAG,WAAW,SAAS,IAAI,OAAK,EAAE,IAAI;AAAA,MAC/D;AAAA,MAEA,KAAK,MAAM;AACP,cAAM,WAAW,KAAK,MAAM,GAAG;AAE/B,cAAM,aAAa,CAAC,IAAI;AACxB,mBAAW,WAAW,UAAU;AAC5B,cAAI,YAAY,OAAO,YAAY,IAAI;AACnC;AAAA,UACJ;AAEA,cAAI,YAAY,MAAM;AAClB,gBAAI,WAAW,SAAS,GAAG;AACvB,yBAAW,IAAI;AAAA,YACnB;AACA;AAAA,UACJ;AAEA,gBAAME,cAAa,SAAS,WAAW,WAAW,SAAS,CAAC,GAAG,OAAO;AACtE,cAAI,CAACA,aAAY;AACb;AAAA,UACJ;AAEA,qBAAW,KAAKA,WAAU;AAAA,QAC9B;AAEA,cAAM,aAAa,WAAW,WAAW,SAAS,CAAC;AAEnD,cAAM,UAAU,WAAW,SAAS;AACpC,eAAO;AAAA,UACH,aAAa;AAAA,UACb,QAAQ,CAAC,WAAW,WAAW,SAAS;AAAA,UACxC;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAEA,aAAS,SAAS,YAA4B,MAA0C;AACpF,YAAM,EAAE,QAAQ,IAAI;AACpB,UAAI,CAAC,SAAS,QAAQ;AAClB;AAAA,MACJ;AAEA,UAAI,OAAO,MAAM,IAAI,UAAU;AAC/B,UAAI,CAAC,MAAM;AACP,eAAO,CAAC;AACR,mBAAW,UAAU,SAAS;AAC1B,gBAAM,WAAW,KAAK,OAAO,IAAI;AACjC,cAAI,aAAa,QAAW;AACxB,oBAAQ,SAAS,MAAM;AAAA,cACnB,KAAK;AACD;AAAA,cAEJ,KAAK;AACD,oBAAI,OAAO,SAAS,SAAS;AACzB;AAAA,gBACJ;AACA;AAAA,cAEJ,KAAK;AACD,oBAAI,OAAO,SAAS,WAAW,OAAO,SAAS,MAAM;AACjD;AAAA,gBACJ;AACA;AAAA,cAEJ,KAAK;AACD,oBAAI,OAAO,SAAS,WAAW,OAAO,SAAS,QAAQ,OAAO,SAAS,MAAM;AACzE;AAAA,gBACJ;AACA;AAAA,cAEJ,KAAK,OAAO;AACR;AAAA,YACR;AAAA,UACJ;AAEA,eAAK,OAAO,IAAI,IAAI;AAAA,QACxB;AACA,cAAM,IAAI,YAAY,IAAI;AAAA,MAC9B;AAEA,aAAO,KAAK,IAAI;AAAA,IACpB;AAAA,EACJ;AA/GO,EAAAF,gBAAS;AAAA,GA5NH;",
5
- "names": ["TestDescriptor", "segment", "descriptor"]
4
+ "mappings": "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",
5
+ "names": ["TestDescriptor", "filter", "descriptor", "memberNames"]
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@matter/testing",
3
- "version": "0.13.1-alpha.0-20250501-80c86b03e",
3
+ "version": "0.13.1-alpha.0-20250504-87f265a2e",
4
4
  "description": "Test harness for running JavaScript and Matter certification tests",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -45,7 +45,7 @@
45
45
  "#tools/ansi-text": "@matter/tools/ansi-text"
46
46
  },
47
47
  "dependencies": {
48
- "@matter/tools": "0.13.1-alpha.0-20250501-80c86b03e",
48
+ "@matter/tools": "0.13.1-alpha.0-20250504-87f265a2e",
49
49
  "@types/express": "^5.0.1",
50
50
  "ansi-colors": "^4.1.3",
51
51
  "chai": "^4.5.0",
package/src/chip/chip.ts CHANGED
@@ -12,7 +12,7 @@ import type { Container } from "../docker/container.js";
12
12
  import { afterOne, beforeOne } from "../mocha.js";
13
13
  import type { TestRunner } from "../runner.js";
14
14
  import { TestDescriptor } from "../test-descriptor.js";
15
- import { PicsFile } from "./pics-file.js";
15
+ import { PicsFile } from "./pics/file.js";
16
16
  import { State } from "./state.js";
17
17
 
18
18
  /**
@@ -28,6 +28,7 @@ import { State } from "./state.js";
28
28
  * We execute test logic within a Docker container available at {@link https://github.com/matter-js/matter.js-chip}.
29
29
  */
30
30
  export interface Chip extends chip.Builder {
31
+ (subject: Subject): chip.Builder;
31
32
  (...include: string[]): chip.Builder;
32
33
 
33
34
  /**
@@ -98,7 +99,12 @@ export interface Chip extends chip.Builder {
98
99
  /**
99
100
  * The active PICS configuration.
100
101
  */
101
- pics: PicsFile;
102
+ defaultPics: PicsFile;
103
+
104
+ /**
105
+ * The filename for default PICS in the container.
106
+ */
107
+ defaultPicsFile: string;
102
108
 
103
109
  /**
104
110
  * The timeout for tests without an explicit timeout (defaults to 30s).
@@ -140,13 +146,12 @@ function createBuilder(initial: {
140
146
  }
141
147
  }
142
148
 
143
- const predicate = TestDescriptor.predicateFor({
149
+ const tests = TestDescriptor.filter(chip.tests.descriptor, {
144
150
  includePaths: [...includePaths],
145
151
  kinds: ["py", "yaml"],
146
- pics: chip.pics,
152
+ pics: subject?.pics ?? chip.defaultPics,
147
153
  });
148
154
 
149
- const tests = TestDescriptor.filter(chip.tests.descriptor, predicate);
150
155
  if (!tests?.members) {
151
156
  return this;
152
157
  }
@@ -159,10 +164,7 @@ function createBuilder(initial: {
159
164
  },
160
165
 
161
166
  exclude(...glob: string[]) {
162
- const tests = TestDescriptor.filter(
163
- chip.tests.descriptor,
164
- TestDescriptor.predicateFor({ includePaths: globSync(glob, chip.tests) }),
165
- );
167
+ const tests = TestDescriptor.filter(chip.tests.descriptor, { includePaths: globSync(glob, chip.tests) });
166
168
 
167
169
  if (!tests) {
168
170
  return this;
@@ -231,16 +233,16 @@ function createBuilder(initial: {
231
233
  function defineTests(descriptor: TestDescriptor) {
232
234
  switch (descriptor.kind) {
233
235
  case "suite":
234
- implementSuite(descriptor);
236
+ defineSuite(descriptor);
235
237
  break;
236
238
 
237
239
  default:
238
- implementTest(descriptor);
240
+ defineTest(descriptor);
239
241
  break;
240
242
  }
241
243
  }
242
244
 
243
- function implementSuite(descriptor: TestDescriptor) {
245
+ function defineSuite(descriptor: TestDescriptor) {
244
246
  const mocha = State.mocha;
245
247
 
246
248
  const { name, members } = descriptor;
@@ -277,7 +279,7 @@ function createBuilder(initial: {
277
279
  });
278
280
  }
279
281
 
280
- function implementTest(descriptor: TestDescriptor) {
282
+ function defineTest(descriptor: TestDescriptor) {
281
283
  State.install();
282
284
  const test = chip.testFor(descriptor);
283
285
  const mochaTest = it(descriptor.name, function () {
@@ -300,8 +302,16 @@ function createBuilder(initial: {
300
302
  }
301
303
  }
302
304
 
303
- function chipFn(...include: string[]): chip.Builder {
304
- return createBuilder({ include });
305
+ function chipFn(subjectOrFirstInclusion: Subject.Factory | string | undefined, ...include: string[]): chip.Builder {
306
+ if (typeof subjectOrFirstInclusion === "function") {
307
+ return chip.subject(subjectOrFirstInclusion).include(...include);
308
+ }
309
+
310
+ if (typeof subjectOrFirstInclusion === "string") {
311
+ include = [subjectOrFirstInclusion, ...include];
312
+ }
313
+
314
+ return createBuilder({ include: [...include] });
305
315
  }
306
316
 
307
317
  Object.defineProperties(chipFn, {
@@ -339,8 +349,12 @@ Object.defineProperties(chipFn, {
339
349
  get: () => State.isInitialized,
340
350
  },
341
351
 
342
- pics: {
343
- get: () => State.pics,
352
+ defaultPics: {
353
+ get: () => State.defaultPics,
354
+ },
355
+
356
+ defaultPicsFilename: {
357
+ get: () => State.defaultPicsFilename,
344
358
  },
345
359
 
346
360
  pullBeforeTesting: {
@@ -17,9 +17,13 @@ export abstract class CommandPipe {
17
17
  #filename: string;
18
18
  #subject: BackchannelCommand.Subject;
19
19
 
20
- constructor(subject: BackchannelCommand.Subject, appName: string) {
20
+ constructor(subject: BackchannelCommand.Subject, filename: string) {
21
21
  this.#subject = subject;
22
- this.#filename = `/tmp/chip_${appName}_fifo_${process.pid}`;
22
+ this.#filename = filename;
23
+ }
24
+
25
+ static filenameFor(app: string) {
26
+ return `/tmp/chip_${app}_fifo_${process.pid}`;
23
27
  }
24
28
 
25
29
  get filename() {
@@ -5,6 +5,7 @@
5
5
  */
6
6
 
7
7
  import { env } from "node:process";
8
+ import { PicsSource } from "./pics/source.js";
8
9
 
9
10
  /**
10
11
  * Significant locations within the test container.
@@ -17,7 +18,6 @@ export namespace ContainerPaths {
17
18
  export const descriptorFile = `/lib/test-descriptor.json`;
18
19
  export const pythonCommissioner = `/src/python_testing/hello_test.py`;
19
20
  export const chipPics = "/src/app/tests/suites/certification/ci-pics-values";
20
- export const matterJsPics = "/matter-js-pics.properties";
21
21
  export const accessoryClient =
22
22
  "/scripts/py_matter_yamltests/matter_yamltests/pseudo_clusters/clusters/accessory_server_bridge.py";
23
23
  }
@@ -56,8 +56,6 @@ export namespace Constants {
56
56
  export const initTimeout = 60_000;
57
57
  export const defaultTimeoutMs = 60_000;
58
58
 
59
- export const localPicsOverrideFile = "src/chip/matter-js-pics.properties";
60
-
61
59
  /**
62
60
  * We set the commissioning timeout value very low because this timeout is tested and waiting the default 180s.
63
61
  * sucks. The timeout must be high enough for actual commissioning to succeed.
@@ -74,9 +72,6 @@ export namespace Constants {
74
72
  * Default arguments provided to the YAML runner.
75
73
  */
76
74
  export const YamlRunnerArgs = [
77
- "--PICS",
78
- ContainerPaths.matterJsPics,
79
-
80
75
  // This makes CHIP logs unconditional which would be nice if it intermingled with our logs but currently they
81
76
  // only appear once test is run; haven't tracked down how to stream them yet
82
77
  // "--show_adapter_logs",
@@ -93,12 +88,17 @@ export namespace Constants {
93
88
  * Default arguments provided to the Python runner.
94
89
  */
95
90
  export const PythonRunnerArgs = [
96
- "--PICS",
97
- ContainerPaths.matterJsPics,
98
-
99
91
  // Our PID is meaningless within the container but Python uses in the name of the command pipe. We pass in our
100
92
  // actual PID to ensure no collision if multiple instances run
101
93
  "--app-pid",
102
94
  process.pid.toString(),
103
95
  ];
96
+
97
+ export const defaultPics: PicsSource = {
98
+ kind: "composite",
99
+ sources: [
100
+ { kind: "chip", name: ContainerPaths.chipPics },
101
+ { kind: "file", name: "src/chip/matter-js-pics.properties" },
102
+ ],
103
+ };
104
104
  }