@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
@@ -11,6 +11,7 @@ import { Terminal } from "../docker/terminal.js";
11
11
  import { deansify } from "../util/text.js";
12
12
  import { parseStep } from "./chip-test-common.js";
13
13
  import { Constants, ContainerPaths } from "./config.js";
14
+ import { PicsSource } from "./pics/source.js";
14
15
 
15
16
  export class YamlTest extends BaseTest {
16
17
  async initializeSubject(subject: Subject) {
@@ -54,7 +55,11 @@ export class YamlTest extends BaseTest {
54
55
  }
55
56
  }
56
57
 
57
- async invoke(_subject: Subject, step: (title: string) => void, args: string[]) {
58
+ async invoke(subject: Subject, step: (title: string) => void, args: string[]) {
59
+ if (!args.includes("--PICS")) {
60
+ args.push("--PICS", await PicsSource.install(subject.pics));
61
+ }
62
+
58
63
  const terminal = await this.container.exec(
59
64
  [
60
65
  "python3",
package/src/cli.ts CHANGED
@@ -9,7 +9,7 @@ import "./util/node-shims.js";
9
9
 
10
10
  import "./global-definitions.js";
11
11
 
12
- import { Graph, Package, Project, ProjectBuilder } from "#tools";
12
+ import { Graph, JsonNotFoundError, Package, Project, ProjectBuilder } from "#tools";
13
13
  import { clear } from "node:console";
14
14
  import yargs from "yargs";
15
15
  import { hideBin } from "yargs/helpers";
@@ -28,6 +28,11 @@ enum TestType {
28
28
 
29
29
  Error.stackTraceLimit = 50;
30
30
 
31
+ interface Config {
32
+ allLogs?: boolean;
33
+ pull?: boolean;
34
+ }
35
+
31
36
  export async function main(argv = process.argv) {
32
37
  const testTypes = new Set<TestType>();
33
38
 
@@ -66,7 +71,7 @@ export async function main(argv = process.argv) {
66
71
  .option("trace-unhandled", { type: "boolean", describe: "Detail unhandled rejections with trace-unhandled" })
67
72
  .option("clear", { type: "boolean", describe: "Clear terminal before testing" })
68
73
  .option("report", { type: "boolean", describe: "Display test summary after testing" })
69
- .option("pull", { type: "boolean", describe: "Do not update containers before testing", default: true })
74
+ .option("pull", { type: "boolean", describe: "Update containers before testing", default: true })
70
75
  .command("*", "run all supported test types")
71
76
  .command("esm", "run tests on node (ES6 modules)", () => testTypes.add(TestType.esm))
72
77
  .command("cjs", "run tests on node (CommonJS modules)", () => testTypes.add(TestType.cjs))
@@ -85,11 +90,29 @@ export async function main(argv = process.argv) {
85
90
  packageLocation = firstSpec;
86
91
  }
87
92
 
88
- chip.pullBeforeTesting = args.pull;
89
-
90
93
  const builder = new ProjectBuilder();
91
94
  const pkg = new Package({ path: packageLocation });
92
95
 
96
+ // Load configuration
97
+ try {
98
+ const found = pkg.findJson(".matter-test.json");
99
+ const config = found.json as Config;
100
+
101
+ if ("allLogs" in config && !process.argv.includes("--no-all-logs")) {
102
+ args.allLogs = !!config.allLogs;
103
+ }
104
+
105
+ if ("pull" in config && !process.argv.includes("--no-pull")) {
106
+ args.pull = !!config.pull;
107
+ }
108
+ } catch (e) {
109
+ if (!(e instanceof JsonNotFoundError)) {
110
+ throw e;
111
+ }
112
+ }
113
+
114
+ chip.pullBeforeTesting = args.pull;
115
+
93
116
  // If the location is a workspace, test all packages with test
94
117
  if (pkg.isWorkspace) {
95
118
  const graph = await Graph.load(pkg);
@@ -133,8 +156,9 @@ export async function main(argv = process.argv) {
133
156
  if (ls) {
134
157
  const progress = pkg.start("Inspecting");
135
158
  const runner = new TestRunner(pkg, progress, args);
159
+ const report = await defaultDescriptor(runner);
136
160
  progress.close();
137
- printReport(await defaultDescriptor(runner), true);
161
+ printReport(report, true);
138
162
  console.log();
139
163
  return;
140
164
  }
@@ -4,6 +4,7 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
+ import { PicsFile } from "../chip/pics/file.js";
7
8
  import { BackchannelCommand } from "./backchannel.js";
8
9
 
9
10
  /**
@@ -11,7 +12,9 @@ import { BackchannelCommand } from "./backchannel.js";
11
12
  */
12
13
  export interface Subject {
13
14
  id: string;
15
+ app: string;
14
16
  commissioning: Subject.CommissioningParameters;
17
+ pics: PicsFile;
15
18
  initialize(): Promise<void>;
16
19
  start(): Promise<void>;
17
20
  stop(): Promise<void>;
@@ -30,6 +33,7 @@ export namespace Subject {
30
33
  */
31
34
  export interface Factory {
32
35
  (domain: string): Subject;
36
+ pics?: PicsFile;
33
37
  }
34
38
 
35
39
  export type CommissioningMethod = "onnetwork";
@@ -8,21 +8,21 @@ import { ansi, Printer, STATUS_ICON_FAILURE } from "#tools";
8
8
  import { FailureDetail } from "./failure-detail.js";
9
9
  import { TextDiff } from "./text-diff.js";
10
10
 
11
- const BEGIN_ERROR = `${ansi.red}┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┅\n┃${ansi.not.red}`;
11
+ const BEGIN_ERROR = `${ansi.red}┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┅${ansi.not.red}`;
12
12
  const OUTER_PREFIX = `${ansi.red}┃ ${ansi.not.red}`;
13
13
  const INNER_PREFIX = `${ansi.dim}┆ ${ansi.not.dim}`;
14
- const END_ERROR = `${ansi.red}┃\n┗━┅${ansi.not.red}`;
14
+ const END_ERROR = `${ansi.red}┗━┅${ansi.not.red}`;
15
15
 
16
16
  export namespace FailureReporter {
17
17
  export function report(out: Printer, failure: FailureDetail, title: string) {
18
- out(BEGIN_ERROR, "\n");
18
+ out(BEGIN_ERROR, "\n", OUTER_PREFIX, "\n");
19
19
 
20
20
  out.state({ linePrefix: OUTER_PREFIX }, () => {
21
21
  out(ansi.bold.red(STATUS_ICON_FAILURE), " ", title, "\n");
22
22
  dumpDetails(out, failure);
23
23
  });
24
24
 
25
- out(END_ERROR, "\n");
25
+ out(OUTER_PREFIX, "\n", END_ERROR, "\n");
26
26
  }
27
27
  }
28
28
 
@@ -4,10 +4,10 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- import { Progress, STATUS_ICON_FAILURE, STATUS_ICON_SUCCESS } from "@matter/tools";
7
+ import { Progress, STATUS_ICON_FAILURE, STATUS_ICON_SKIPPED, STATUS_ICON_SUCCESS } from "@matter/tools";
8
8
  import colors from "ansi-colors";
9
9
  import { chip } from "./chip/chip.js";
10
- import { InvalidPicsExpressionError, PicsExpression } from "./chip/pics-expression.js";
10
+ import { InvalidPicsExpressionError, PicsExpression } from "./chip/pics/expression.js";
11
11
  import { createNodejsMocha } from "./nodejs.js";
12
12
  import { TestRunner } from "./runner.js";
13
13
  import { TestDescriptor } from "./test-descriptor.js";
@@ -64,7 +64,7 @@ function printDescriptor(descriptor: TestDescriptor, includeDisabled?: boolean,
64
64
  break;
65
65
 
66
66
  default:
67
- title = ` ${title}`;
67
+ title = `${STATUS_ICON_SKIPPED} ${title}`;
68
68
  }
69
69
  }
70
70
 
@@ -83,7 +83,7 @@ function printDescriptor(descriptor: TestDescriptor, includeDisabled?: boolean,
83
83
  if (member.pics) {
84
84
  try {
85
85
  const expr = new PicsExpression(member.pics);
86
- if (expr.evaluate(chip.pics)) {
86
+ if (expr.evaluate(member.picsValues ?? chip.defaultPics)) {
87
87
  title = `${title} ${colors.dim.green(member.pics)}`;
88
88
  } else {
89
89
  title = `${title} ${colors.dim.red(member.pics)}`;
@@ -98,7 +98,11 @@ function printDescriptor(descriptor: TestDescriptor, includeDisabled?: boolean,
98
98
  }
99
99
 
100
100
  if (member.path && member.path !== path) {
101
- title = `${title} ${colors.dim.blueBright(member.path)}`;
101
+ let { path } = member;
102
+ if (member.subpath) {
103
+ path = `${path}#${member.subpath}`;
104
+ }
105
+ title = `${title} ${colors.dim.blueBright(path)}`;
102
106
  }
103
107
 
104
108
  if (member.kind === "manual") {
@@ -131,19 +135,10 @@ export async function defaultDescriptor(runner: TestRunner) {
131
135
  used.add(descriptor);
132
136
  });
133
137
 
134
- let unused = TestDescriptor.filter(chip.tests.descriptor, (descriptor, recurse) => {
135
- if (descriptor.kind === "py" || descriptor.kind === "yaml") {
136
- if (used.has(descriptor)) {
137
- return;
138
- }
139
- }
140
-
141
- const result = recurse();
142
- if (!result || (result.kind === "suite" && !result.members?.length)) {
143
- return;
144
- }
145
-
146
- return result;
138
+ let unused = TestDescriptor.filter(chip.tests.descriptor, {
139
+ predicate(descriptor) {
140
+ return (descriptor.kind !== "py" && descriptor.kind !== "yaml") || !used.has(descriptor);
141
+ },
147
142
  });
148
143
 
149
144
  if (unused) {
@@ -6,8 +6,8 @@
6
6
 
7
7
  import type { FilesystemSync } from "#tools";
8
8
  import { readFile, writeFile } from "node:fs/promises";
9
- import { PicsExpression } from "./chip/pics-expression.js";
10
- import type { PicsFile } from "./chip/pics-file.js";
9
+ import { PicsExpression } from "./chip/pics/expression.js";
10
+ import type { PicsFile } from "./chip/pics/file.js";
11
11
 
12
12
  /**
13
13
  * Metadata for a single test or group of tests.
@@ -16,6 +16,8 @@ export interface TestDescriptor {
16
16
  name: string;
17
17
  kind: TestDescriptor.Kind;
18
18
  path?: string;
19
+ subpath?: string;
20
+ app?: string;
19
21
  members?: TestDescriptor[];
20
22
  isDisabled?: boolean;
21
23
  timeoutMs?: number;
@@ -26,6 +28,7 @@ export interface TestDescriptor {
26
28
  runAt?: Date;
27
29
  passed?: boolean;
28
30
  durationMs?: number;
31
+ picsValues?: PicsFile;
29
32
  }
30
33
 
31
34
  export interface TestFileDescriptor extends TestDescriptor {
@@ -36,7 +39,16 @@ export interface TestSuiteDescriptor extends TestDescriptor {
36
39
  members: TestDescriptor[];
37
40
  }
38
41
 
42
+ export interface RootTestDescriptor extends TestDescriptor {
43
+ format?: number;
44
+ }
45
+
39
46
  export namespace TestDescriptor {
47
+ /**
48
+ * Used to validate format of test descriptor files.
49
+ */
50
+ export const CURRENT_FORMAT = 2;
51
+
40
52
  export type Kind = "suite" | "js" | "py" | "yaml" | "manual" | "step";
41
53
 
42
54
  export const DEFAULT_FILENAME = "build/test-report.json";
@@ -49,37 +61,50 @@ export namespace TestDescriptor {
49
61
  descriptor: TestDescriptor;
50
62
  }
51
63
 
64
+ export type Criteria = {
65
+ includePaths?: string[];
66
+ kinds?: Kind[];
67
+ pics?: PicsFile;
68
+ predicate?: (descriptor: TestDescriptor) => boolean;
69
+ };
70
+
52
71
  /**
53
- * Create a filtering predicate based on specified criteria.
72
+ * Create a filter function for specified criteria.
54
73
  *
55
- * The predicate treats tests as atomic and ignores empty suites.
74
+ * The filter treats tests as atomic and ignores empty suites.
56
75
  */
57
- export function predicateFor(criteria: { includePaths?: string[]; kinds?: Kind[]; pics?: PicsFile }): Predicate {
58
- const { includePaths, kinds, pics } = criteria;
76
+ export function filter(descriptor: TestDescriptor, criteria: Criteria): TestDescriptor | undefined {
77
+ const { includePaths, kinds, pics, predicate } = criteria;
59
78
 
60
79
  // Index the inclusion paths so we can efficiently short-circuit search
61
- interface InclusionNode extends Record<string, InclusionNode> {}
62
- let inclusion: undefined | InclusionNode;
80
+ interface NameNode extends Record<string, NameNode | undefined> {}
81
+ let memberNames: undefined | NameNode;
63
82
  if (includePaths) {
64
- inclusion = {};
83
+ memberNames = {};
65
84
  for (const path of includePaths) {
66
- let incl = inclusion;
67
- for (const segment of path.split("/").filter(segment => segment !== "")) {
68
- incl = incl[segment] ??= {};
85
+ let incl = memberNames;
86
+ const segments = path.split("/");
87
+ if (segments[0] === "") {
88
+ segments[0] = descriptor.name;
89
+ }
90
+ for (const segment of segments) {
91
+ incl = (incl[segment] as NameNode) ??= {};
69
92
  }
70
93
  }
71
94
  }
72
95
 
73
- let firstLevel = true;
96
+ return filter(descriptor, memberNames);
74
97
 
75
- return (descriptor, recurse) => {
98
+ function filter(descriptor: TestDescriptor, names?: NameNode): TestDescriptor | undefined {
76
99
  // Short circuit irrelevant paths
77
- if (!firstLevel && inclusion && !inclusion[descriptor.name]) {
100
+ const memberNames = names?.[descriptor.name];
101
+ if (names && !memberNames) {
78
102
  return;
79
103
  }
80
104
 
81
105
  // Apply PICS to any descriptor with a PICS expression
82
106
  if (pics && descriptor.pics !== undefined) {
107
+ descriptor.picsValues = pics;
83
108
  const expr = new PicsExpression(descriptor.pics);
84
109
  if (!expr.evaluate(pics)) {
85
110
  return;
@@ -88,23 +113,34 @@ export namespace TestDescriptor {
88
113
 
89
114
  // Recurse into suites
90
115
  if (descriptor.kind === "suite") {
91
- const revertInclusion = inclusion;
92
- try {
93
- if (firstLevel) {
94
- firstLevel = false;
95
- } else if (inclusion) {
96
- inclusion = inclusion[descriptor.name];
97
- }
116
+ const { members } = descriptor;
117
+ if (!members?.length) {
118
+ return;
119
+ }
98
120
 
99
- const result = recurse();
100
- if (!result?.members?.length) {
101
- return;
121
+ let filteredMembers: undefined | TestDescriptor[];
122
+ for (const member of members) {
123
+ const filteredMember = filter(member, memberNames);
124
+ if (!filteredMember) {
125
+ continue;
102
126
  }
127
+ if (predicate && !predicate(filteredMember)) {
128
+ continue;
129
+ }
130
+ if (filteredMembers) {
131
+ filteredMembers.push(filteredMember);
132
+ } else {
133
+ filteredMembers = [filteredMember];
134
+ }
135
+ }
103
136
 
104
- return result;
105
- } finally {
106
- inclusion = revertInclusion;
137
+ // Return filtered member if any children apply
138
+ if (filteredMembers) {
139
+ return { ...descriptor, members: filteredMembers };
107
140
  }
141
+
142
+ // All members excluded
143
+ return;
108
144
  }
109
145
 
110
146
  // Filter tests based on kind
@@ -113,37 +149,7 @@ export namespace TestDescriptor {
113
149
  }
114
150
 
115
151
  return descriptor;
116
- };
117
- }
118
-
119
- export interface Predicate {
120
- (descriptor: TestDescriptor, recurse: () => TestDescriptor | undefined): TestDescriptor | undefined;
121
- }
122
-
123
- /**
124
- * Filter a {@link TestDescriptor} hierarchy using a predicate.
125
- */
126
- export function filter(descriptor: TestDescriptor, predicate: Predicate): TestDescriptor | undefined {
127
- return predicate(descriptor, () => {
128
- let { members } = descriptor;
129
-
130
- if (members) {
131
- members = members.map(member => filter(member, predicate)).filter(member => member) as TestDescriptor[];
132
- }
133
-
134
- if (descriptor.members === undefined || members?.length === descriptor.members?.length) {
135
- return descriptor;
136
- }
137
-
138
- descriptor = { ...descriptor };
139
- if (members?.length) {
140
- descriptor.members = members;
141
- } else {
142
- delete descriptor.members;
143
- }
144
-
145
- return descriptor;
146
- });
152
+ }
147
153
  }
148
154
 
149
155
  /**
@@ -175,7 +181,7 @@ export namespace TestDescriptor {
175
181
 
176
182
  try {
177
183
  const json = await readFile(path, "utf-8");
178
- descriptor = JSON.parse(json);
184
+ descriptor = JSON.parse(json, (k, v) => (k === "picsValues" ? undefined : v));
179
185
  if (
180
186
  typeof descriptor?.name !== "string" ||
181
187
  descriptor.kind !== "suite" ||
@@ -196,7 +202,10 @@ export namespace TestDescriptor {
196
202
  * Persist a descriptor.
197
203
  */
198
204
  export async function save(path: string, descriptor: TestSuiteDescriptor) {
199
- await writeFile(path, JSON.stringify(descriptor, undefined, 4));
205
+ await writeFile(
206
+ path,
207
+ JSON.stringify(descriptor, (k, v) => (k === "picsValues" ? undefined : v), 4),
208
+ );
200
209
  }
201
210
 
202
211
  /**
package/src/tsconfig.json CHANGED
@@ -1,16 +1,20 @@
1
1
  {
2
2
  "extends": "../../tools/tsc/tsconfig.lib.json",
3
3
  "compilerOptions": {
4
+ "allowJs": true,
4
5
  "types": [
5
6
  "node"
6
7
  ]
7
8
  },
8
9
  "include": [
9
- "**/*.ts"
10
+ "**/*.ts",
11
+ "**/*.mjs",
12
+ "**/*.cjs",
13
+ "**/*.cts"
10
14
  ],
11
15
  "references": [
12
16
  {
13
17
  "path": "../../tools/src"
14
18
  }
15
19
  ]
16
- }
20
+ }
@@ -1 +0,0 @@
1
- {"version":3,"file":"pics-expression.d.ts","sourceRoot":"","sources":["../../../src/chip/pics-expression.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C;;GAEG;AACH,qBAAa,cAAc;;gBAIX,UAAU,EAAE,MAAM;IAK9B,QAAQ,CAAC,IAAI,EAAE,QAAQ;IAIvB,QAAQ;CAGX;AAED,UAAU,IAAI;IACV,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAChB;AAeD,qBAAa,0BAA2B,SAAQ,KAAK;gBACrC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAShD;AAgED,QAAA,MAAM,OAAO,oCAAqC,CAAC;AACnD,KAAK,UAAU,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3C,KAAK,KAAK,GAAG;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GAAG,IAAI,CAAC"}
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/chip/pics-expression.ts"],
4
- "mappings": "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",
5
- "names": ["tokenizer", "result"]
6
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"pics-file.d.ts","sourceRoot":"","sources":["../../../src/chip/pics-file.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;;;;;;;;GASG;AACH,qBAAa,QAAQ;;gBAIL,UAAU,EAAE,MAAM,EAAE,MAAM,UAAQ;IAO9C,IAAI,KAAK,aAER;IAED,IAAI,MAAM,2BAST;IAED,QAAQ;IAIR,KAAK,CAAC,KAAK,EAAE,QAAQ;IA8BrB,IAAI,CAAC,IAAI,EAAE,MAAM;CAGpB"}
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/chip/pics-file.ts"],
4
- "mappings": "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",
5
- "names": []
6
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"pics-expression.d.ts","sourceRoot":"","sources":["../../../src/chip/pics-expression.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C;;GAEG;AACH,qBAAa,cAAc;;gBAIX,UAAU,EAAE,MAAM;IAK9B,QAAQ,CAAC,IAAI,EAAE,QAAQ;IAIvB,QAAQ;CAGX;AAED,UAAU,IAAI;IACV,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAChB;AAeD,qBAAa,0BAA2B,SAAQ,KAAK;gBACrC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAShD;AAgED,QAAA,MAAM,OAAO,oCAAqC,CAAC;AACnD,KAAK,UAAU,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3C,KAAK,KAAK,GAAG;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GAAG,IAAI,CAAC"}
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/chip/pics-expression.ts"],
4
- "mappings": "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",
5
- "names": ["tokenizer", "result"]
6
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"pics-file.d.ts","sourceRoot":"","sources":["../../../src/chip/pics-file.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;;;;;;;;GASG;AACH,qBAAa,QAAQ;;gBAIL,UAAU,EAAE,MAAM,EAAE,MAAM,UAAQ;IAO9C,IAAI,KAAK,aAER;IAED,IAAI,MAAM,2BAST;IAED,QAAQ;IAIR,KAAK,CAAC,KAAK,EAAE,QAAQ;IA8BrB,IAAI,CAAC,IAAI,EAAE,MAAM;CAGpB"}
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/chip/pics-file.ts"],
4
- "mappings": "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",
5
- "names": []
6
- }