дзеркало
https://github.com/l0ng-ai/openidea.git
синхронізовано 2026-11-08 19:02:17 +02:00
Initial open-source release
Claude-Session: https://claude.ai/code/session_01B65qLEKnkeYTGdbwhLpjCu
Цей коміт міститься в:
коміт
9a2025b76e
2034 files changed
+243381
No files matched your search
@@ -0,0 +1,76 @@
|
||||
import { beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import type { RunConfig } from "@/platform/ipc";
|
||||
|
||||
const invoked: Array<[string, unknown[]]> = [];
|
||||
vi.mock("@/platform/ipc", async (orig) => {
|
||||
const real = await orig<typeof import("@/platform/ipc")>();
|
||||
const ok = (data: unknown) => Promise.resolve({ status: "ok", data });
|
||||
return {
|
||||
...real,
|
||||
commands: {
|
||||
...real.commands,
|
||||
javaResolveLaunch: (...a: unknown[]) => {
|
||||
invoked.push(["javaResolveLaunch", a]);
|
||||
return ok({
|
||||
build: "succeeded",
|
||||
projectRoot: "/p",
|
||||
classPaths: ["/p/target/classes", "/m2/a.jar"],
|
||||
modulePaths: [],
|
||||
javaHome: "/jdk21",
|
||||
javaExec: "/jdk21/bin/java",
|
||||
});
|
||||
},
|
||||
javaDebugServer: (...a: unknown[]) => {
|
||||
invoked.push(["javaDebugServer", a]);
|
||||
return ok(41234);
|
||||
},
|
||||
},
|
||||
};
|
||||
});
|
||||
|
||||
const { isJavaDebuggable, javaAttachConfig, javaLaunchConfig } = await import("../java");
|
||||
|
||||
const app: RunConfig = {
|
||||
id: "application:a.Main",
|
||||
name: "Main",
|
||||
kind: "spring-boot",
|
||||
command: "java",
|
||||
args: ["-Xmx1g", "-cp", "${classpath}", "a.Main", "--port", "8081 x"],
|
||||
cwd: "api",
|
||||
env: { A: "1" },
|
||||
detected: true,
|
||||
isTest: false,
|
||||
debugAdapter: "java-debug",
|
||||
};
|
||||
|
||||
describe("Java debugging (java-debug through jdtls)", () => {
|
||||
beforeEach(() => {
|
||||
invoked.length = 0;
|
||||
});
|
||||
|
||||
it("launches Application configs with the resolved classpath on jdtls' debug server", async () => {
|
||||
expect(isJavaDebuggable(app)).toBe(true);
|
||||
expect(isJavaDebuggable({ ...app, kind: "maven" })).toBe(false);
|
||||
const l = await javaLaunchConfig(app, "/p");
|
||||
expect(invoked).toEqual([
|
||||
["javaResolveLaunch", ["api", false, true]],
|
||||
["javaDebugServer", ["api"]],
|
||||
]);
|
||||
expect(l).toMatchObject({ adapter: "java-debug", request: "launch", cwd: "/p/api", args: [], env: { A: "1" } });
|
||||
expect(JSON.parse(l.extraJson!)).toMatchObject({
|
||||
debugServer: 41234,
|
||||
mainClass: "a.Main",
|
||||
classPaths: ["/p/target/classes", "/m2/a.jar"],
|
||||
javaExec: "/jdk21/bin/java",
|
||||
vmArgs: "-Xmx1g",
|
||||
args: '--port "8081 x"',
|
||||
console: "internalConsole",
|
||||
});
|
||||
});
|
||||
|
||||
it("attaches to a JDWP agent", async () => {
|
||||
const l = await javaAttachConfig({ name: "mvn test", module: "", hostName: "127.0.0.1", port: 5005 }, "/p");
|
||||
expect(l).toMatchObject({ request: "attach", cwd: "/p" });
|
||||
expect(JSON.parse(l.extraJson!)).toMatchObject({ debugServer: 41234, hostName: "127.0.0.1", port: 5005 });
|
||||
});
|
||||
});
|
||||
Reference in new issue
Заблокувати користувача