From a7f967cf240eba8309cbf4526b2fc6338a52a617 Mon Sep 17 00:00:00 2001 From: morluto <76467478+morluto@users.noreply.github.com> Date: Fri, 23 Oct 2026 19:30:13 +0800 Subject: [PATCH] style(desktop): format GameMaker probe coverage --- docs/desktop-applications.md | 2 +- .../filesystem/desktopApplication.test.ts | 60 +++++++++---------- 2 files changed, 31 insertions(+), 31 deletions(-) diff --git a/docs/desktop-applications.md b/docs/desktop-applications.md index 1161d51055..e3342b634a 100644 --- a/docs/desktop-applications.md +++ b/docs/desktop-applications.md @@ -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. | diff --git a/tests/boundary/filesystem/desktopApplication.test.ts b/tests/boundary/filesystem/desktopApplication.test.ts index 0541118c36..58f881eb5d 100644 --- a/tests/boundary/filesystem/desktopApplication.test.ts +++ b/tests/boundary/filesystem/desktopApplication.test.ts @@ -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-");