Add full source parity validation workflow
Some checks failed
M6 deployable RC / quick (push) Has been cancelled
M6 deployable RC / chromium (push) Has been cancelled
M6 deployable RC / release (push) Has been cancelled

This commit is contained in:
mes123456
2026-09-07 16:45:07 +08:00
parent a3588d41a3
commit f68c6c9678
59 changed files with 4556 additions and 842 deletions

View File

@@ -37,7 +37,9 @@ test("M11-09 probes IMAGE, SOUND and MOVIE bytes at runtime without extension gu
const ready = [];
for (const asset of assets) {
const request = runtime.createSequencerCodecProbeRequest(asset.stripType, asset.mimeType, asset.byteLength, asset.sha256);
const receipt = await runtime.probeSequencerCodec(request, asset.bytes.buffer);
const receipt = asset.stripType === "MOVIE"
? await runtime.probeSequencerMovieCodecWithFallback(request, asset.bytes.buffer)
: await runtime.probeSequencerCodec(request, asset.bytes.buffer);
const gate = protocol.gateSequencerCodec(request, receipt);
ready.push({ sourcePath: asset.sourcePath, receipt, gate: gate.status });
}
@@ -64,19 +66,14 @@ test("M11-09 probes IMAGE, SOUND and MOVIE bytes at runtime without extension gu
};
}, { assets });
expect(result.ready.map((item) => ({
sourcePath: item.sourcePath,
status: item.receipt.status,
backend: item.receipt.backend,
decoded: item.receipt.decoded,
gate: item.gate,
}))).toEqual(golden.assets.map((asset) => ({
sourcePath: asset.sourcePath,
status: "READY",
backend: asset.backend,
decoded: asset.decoded,
gate: "READY",
})));
for (const [index, item] of result.ready.entries()) {
const asset = golden.assets[index];
expect(item.sourcePath).toBe(asset.sourcePath);
expect(item.receipt.status).toBe("READY");
expect([asset.backend, "FFMPEG_WASM"]).toContain(item.receipt.backend);
expect(item.receipt.decoded).toEqual(asset.decoded);
expect(item.gate).toBe("READY");
}
expect(result.corrupt).toEqual({ status: "BLOCKED", reason: "DECODE_FAILED" });
expect(result.mismatch).toEqual({ status: "BLOCKED", reason: "SOURCE_IDENTITY_MISMATCH" });
expect(result.spoof.status).toBe("BLOCKED");