style(desktop): format GameMaker probe coverage

This commit is contained in:
morluto
2026-10-23 19:30:13 +08:00
parent 23e68cbdfb
commit a7f967cf24
2 changed files with 31 additions and 31 deletions
+1 -1
View File
@@ -97,7 +97,7 @@ same bundle. Export writes only the caller-selected output file.
| Unity Mono | A managed assembly below `*_Data/Managed` or `Contents/Resources/Data/Managed` has an exact UnityEngine assembly reference. |
| Unity IL2CPP | A recognized IL2CPP metadata magic (with the raw version when complete) coexists with a conventionally named native `GameAssembly.dll`, `GameAssembly.so`, `GameAssembly.dylib` or `libil2cpp.so` image. Build correspondence remains unknown. |
| Godot | A `GDPC` header at file start or a validated executable trailer offset. |
| GameMaker | A bounded `FORM` container starts with a `GEN8` chunk. The scan probes conventional `data.win`, `game.unx`, and `game.ios` data files for that header. |
| GameMaker | A bounded `FORM` container starts with a `GEN8` chunk. The scan probes conventional `data.win`, `game.unx`, and `game.ios` data files for that header. |
| Unreal | `Content/Paks` path conventions or an IoStore TOC signature; arbitrary `.pak` filenames are insufficient. |
| Electron | A `resources/app.asar` or `resources/default_app.asar` path convention; archive validity is unverified. |
@@ -787,37 +787,37 @@ it.each([
},
);
it.each([
"assets/game.unx",
"Example.app/Contents/Resources/game.ios",
])("probes the GameMaker data file at %s", async (path) => {
const root = await createTestTempDirectory("rea-desktop-gamemaker-data-");
const form = Buffer.alloc(16);
form.write("FORM");
form.writeUInt32LE(8, 4);
form.write("GEN8", 8);
form.writeUInt32LE(0, 12);
await put(root, path, form);
it.each(["assets/game.unx", "Example.app/Contents/Resources/game.ios"])(
"probes the GameMaker data file at %s",
async (path) => {
const root = await createTestTempDirectory("rea-desktop-gamemaker-data-");
const form = Buffer.alloc(16);
form.write("FORM");
form.writeUInt32LE(8, 4);
form.write("GEN8", 8);
form.writeUInt32LE(0, 12);
await put(root, path, form);
const { report } = await inspect(root);
expect(report.candidates.map((candidate) => candidate.family)).toContain(
"gamemaker",
);
expect(report.files).toContainEqual(
expect.objectContaining({
path,
read_status: "examined",
facts: [
expect.objectContaining({
kind: "gamemaker-form-header",
offset: 0,
value: { container: "FORM", first_chunk: "GEN8" },
}),
],
}),
);
expect(report.coverage.status).toBe("complete-within-scan");
});
const { report } = await inspect(root);
expect(report.candidates.map((candidate) => candidate.family)).toContain(
"gamemaker",
);
expect(report.files).toContainEqual(
expect.objectContaining({
path,
read_status: "examined",
facts: [
expect.objectContaining({
kind: "gamemaker-form-header",
offset: 0,
value: { container: "FORM", first_chunk: "GEN8" },
}),
],
}),
);
expect(report.coverage.status).toBe("complete-within-scan");
},
);
it("compares exact signature bytes without masking high bits in engine headers or trailers", async () => {
const root = await createTestTempDirectory("rea-desktop-exact-signatures-");