mirror of
https://github.com/morluto/rea
synced 2026-10-25 22:08:11 -04:00
style(desktop): format GameMaker probe coverage
This commit is contained in:
@@ -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-");
|
||||
|
||||
Reference in New Issue
Block a user