@matter/testing 0.17.9 → 0.18.0-alpha.0-20260812-4d7f2790e
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/chai.js +4 -4
- package/dist/cjs/chai.js.map +2 -2
- package/dist/cjs/chip/cert/cert-context.d.ts +115 -0
- package/dist/cjs/chip/cert/cert-context.d.ts.map +1 -0
- package/dist/cjs/chip/cert/cert-context.js +22 -0
- package/dist/cjs/chip/cert/cert-context.js.map +6 -0
- package/dist/cjs/chip/cert/cert-dsl.d.ts +48 -0
- package/dist/cjs/chip/cert/cert-dsl.d.ts.map +1 -0
- package/dist/cjs/chip/cert/cert-dsl.js +308 -0
- package/dist/cjs/chip/cert/cert-dsl.js.map +6 -0
- package/dist/cjs/chip/cert/cert-test.d.ts +46 -0
- package/dist/cjs/chip/cert/cert-test.d.ts.map +1 -0
- package/dist/cjs/chip/cert/cert-test.js +250 -0
- package/dist/cjs/chip/cert/cert-test.js.map +6 -0
- package/dist/cjs/chip/cert/chip-app-subject.d.ts +80 -0
- package/dist/cjs/chip/cert/chip-app-subject.d.ts.map +1 -0
- package/dist/cjs/chip/cert/chip-app-subject.js +337 -0
- package/dist/cjs/chip/cert/chip-app-subject.js.map +6 -0
- package/dist/cjs/chip/cert/controller-adapter.d.ts +119 -0
- package/dist/cjs/chip/cert/controller-adapter.d.ts.map +1 -0
- package/dist/cjs/chip/cert/controller-adapter.js +45 -0
- package/dist/cjs/chip/cert/controller-adapter.js.map +6 -0
- package/dist/cjs/chip/cert/device-config.d.ts +15 -0
- package/dist/cjs/chip/cert/device-config.d.ts.map +1 -0
- package/dist/cjs/chip/cert/device-config.js +43 -0
- package/dist/cjs/chip/cert/device-config.js.map +6 -0
- package/dist/cjs/chip/cert/evidence.d.ts +70 -0
- package/dist/cjs/chip/cert/evidence.d.ts.map +1 -0
- package/dist/cjs/chip/cert/evidence.js +128 -0
- package/dist/cjs/chip/cert/evidence.js.map +6 -0
- package/dist/cjs/chip/cert/log-follower.d.ts +96 -0
- package/dist/cjs/chip/cert/log-follower.d.ts.map +1 -0
- package/dist/cjs/chip/cert/log-follower.js +209 -0
- package/dist/cjs/chip/cert/log-follower.js.map +6 -0
- package/dist/cjs/chip/cert/matterjs-subject-registry.d.ts +22 -0
- package/dist/cjs/chip/cert/matterjs-subject-registry.d.ts.map +1 -0
- package/dist/cjs/chip/cert/matterjs-subject-registry.js +40 -0
- package/dist/cjs/chip/cert/matterjs-subject-registry.js.map +6 -0
- package/dist/cjs/chip/cert/prompt-driven-python-test.d.ts +40 -0
- package/dist/cjs/chip/cert/prompt-driven-python-test.d.ts.map +1 -0
- package/dist/cjs/chip/cert/prompt-driven-python-test.js +77 -0
- package/dist/cjs/chip/cert/prompt-driven-python-test.js.map +6 -0
- package/dist/cjs/chip/chip-bins.d.ts +132 -0
- package/dist/cjs/chip/chip-bins.d.ts.map +1 -0
- package/dist/cjs/chip/chip-bins.js +232 -0
- package/dist/cjs/chip/chip-bins.js.map +6 -0
- package/dist/cjs/chip/chip-test-common.d.ts.map +1 -1
- package/dist/cjs/chip/chip-test-common.js +1 -1
- package/dist/cjs/chip/chip-test-common.js.map +1 -1
- package/dist/cjs/chip/chip.d.ts.map +1 -1
- package/dist/cjs/chip/chip.js +1 -1
- package/dist/cjs/chip/chip.js.map +1 -1
- package/dist/cjs/chip/config.d.ts +26 -0
- package/dist/cjs/chip/config.d.ts.map +1 -1
- package/dist/cjs/chip/config.js +11 -3
- package/dist/cjs/chip/config.js.map +1 -1
- package/dist/cjs/chip/index.d.ts +26 -0
- package/dist/cjs/chip/index.d.ts.map +1 -1
- package/dist/cjs/chip/index.js +49 -0
- package/dist/cjs/chip/index.js.map +2 -2
- package/dist/cjs/chip/pics/file.d.ts +8 -0
- package/dist/cjs/chip/pics/file.d.ts.map +1 -1
- package/dist/cjs/chip/pics/file.js +4 -1
- package/dist/cjs/chip/pics/file.js.map +1 -1
- package/dist/cjs/chip/pics/source.d.ts +8 -5
- package/dist/cjs/chip/pics/source.d.ts.map +1 -1
- package/dist/cjs/chip/pics/source.js +25 -17
- package/dist/cjs/chip/pics/source.js.map +1 -1
- package/dist/cjs/chip/python-test.d.ts +12 -0
- package/dist/cjs/chip/python-test.d.ts.map +1 -1
- package/dist/cjs/chip/python-test.js +6 -4
- package/dist/cjs/chip/python-test.js.map +1 -1
- package/dist/cjs/chip/state.d.ts.map +1 -1
- package/dist/cjs/chip/state.js +24 -7
- package/dist/cjs/chip/state.js.map +1 -1
- package/dist/cjs/chip/yaml-test.js +1 -1
- package/dist/cjs/chip/yaml-test.js.map +1 -1
- package/dist/cjs/cli.d.ts.map +1 -1
- package/dist/cjs/cli.js +33 -2
- package/dist/cjs/cli.js.map +1 -1
- package/dist/cjs/device/backchannel.d.ts.map +1 -1
- package/dist/cjs/device/subject.d.ts.map +1 -1
- package/dist/cjs/device/test.d.ts.map +1 -1
- package/dist/cjs/docker/container.d.ts.map +1 -1
- package/dist/cjs/docker/docker.d.ts.map +1 -1
- package/dist/cjs/docker/edit.d.ts.map +1 -1
- package/dist/cjs/docker/errors.d.ts.map +1 -1
- package/dist/cjs/docker/network.d.ts.map +1 -1
- package/dist/cjs/docker/terminal.d.ts.map +1 -1
- package/dist/cjs/failure-reporter.d.ts.map +1 -1
- package/dist/cjs/global-declarations.d.js +0 -1
- package/dist/cjs/global-declarations.d.js.map +1 -1
- package/dist/cjs/global-declarations.d.ts +2 -2
- package/dist/cjs/global-definitions.js +17 -4
- package/dist/cjs/global-definitions.js.map +2 -2
- package/dist/cjs/index.d.js +2 -0
- package/dist/cjs/index.d.js.map +1 -1
- package/dist/cjs/index.d.ts +3 -0
- package/dist/cjs/index.js +2 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/mocha.d.ts.map +1 -1
- package/dist/cjs/mocha.js +5 -0
- package/dist/cjs/mocha.js.map +1 -1
- package/dist/cjs/mocharc.cjs +4 -3
- package/dist/cjs/options.d.ts.map +1 -1
- package/dist/cjs/print-report.js +1 -1
- package/dist/cjs/print-report.js.map +1 -1
- package/dist/cjs/test-descriptor.d.ts +1 -1
- package/dist/cjs/test-descriptor.d.ts.map +1 -1
- package/dist/cjs/text-diff.d.ts.map +1 -1
- package/dist/cjs/util/async.d.ts +30 -0
- package/dist/cjs/util/async.d.ts.map +1 -0
- package/dist/cjs/util/async.js +85 -0
- package/dist/cjs/util/async.js.map +6 -0
- package/dist/cjs/util/trace-unhandled.d.ts.map +1 -1
- package/dist/cjs/util/wtf.d.ts.map +1 -1
- package/dist/cjs/util/wtf.js +1 -1
- package/dist/cjs/util/wtf.js.map +1 -1
- package/dist/cjs/web.d.ts.map +1 -1
- package/dist/cjs/web.js +5 -1
- package/dist/cjs/web.js.map +1 -1
- package/dist/esm/chai.js +1 -1
- package/dist/esm/chai.js.map +1 -1
- package/dist/esm/chip/cert/cert-context.d.ts +115 -0
- package/dist/esm/chip/cert/cert-context.d.ts.map +1 -0
- package/dist/esm/chip/cert/cert-context.js +6 -0
- package/dist/esm/chip/cert/cert-context.js.map +6 -0
- package/dist/esm/chip/cert/cert-dsl.d.ts +48 -0
- package/dist/esm/chip/cert/cert-dsl.d.ts.map +1 -0
- package/dist/esm/chip/cert/cert-dsl.js +288 -0
- package/dist/esm/chip/cert/cert-dsl.js.map +6 -0
- package/dist/esm/chip/cert/cert-test.d.ts +46 -0
- package/dist/esm/chip/cert/cert-test.d.ts.map +1 -0
- package/dist/esm/chip/cert/cert-test.js +230 -0
- package/dist/esm/chip/cert/cert-test.js.map +6 -0
- package/dist/esm/chip/cert/chip-app-subject.d.ts +80 -0
- package/dist/esm/chip/cert/chip-app-subject.d.ts.map +1 -0
- package/dist/esm/chip/cert/chip-app-subject.js +317 -0
- package/dist/esm/chip/cert/chip-app-subject.js.map +6 -0
- package/dist/esm/chip/cert/controller-adapter.d.ts +119 -0
- package/dist/esm/chip/cert/controller-adapter.d.ts.map +1 -0
- package/dist/esm/chip/cert/controller-adapter.js +25 -0
- package/dist/esm/chip/cert/controller-adapter.js.map +6 -0
- package/dist/esm/chip/cert/device-config.d.ts +15 -0
- package/dist/esm/chip/cert/device-config.d.ts.map +1 -0
- package/dist/esm/chip/cert/device-config.js +23 -0
- package/dist/esm/chip/cert/device-config.js.map +6 -0
- package/dist/esm/chip/cert/evidence.d.ts +70 -0
- package/dist/esm/chip/cert/evidence.d.ts.map +1 -0
- package/dist/esm/chip/cert/evidence.js +108 -0
- package/dist/esm/chip/cert/evidence.js.map +6 -0
- package/dist/esm/chip/cert/log-follower.d.ts +96 -0
- package/dist/esm/chip/cert/log-follower.d.ts.map +1 -0
- package/dist/esm/chip/cert/log-follower.js +189 -0
- package/dist/esm/chip/cert/log-follower.js.map +6 -0
- package/dist/esm/chip/cert/matterjs-subject-registry.d.ts +22 -0
- package/dist/esm/chip/cert/matterjs-subject-registry.d.ts.map +1 -0
- package/dist/esm/chip/cert/matterjs-subject-registry.js +20 -0
- package/dist/esm/chip/cert/matterjs-subject-registry.js.map +6 -0
- package/dist/esm/chip/cert/prompt-driven-python-test.d.ts +40 -0
- package/dist/esm/chip/cert/prompt-driven-python-test.d.ts.map +1 -0
- package/dist/esm/chip/cert/prompt-driven-python-test.js +57 -0
- package/dist/esm/chip/cert/prompt-driven-python-test.js.map +6 -0
- package/dist/esm/chip/chip-bins.d.ts +132 -0
- package/dist/esm/chip/chip-bins.d.ts.map +1 -0
- package/dist/esm/chip/chip-bins.js +212 -0
- package/dist/esm/chip/chip-bins.js.map +6 -0
- package/dist/esm/chip/chip-test-common.d.ts.map +1 -1
- package/dist/esm/chip/chip-test-common.js +1 -1
- package/dist/esm/chip/chip-test-common.js.map +1 -1
- package/dist/esm/chip/chip.d.ts.map +1 -1
- package/dist/esm/chip/chip.js +1 -1
- package/dist/esm/chip/chip.js.map +1 -1
- package/dist/esm/chip/config.d.ts +26 -0
- package/dist/esm/chip/config.d.ts.map +1 -1
- package/dist/esm/chip/config.js +11 -3
- package/dist/esm/chip/config.js.map +1 -1
- package/dist/esm/chip/index.d.ts +26 -0
- package/dist/esm/chip/index.d.ts.map +1 -1
- package/dist/esm/chip/index.js +60 -0
- package/dist/esm/chip/index.js.map +1 -1
- package/dist/esm/chip/pics/file.d.ts +8 -0
- package/dist/esm/chip/pics/file.d.ts.map +1 -1
- package/dist/esm/chip/pics/file.js +4 -1
- package/dist/esm/chip/pics/file.js.map +1 -1
- package/dist/esm/chip/pics/source.d.ts +8 -5
- package/dist/esm/chip/pics/source.d.ts.map +1 -1
- package/dist/esm/chip/pics/source.js +24 -16
- package/dist/esm/chip/pics/source.js.map +1 -1
- package/dist/esm/chip/python-test.d.ts +12 -0
- package/dist/esm/chip/python-test.d.ts.map +1 -1
- package/dist/esm/chip/python-test.js +6 -4
- package/dist/esm/chip/python-test.js.map +1 -1
- package/dist/esm/chip/state.d.ts.map +1 -1
- package/dist/esm/chip/state.js +25 -8
- package/dist/esm/chip/state.js.map +1 -1
- package/dist/esm/chip/yaml-test.js +1 -1
- package/dist/esm/chip/yaml-test.js.map +1 -1
- package/dist/esm/cli.d.ts.map +1 -1
- package/dist/esm/cli.js +33 -2
- package/dist/esm/cli.js.map +1 -1
- package/dist/esm/device/backchannel.d.ts.map +1 -1
- package/dist/esm/device/subject.d.ts.map +1 -1
- package/dist/esm/device/test.d.ts.map +1 -1
- package/dist/esm/docker/container.d.ts.map +1 -1
- package/dist/esm/docker/docker.d.ts.map +1 -1
- package/dist/esm/docker/edit.d.ts.map +1 -1
- package/dist/esm/docker/errors.d.ts.map +1 -1
- package/dist/esm/docker/network.d.ts.map +1 -1
- package/dist/esm/docker/terminal.d.ts.map +1 -1
- package/dist/esm/failure-reporter.d.ts.map +1 -1
- package/dist/esm/global-declarations.d.js +0 -1
- package/dist/esm/global-declarations.d.js.map +1 -1
- package/dist/esm/global-declarations.d.ts +2 -2
- package/dist/esm/global-definitions.js +16 -3
- package/dist/esm/global-definitions.js.map +1 -1
- package/dist/esm/index.d.js +2 -0
- package/dist/esm/index.d.js.map +1 -1
- package/dist/esm/index.d.ts +3 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/mocha.d.ts.map +1 -1
- package/dist/esm/mocha.js +5 -0
- package/dist/esm/mocha.js.map +1 -1
- package/dist/esm/mocharc.cjs +4 -3
- package/dist/esm/options.d.ts.map +1 -1
- package/dist/esm/print-report.js +1 -1
- package/dist/esm/print-report.js.map +1 -1
- package/dist/esm/test-descriptor.d.ts +1 -1
- package/dist/esm/test-descriptor.d.ts.map +1 -1
- package/dist/esm/text-diff.d.ts.map +1 -1
- package/dist/esm/util/async.d.ts +30 -0
- package/dist/esm/util/async.d.ts.map +1 -0
- package/dist/esm/util/async.js +65 -0
- package/dist/esm/util/async.js.map +6 -0
- package/dist/esm/util/trace-unhandled.d.ts.map +1 -1
- package/dist/esm/util/wtf.d.ts.map +1 -1
- package/dist/esm/util/wtf.js +1 -1
- package/dist/esm/util/wtf.js.map +1 -1
- package/dist/esm/web.d.ts.map +1 -1
- package/dist/esm/web.js +5 -1
- package/dist/esm/web.js.map +1 -1
- package/package.json +9 -9
- package/src/chai.ts +3 -3
- package/src/chip/cert/cert-context.ts +126 -0
- package/src/chip/cert/cert-dsl.ts +451 -0
- package/src/chip/cert/cert-test.ts +360 -0
- package/src/chip/cert/chip-app-subject.ts +457 -0
- package/src/chip/cert/controller-adapter.ts +142 -0
- package/src/chip/cert/device-config.ts +33 -0
- package/src/chip/cert/evidence.ts +170 -0
- package/src/chip/cert/log-follower.ts +266 -0
- package/src/chip/cert/matterjs-subject-registry.ts +33 -0
- package/src/chip/cert/prompt-driven-python-test.ts +104 -0
- package/src/chip/chip-bins.ts +401 -0
- package/src/chip/chip-test-common.ts +3 -1
- package/src/chip/chip.ts +1 -1
- package/src/chip/config.ts +28 -1
- package/src/chip/index.ts +67 -0
- package/src/chip/pics/file.ts +8 -0
- package/src/chip/pics/source.ts +39 -19
- package/src/chip/python-test.ts +5 -4
- package/src/chip/state.ts +39 -8
- package/src/chip/yaml-test.ts +1 -1
- package/src/cli.ts +40 -2
- package/src/global-declarations.d.ts +2 -2
- package/src/global-definitions.ts +27 -3
- package/src/index.d.ts +3 -0
- package/src/index.js +1 -0
- package/src/mocha.ts +13 -0
- package/src/mocharc.cjs +4 -3
- package/src/print-report.ts +1 -1
- package/src/test-descriptor.ts +1 -1
- package/src/util/async.ts +83 -0
- package/src/util/wtf.ts +3 -1
- package/src/web.ts +5 -1
- package/test/util/AsyncTest.ts +68 -0
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/chip/cert/chip-app-subject.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["hostPlatform"]
|
|
6
|
+
}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2026 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { LogSource } from "./cert-context.js";
|
|
7
|
+
import type { LogFollower } from "./log-follower.js";
|
|
8
|
+
export type { LogSource };
|
|
9
|
+
/**
|
|
10
|
+
* Opaque reference to a node commissioned through a {@link ControllerAdapter}.
|
|
11
|
+
*
|
|
12
|
+
* Adapters mint and interpret their own refs; a step never constructs or parses one, it only passes
|
|
13
|
+
* back what {@link ControllerAdapter.commission} returned.
|
|
14
|
+
*/
|
|
15
|
+
export type CertNodeRef = string;
|
|
16
|
+
/**
|
|
17
|
+
* Commissioning parameters a {@link ControllerAdapter} needs to pair a node.
|
|
18
|
+
*
|
|
19
|
+
* Structurally compatible with {@link Subject.CommissioningParameters} so a step can pass
|
|
20
|
+
* `subject.commissioning` directly for a device's original setup code.
|
|
21
|
+
*
|
|
22
|
+
* Either `manualPairingCode` or both `passcode`/`discriminator` must be present. An enhanced
|
|
23
|
+
* commissioning window (`CertNodeApi.openCommissioningWindow({enhanced: true})`) generates a fresh
|
|
24
|
+
* random discriminator/passcode pair that only the returned `manualPairingCode` carries — a step
|
|
25
|
+
* commissioning through that window has no other way to obtain them.
|
|
26
|
+
*/
|
|
27
|
+
export interface CommissioningTarget {
|
|
28
|
+
passcode?: number;
|
|
29
|
+
discriminator?: number;
|
|
30
|
+
qrPairingCode?: string;
|
|
31
|
+
manualPairingCode?: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* An attribute (or, for {@link CertNodeApi.readAttribute}, wildcard attribute path).
|
|
35
|
+
*
|
|
36
|
+
* An absent field is a wildcard for that path segment. `readAttribute` supports wildcards
|
|
37
|
+
* (TC-IDM-2.1); other operations require a concrete path.
|
|
38
|
+
*/
|
|
39
|
+
export interface AttributePathSpec {
|
|
40
|
+
endpoint?: number;
|
|
41
|
+
cluster?: number;
|
|
42
|
+
attribute?: number;
|
|
43
|
+
}
|
|
44
|
+
export interface SubscribeOptions {
|
|
45
|
+
minIntervalFloorSeconds: number;
|
|
46
|
+
maxIntervalCeilingSeconds: number;
|
|
47
|
+
onUpdate?: (value: unknown) => void;
|
|
48
|
+
}
|
|
49
|
+
export interface ReadAttributeOptions {
|
|
50
|
+
/**
|
|
51
|
+
* Whether the read is fabric-filtered (Matter Core § 8.9.2's `FabricFiltered` flag; default
|
|
52
|
+
* true, the interaction-model default). Set false to read across all fabrics — a
|
|
53
|
+
* fabric-scoped attribute like OperationalCredentials.fabrics otherwise returns only the
|
|
54
|
+
* reading controller's own entry, useless for a multi-controller TC that must see fabrics it
|
|
55
|
+
* didn't itself create.
|
|
56
|
+
*/
|
|
57
|
+
fabricFiltered?: boolean;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Controller-side view of a single commissioned node.
|
|
61
|
+
*/
|
|
62
|
+
export interface CertNodeApi {
|
|
63
|
+
invoke(cluster: string | number, command: string, args?: object, endpoint?: number): Promise<unknown>;
|
|
64
|
+
readAttribute(path: AttributePathSpec, options?: ReadAttributeOptions): Promise<unknown>;
|
|
65
|
+
writeAttribute(path: AttributePathSpec, value: unknown): Promise<void>;
|
|
66
|
+
subscribe(path: AttributePathSpec, opts: SubscribeOptions): Promise<unknown>;
|
|
67
|
+
openCommissioningWindow(opts: {
|
|
68
|
+
timeout: number;
|
|
69
|
+
enhanced: boolean;
|
|
70
|
+
}): Promise<{
|
|
71
|
+
manualPairingCode?: string;
|
|
72
|
+
qrPairingCode?: string;
|
|
73
|
+
}>;
|
|
74
|
+
decommission(): Promise<void>;
|
|
75
|
+
/**
|
|
76
|
+
* The operational mDNS instance name (`<compressed-fabric-id>-<node-id>._matter._tcp.local`) this node
|
|
77
|
+
* advertises on the fabric it was commissioned onto — the same value matter.js's own advertiser computes
|
|
78
|
+
* via `getOperationalDeviceQname` (`@matter/protocol`). A network check (see
|
|
79
|
+
* `support/chip-testing/src/cert/mdns-check.ts`) uses this to attribute an operational SRV record to this
|
|
80
|
+
* specific node rather than to whatever else is advertising `_matter._tcp` on the network.
|
|
81
|
+
*/
|
|
82
|
+
operationalMdnsInstanceName(): Promise<string>;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* A controller identity participating in a cert test (e.g. "dut", "th_cr2").
|
|
86
|
+
*
|
|
87
|
+
* Pure interface: no matter.js type ever crosses this boundary, only plain string/number addressing
|
|
88
|
+
* and plain data. Implementations wrap a real controller stack (see
|
|
89
|
+
* `support/chip-testing/src/cert/InProcessControllerAdapter.ts`) but this package must stay free of
|
|
90
|
+
* that dependency.
|
|
91
|
+
*/
|
|
92
|
+
export interface ControllerAdapter {
|
|
93
|
+
id: string;
|
|
94
|
+
start(): Promise<void>;
|
|
95
|
+
close(): Promise<void>;
|
|
96
|
+
commission(target: CommissioningTarget): Promise<CertNodeRef>;
|
|
97
|
+
node(ref: CertNodeRef): CertNodeApi;
|
|
98
|
+
log: LogFollower;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Builds a {@link ControllerAdapter} for the given id (e.g. "dut", "th_cr2").
|
|
102
|
+
*/
|
|
103
|
+
export type ControllerAdapterFactory = (id: string) => ControllerAdapter;
|
|
104
|
+
/**
|
|
105
|
+
* Registers the {@link ControllerAdapterFactory} cert-test wiring uses to construct controllers.
|
|
106
|
+
*
|
|
107
|
+
* `packages/testing` cannot construct a real controller itself (that needs matter.js, which this
|
|
108
|
+
* package must stay free of — see the repo's dependency invariant); `support/chip-testing/src/cert`
|
|
109
|
+
* registers its `InProcessControllerAdapter` here at load time instead. There is exactly one slot:
|
|
110
|
+
* re-registration throws, since a silent overwrite would swap controller implementations under any
|
|
111
|
+
* cert test already declared.
|
|
112
|
+
*/
|
|
113
|
+
export declare function registerControllerAdapterFactory(factory: ControllerAdapterFactory): void;
|
|
114
|
+
/**
|
|
115
|
+
* Constructs a {@link ControllerAdapter} via the factory registered with
|
|
116
|
+
* {@link registerControllerAdapterFactory}.
|
|
117
|
+
*/
|
|
118
|
+
export declare function createControllerAdapter(id: string): ControllerAdapter;
|
|
119
|
+
//# sourceMappingURL=controller-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controller-adapter.d.ts","sourceRoot":"","sources":["../../../../src/chip/cert/controller-adapter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,YAAY,EAAE,SAAS,EAAE,CAAC;AAE1B;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AAEjC;;;;;;;;;;GAUG;AACH,MAAM,WAAW,mBAAmB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC7B,uBAAuB,EAAE,MAAM,CAAC;IAChC,yBAAyB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACvC;AAED,MAAM,WAAW,oBAAoB;IACjC;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACtG,aAAa,CAAC,IAAI,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACzF,cAAc,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE,SAAS,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7E,uBAAuB,CAAC,IAAI,EAAE;QAC1B,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,OAAO,CAAC;KACrB,GAAG,OAAO,CAAC;QAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpE,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B;;;;;;OAMG;IACH,2BAA2B,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAClD;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,UAAU,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9D,IAAI,CAAC,GAAG,EAAE,WAAW,GAAG,WAAW,CAAC;IACpC,GAAG,EAAE,WAAW,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG,CAAC,EAAE,EAAE,MAAM,KAAK,iBAAiB,CAAC;AAIzE;;;;;;;;GAQG;AACH,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI,CAKxF;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB,CAQrE"}
|
|
@@ -0,0 +1,45 @@
|
|
|
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 controller_adapter_exports = {};
|
|
20
|
+
__export(controller_adapter_exports, {
|
|
21
|
+
createControllerAdapter: () => createControllerAdapter,
|
|
22
|
+
registerControllerAdapterFactory: () => registerControllerAdapterFactory
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(controller_adapter_exports);
|
|
25
|
+
/**
|
|
26
|
+
* @license
|
|
27
|
+
* Copyright 2022-2026 Matter.js Authors
|
|
28
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
29
|
+
*/
|
|
30
|
+
let activeFactory;
|
|
31
|
+
function registerControllerAdapterFactory(factory) {
|
|
32
|
+
if (activeFactory) {
|
|
33
|
+
throw new Error("A ControllerAdapter factory is already registered; only one is supported per process");
|
|
34
|
+
}
|
|
35
|
+
activeFactory = factory;
|
|
36
|
+
}
|
|
37
|
+
function createControllerAdapter(id) {
|
|
38
|
+
if (!activeFactory) {
|
|
39
|
+
throw new Error(
|
|
40
|
+
"No ControllerAdapter factory registered; a consumer (e.g. support/chip-testing/src/cert/index.ts) must call registerControllerAdapterFactory() before running a cert test"
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
return activeFactory(id);
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=controller-adapter.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/chip/cert/controller-adapter.ts"],
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA+GA,IAAI;AAWG,SAAS,iCAAiC,SAAyC;AACtF,MAAI,eAAe;AACf,UAAM,IAAI,MAAM,sFAAsF;AAAA,EAC1G;AACA,kBAAgB;AACpB;AAMO,SAAS,wBAAwB,IAA+B;AACnE,MAAI,CAAC,eAAe;AAChB,UAAM,IAAI;AAAA,MACN;AAAA,IAEJ;AAAA,EACJ;AACA,SAAO,cAAc,EAAE;AAC3B;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2026 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { DeviceFlavor } from "./cert-context.js";
|
|
7
|
+
/**
|
|
8
|
+
* Resolve which device implementation cert tests run against, from `MATTER_CERT_DEVICE`.
|
|
9
|
+
*
|
|
10
|
+
* Unset defaults to `matterjs`, the only flavor that works with no configuration at all:
|
|
11
|
+
* `chip-local` needs `MATTER_CERT_APP_DIR`/`MATTER_CHIP_BINS_SOURCE`, and `chip-docker` has no
|
|
12
|
+
* published per-app images yet, so either would guarantee a failing default run.
|
|
13
|
+
*/
|
|
14
|
+
export declare function resolveDeviceFlavor(): DeviceFlavor;
|
|
15
|
+
//# sourceMappingURL=device-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device-config.d.ts","sourceRoot":"","sources":["../../../../src/chip/cert/device-config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAMtD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,IAAI,YAAY,CAYlD"}
|
|
@@ -0,0 +1,43 @@
|
|
|
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 device_config_exports = {};
|
|
20
|
+
__export(device_config_exports, {
|
|
21
|
+
resolveDeviceFlavor: () => resolveDeviceFlavor
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(device_config_exports);
|
|
24
|
+
var import_node_process = require("node:process");
|
|
25
|
+
/**
|
|
26
|
+
* @license
|
|
27
|
+
* Copyright 2022-2026 Matter.js Authors
|
|
28
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
29
|
+
*/
|
|
30
|
+
function isDeviceFlavor(value) {
|
|
31
|
+
return value === "chip-docker" || value === "chip-local" || value === "matterjs";
|
|
32
|
+
}
|
|
33
|
+
function resolveDeviceFlavor() {
|
|
34
|
+
const value = import_node_process.env.MATTER_CERT_DEVICE;
|
|
35
|
+
if (value === void 0 || value === "") {
|
|
36
|
+
return "matterjs";
|
|
37
|
+
}
|
|
38
|
+
if (isDeviceFlavor(value)) {
|
|
39
|
+
return value;
|
|
40
|
+
}
|
|
41
|
+
throw new Error(`Unknown MATTER_CERT_DEVICE "${value}" (expected "chip-docker", "chip-local", or "matterjs")`);
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=device-config.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/chip/cert/device-config.ts"],
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,0BAAoB;AANpB;AAAA;AAAA;AAAA;AAAA;AASA,SAAS,eAAe,OAAsC;AAC1D,SAAO,UAAU,iBAAiB,UAAU,gBAAgB,UAAU;AAC1E;AASO,SAAS,sBAAoC;AAChD,QAAM,QAAQ,wBAAI;AAElB,MAAI,UAAU,UAAa,UAAU,IAAI;AACrC,WAAO;AAAA,EACX;AAEA,MAAI,eAAe,KAAK,GAAG;AACvB,WAAO;AAAA,EACX;AAEA,QAAM,IAAI,MAAM,+BAA+B,KAAK,yDAAyD;AACjH;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2026 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { CertStepDefinition, CheckRecord, DeviceExitInfo, StepRecorder, StepVerdict } from "./cert-context.js";
|
|
7
|
+
import type { LogLine } from "./log-follower.js";
|
|
8
|
+
export type { CheckRecord };
|
|
9
|
+
/**
|
|
10
|
+
* A single cert-test step's recorded outcome and evidence.
|
|
11
|
+
*/
|
|
12
|
+
export interface StepRecord {
|
|
13
|
+
step: number | string;
|
|
14
|
+
text: string;
|
|
15
|
+
expected?: string;
|
|
16
|
+
checks: CheckRecord[];
|
|
17
|
+
verdict: StepVerdict;
|
|
18
|
+
skipReason?: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* The evidence bundle for one cert-test run, written to `result.json` by {@link EvidenceRecorder.flush}.
|
|
22
|
+
*/
|
|
23
|
+
export interface RunRecord {
|
|
24
|
+
tc: string;
|
|
25
|
+
plan: string;
|
|
26
|
+
run: {
|
|
27
|
+
timestamp: string;
|
|
28
|
+
controller: string;
|
|
29
|
+
device: string;
|
|
30
|
+
matterJsCommit: string;
|
|
31
|
+
chipRef?: string;
|
|
32
|
+
};
|
|
33
|
+
steps: StepRecord[];
|
|
34
|
+
verdict: "pass" | "fail" | "skipped";
|
|
35
|
+
deviceExit?: {
|
|
36
|
+
code: number | null;
|
|
37
|
+
signal?: string;
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Collects a {@link CertTest} run's per-step evidence and writes it to disk as `result.json` plus one
|
|
42
|
+
* `<name>.log` per {@link attachLog} call.
|
|
43
|
+
*
|
|
44
|
+
* `endStep` always receives the full {@link CertStepDefinition}, not just a verdict — that's what
|
|
45
|
+
* lets a step the engine never reached (PICS-skipped, or trailing a prior abort, so `beginStep` was
|
|
46
|
+
* never called for it) still become a complete {@link StepRecord}: its `text`/`expected` come from
|
|
47
|
+
* the definition `endStep` was given, and its `checks` default to empty.
|
|
48
|
+
*/
|
|
49
|
+
export declare class EvidenceRecorder implements StepRecorder {
|
|
50
|
+
#private;
|
|
51
|
+
constructor(outDir: string, meta: RunRecord["run"] & {
|
|
52
|
+
tc: string;
|
|
53
|
+
plan: string;
|
|
54
|
+
});
|
|
55
|
+
beginStep(step: CertStepDefinition): void;
|
|
56
|
+
check(record: CheckRecord): void;
|
|
57
|
+
endStep(step: CertStepDefinition, verdict: StepVerdict, skipReason?: string): CheckRecord[];
|
|
58
|
+
/**
|
|
59
|
+
* Records that a device's backing process/container exited during the run. A device crash fails
|
|
60
|
+
* the run regardless of how far its steps got (see {@link RunRecord.deviceExit}).
|
|
61
|
+
*/
|
|
62
|
+
deviceExited(info: DeviceExitInfo): void;
|
|
63
|
+
/**
|
|
64
|
+
* Attaches a raw log dump under `<name>.log`, e.g. `attachLog("controller", ...)` or
|
|
65
|
+
* `attachLog("device-app1", ...)`.
|
|
66
|
+
*/
|
|
67
|
+
attachLog(name: string, lines: LogLine[]): void;
|
|
68
|
+
flush(): Promise<string>;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=evidence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../../../src/chip/cert/evidence.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACpH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAIjD,YAAY,EAAE,WAAW,EAAE,CAAC;AAE5B;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,OAAO,EAAE,WAAW,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE;QACD,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,cAAc,EAAE,MAAM,CAAC;QACvB,OAAO,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACrC,UAAU,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACzD;AAQD;;;;;;;;GAQG;AACH,qBAAa,gBAAiB,YAAW,YAAY;;IAQjD,YAAY,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAGhF;IAED,SAAS,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI,CAExC;IAED,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAK/B;IAED,OAAO,CAAC,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,WAAW,EAAE,CAqB1F;IAED;;;OAGG;IACH,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,CAEvC;IAED;;;OAGG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAE9C;IAEK,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,CA2B7B;CAmBJ"}
|
|
@@ -0,0 +1,128 @@
|
|
|
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 evidence_exports = {};
|
|
20
|
+
__export(evidence_exports, {
|
|
21
|
+
EvidenceRecorder: () => EvidenceRecorder
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(evidence_exports);
|
|
24
|
+
var import_promises = require("node:fs/promises");
|
|
25
|
+
var import_node_path = require("node:path");
|
|
26
|
+
/**
|
|
27
|
+
* @license
|
|
28
|
+
* Copyright 2022-2026 Matter.js Authors
|
|
29
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
30
|
+
*/
|
|
31
|
+
function sanitizeTimestampForPath(timestamp) {
|
|
32
|
+
return timestamp.replace(/:/g, "-");
|
|
33
|
+
}
|
|
34
|
+
class EvidenceRecorder {
|
|
35
|
+
#outDir;
|
|
36
|
+
#meta;
|
|
37
|
+
#steps = new Array();
|
|
38
|
+
#logs = /* @__PURE__ */ new Map();
|
|
39
|
+
#current;
|
|
40
|
+
#deviceExit;
|
|
41
|
+
constructor(outDir, meta) {
|
|
42
|
+
this.#outDir = outDir;
|
|
43
|
+
this.#meta = meta;
|
|
44
|
+
}
|
|
45
|
+
beginStep(step) {
|
|
46
|
+
this.#current = { def: step, checks: new Array() };
|
|
47
|
+
}
|
|
48
|
+
check(record) {
|
|
49
|
+
if (!this.#current) {
|
|
50
|
+
throw new Error("EvidenceRecorder.check() called without an active step; call beginStep() first");
|
|
51
|
+
}
|
|
52
|
+
this.#current.checks.push(record);
|
|
53
|
+
}
|
|
54
|
+
endStep(step, verdict, skipReason) {
|
|
55
|
+
if (this.#current !== void 0 && this.#current.def !== step) {
|
|
56
|
+
throw new Error(
|
|
57
|
+
`EvidenceRecorder.endStep(${step.number}) called while step ${this.#current.def.number} is active`
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
const checks = this.#current?.checks ?? new Array();
|
|
61
|
+
this.#current = void 0;
|
|
62
|
+
this.#steps.push({
|
|
63
|
+
step: step.number,
|
|
64
|
+
text: step.text,
|
|
65
|
+
expected: step.expected,
|
|
66
|
+
checks,
|
|
67
|
+
verdict,
|
|
68
|
+
skipReason
|
|
69
|
+
});
|
|
70
|
+
return checks;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Records that a device's backing process/container exited during the run. A device crash fails
|
|
74
|
+
* the run regardless of how far its steps got (see {@link RunRecord.deviceExit}).
|
|
75
|
+
*/
|
|
76
|
+
deviceExited(info) {
|
|
77
|
+
this.#deviceExit = { code: info.code, signal: info.signal ?? void 0 };
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Attaches a raw log dump under `<name>.log`, e.g. `attachLog("controller", ...)` or
|
|
81
|
+
* `attachLog("device-app1", ...)`.
|
|
82
|
+
*/
|
|
83
|
+
attachLog(name, lines) {
|
|
84
|
+
this.#logs.set(name, lines);
|
|
85
|
+
}
|
|
86
|
+
async flush() {
|
|
87
|
+
const dirName = `${sanitizeTimestampForPath(this.#meta.timestamp)}-${this.#meta.tc}`;
|
|
88
|
+
const dir = (0, import_node_path.join)(this.#outDir, dirName);
|
|
89
|
+
await (0, import_promises.mkdir)(dir, { recursive: true });
|
|
90
|
+
const record = {
|
|
91
|
+
tc: this.#meta.tc,
|
|
92
|
+
plan: this.#meta.plan,
|
|
93
|
+
run: {
|
|
94
|
+
timestamp: this.#meta.timestamp,
|
|
95
|
+
controller: this.#meta.controller,
|
|
96
|
+
device: this.#meta.device,
|
|
97
|
+
matterJsCommit: this.#meta.matterJsCommit,
|
|
98
|
+
chipRef: this.#meta.chipRef
|
|
99
|
+
},
|
|
100
|
+
steps: this.#steps,
|
|
101
|
+
verdict: this.#verdict(),
|
|
102
|
+
deviceExit: this.#deviceExit
|
|
103
|
+
};
|
|
104
|
+
await (0, import_promises.writeFile)((0, import_node_path.join)(dir, "result.json"), JSON.stringify(record, null, 4));
|
|
105
|
+
for (const [name, lines] of this.#logs) {
|
|
106
|
+
await (0, import_promises.writeFile)((0, import_node_path.join)(dir, `${name}.log`), lines.map((line) => line.text).join("\n"));
|
|
107
|
+
}
|
|
108
|
+
return dir;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* A run where every step was skipped (or that had no steps at all — a malformed definition) is
|
|
112
|
+
* neither a pass nor a fail: nothing was actually exercised, so reporting `"pass"` would overstate
|
|
113
|
+
* what the run proved. Only a run with at least one non-skipped step can pass.
|
|
114
|
+
*/
|
|
115
|
+
#verdict() {
|
|
116
|
+
if (this.#deviceExit) {
|
|
117
|
+
return "fail";
|
|
118
|
+
}
|
|
119
|
+
if (this.#steps.some((step) => step.verdict === "fail" || step.verdict === "aborted")) {
|
|
120
|
+
return "fail";
|
|
121
|
+
}
|
|
122
|
+
if (this.#steps.some((step) => step.verdict === "pass")) {
|
|
123
|
+
return "pass";
|
|
124
|
+
}
|
|
125
|
+
return "skipped";
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=evidence.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/chip/cert/evidence.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2026 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { LogSource } from "./cert-context.js";
|
|
7
|
+
/**
|
|
8
|
+
* A single buffered log line, with the cursor position it occupies in the follower's buffer.
|
|
9
|
+
*/
|
|
10
|
+
export interface LogLine {
|
|
11
|
+
index: number;
|
|
12
|
+
at: Date;
|
|
13
|
+
text: string;
|
|
14
|
+
/** Set on a line added via {@link LogFollower.annotate} — never matched by {@link LogFollower.expect}. */
|
|
15
|
+
synthetic?: true;
|
|
16
|
+
}
|
|
17
|
+
export type LogExpectResult = {
|
|
18
|
+
verdict: "pass";
|
|
19
|
+
matched: LogLine;
|
|
20
|
+
pattern: string;
|
|
21
|
+
} | {
|
|
22
|
+
verdict: "unverified";
|
|
23
|
+
reason: "no-pattern-for-flavor";
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Per-implementation-family patterns for a {@link LogFollower.expect} call. A step supplies
|
|
27
|
+
* whichever of these it has evidence for; the active device or controller's flavor selects one.
|
|
28
|
+
*/
|
|
29
|
+
export interface LogExpectPatterns {
|
|
30
|
+
chip?: RegExp;
|
|
31
|
+
matterjs?: RegExp;
|
|
32
|
+
}
|
|
33
|
+
export interface LogExpectOptions {
|
|
34
|
+
flavor: string;
|
|
35
|
+
timeoutMs?: number;
|
|
36
|
+
from?: number;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Thrown by {@link LogFollower.expect} when no buffered or newly-arrived line matches before the
|
|
40
|
+
* deadline.
|
|
41
|
+
*/
|
|
42
|
+
export declare class CertLogTimeoutError extends Error {
|
|
43
|
+
readonly pattern: string;
|
|
44
|
+
readonly from: number;
|
|
45
|
+
readonly tail: LogLine[];
|
|
46
|
+
constructor(pattern: string, from: number, tail: LogLine[]);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Thrown by {@link LogFollower.expect} when the follower closes (or its source runs out) while the
|
|
50
|
+
* expectation is still pending and unmatched.
|
|
51
|
+
*/
|
|
52
|
+
export declare class CertLogClosedError extends Error {
|
|
53
|
+
constructor(name: string);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Buffers every line from an `AsyncIterable<string>` log source and lets cert-test steps assert
|
|
57
|
+
* that a matching line appears within a cursor window, without depending on any particular
|
|
58
|
+
* implementation's log format directly (a step supplies a chip-flavored and/or matterjs-flavored
|
|
59
|
+
* pattern; {@link expect} picks the one for the device or controller actually under test).
|
|
60
|
+
*
|
|
61
|
+
* Also implements {@link LogSource} so a follower can itself be consumed by another follower or
|
|
62
|
+
* assigned to a {@link CertDevice}/{@link ControllerAdapter}'s `log` field.
|
|
63
|
+
*/
|
|
64
|
+
export declare class LogFollower implements LogSource {
|
|
65
|
+
#private;
|
|
66
|
+
readonly name: string;
|
|
67
|
+
constructor(source: AsyncIterable<string>, name: string);
|
|
68
|
+
/**
|
|
69
|
+
* Appends a synthetic line (e.g. a step-boundary banner) to the buffer at the current position,
|
|
70
|
+
* indexed like a real line but flagged so {@link expect} skips it. Lets a caller mark the
|
|
71
|
+
* chronologically right position in the evidence `.log` output without that marker ever
|
|
72
|
+
* satisfying a step's own pattern.
|
|
73
|
+
*/
|
|
74
|
+
annotate(text: string): void;
|
|
75
|
+
/**
|
|
76
|
+
* Sets the default cursor a subsequent {@link expect} call scans from when it doesn't specify
|
|
77
|
+
* `from` itself. Typically called once at the start of a step.
|
|
78
|
+
*/
|
|
79
|
+
mark(): number;
|
|
80
|
+
/**
|
|
81
|
+
* Every line seen so far, in arrival order. A fresh copy on each access — callers cannot
|
|
82
|
+
* mutate the follower's own buffer through it.
|
|
83
|
+
*/
|
|
84
|
+
get lines(): LogLine[];
|
|
85
|
+
/**
|
|
86
|
+
* Waits for a line at or after the cursor (`options.from`, default: the last {@link mark})
|
|
87
|
+
* matching the pattern for `options.flavor`. Resolves `unverified` immediately if `patterns`
|
|
88
|
+
* has no entry for that flavor. Throws {@link CertLogTimeoutError} if the deadline passes
|
|
89
|
+
* first, or {@link CertLogClosedError} (or the source's own error) if the follower closes
|
|
90
|
+
* first.
|
|
91
|
+
*/
|
|
92
|
+
expect(patterns: LogExpectPatterns, options: LogExpectOptions): Promise<LogExpectResult>;
|
|
93
|
+
follow(): AsyncIterable<string>;
|
|
94
|
+
close(): Promise<void>;
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=log-follower.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-follower.d.ts","sourceRoot":"","sources":["../../../../src/chip/cert/log-follower.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAInD;;GAEG;AACH,MAAM,WAAW,OAAO;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,IAAI,CAAC;IACT,IAAI,EAAE,MAAM,CAAC;IACb,0GAA0G;IAC1G,SAAS,CAAC,EAAE,IAAI,CAAC;CACpB;AAED,MAAM,MAAM,eAAe,GACvB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,uBAAuB,CAAA;CAAE,CAAC;AAExH;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;IAEtC,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE;IAH5B,YACa,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,EAAE,EAS3B;CACJ;AAED;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IACzC,YAAY,IAAI,EAAE,MAAM,EAEvB;CACJ;AAsBD;;;;;;;;GAQG;AACH,qBAAa,WAAY,YAAW,SAAS;;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAWtB,YAAY,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAMtD;IAED;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAG3B;IAED;;;OAGG;IACH,IAAI,IAAI,MAAM,CAGb;IAED;;;OAGG;IACH,IAAI,KAAK,IAAI,OAAO,EAAE,CAErB;IAED;;;;;;OAMG;IACG,MAAM,CAAC,QAAQ,EAAE,iBAAiB,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAgC7F;IAED,MAAM,IAAI,aAAa,CAAC,MAAM,CAAC,CAE9B;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAG3B;CAqEJ"}
|