45 lines
1.6 KiB
TypeScript
45 lines
1.6 KiB
TypeScript
import { chmod, mkdir, realpath, writeFile } from "node:fs/promises";
|
|
import { join } from "node:path";
|
|
|
|
import { expect, it as test } from "vitest";
|
|
|
|
import { resolveJadxConfiguration } from "../../../src/android/JadxConfiguration.js";
|
|
import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js";
|
|
|
|
const it = test.skipIf(process.platform === "win32");
|
|
|
|
it("rejects an explicit JAVA_HOME without an executable java binary", async () => {
|
|
const root = await createTestTempDirectory("rea-jadx-config-");
|
|
const jar = join(root, "jadx-headless-mcp.jar");
|
|
const javaHome = join(root, "missing-jdk");
|
|
await writeFile(jar, "fixture jar");
|
|
|
|
await expect(
|
|
resolveJadxConfiguration(
|
|
{ REA_JADX_MCP_JAR: jar, JAVA_HOME: javaHome },
|
|
"inspect_android_package",
|
|
),
|
|
).rejects.toMatchObject({
|
|
_tag: "AnalysisCapabilityUnavailableError",
|
|
reason: expect.stringContaining(join(javaHome, "bin", "java")),
|
|
});
|
|
});
|
|
|
|
it("accepts a verified explicit java binary and canonicalizes the JAR", async () => {
|
|
const root = await createTestTempDirectory("rea-jadx-config-");
|
|
const jar = join(root, "jadx-headless-mcp.jar");
|
|
const javaHome = join(root, "jdk");
|
|
const java = join(javaHome, "bin", "java");
|
|
await mkdir(join(javaHome, "bin"), { recursive: true });
|
|
await writeFile(jar, "fixture jar");
|
|
await writeFile(java, "#!/bin/sh\n");
|
|
await chmod(java, 0o700);
|
|
|
|
await expect(
|
|
resolveJadxConfiguration(
|
|
{ REA_JADX_MCP_JAR: jar, JAVA_HOME: javaHome },
|
|
"inspect_android_package",
|
|
),
|
|
).resolves.toEqual({ jar: await realpath(jar), java });
|
|
});
|