37 lines
1.0 KiB
TypeScript
37 lines
1.0 KiB
TypeScript
import { mkdtemp, rm, writeFile } from "node:fs/promises";
|
|
import { tmpdir } from "node:os";
|
|
import { join } from "node:path";
|
|
|
|
import { afterEach, describe, expect, it } from "vitest";
|
|
|
|
import { buildManagedPeFixture } from "../scripts/lib/managed-pe-fixture.mjs";
|
|
import { parseBinaryTarget } from "../src/domain/binaryTarget.js";
|
|
|
|
const workspaces: string[] = [];
|
|
|
|
afterEach(async () => {
|
|
await Promise.all(
|
|
workspaces.splice(0).map((path) => rm(path, { recursive: true })),
|
|
);
|
|
});
|
|
|
|
describe("managed conformance fixture", () => {
|
|
it("emits PE32+ headers when the COFF machine is x86-64", async () => {
|
|
const workspace = await mkdtemp(join(tmpdir(), "rea-managed-fixture-"));
|
|
workspaces.push(workspace);
|
|
const path = join(workspace, "fixture.exe");
|
|
await writeFile(path, buildManagedPeFixture({ machine: 0x8664 }));
|
|
|
|
const parsed = await parseBinaryTarget(path);
|
|
|
|
expect(parsed).toMatchObject({
|
|
ok: true,
|
|
value: {
|
|
format: "pe",
|
|
architecture: "x86_64",
|
|
managed: true,
|
|
},
|
|
});
|
|
});
|
|
});
|