дзеркало
https://github.com/l0ng-ai/openidea.git
синхронізовано 2026-11-09 03:05:40 +02:00
feat(gradle): debug forked JVMs on a dynamic JDWP port (#2154)
Debugging a Gradle test worker or Spring Boot application attached through a fixed --debug-jvm port, so concurrent runs collided. The forked JVM now gets a dynamic JDWP address for Test tasks and BootRun, and the init scripts attach to the selected port. An agent the build configures itself (jvmArgs or debug = true) is replaced, so the JVM has one agent; a plain Run has none. Co-authored-by: misswell <[email protected]>
Цей коміт міститься в:
1 джерело
a73e3c21ad
коміт
4139cb64c2
9 files changed
+113
-6
No files matched your search
@@ -11,6 +11,7 @@ import { useProject } from "@/platform/project";
|
||||
import { applicationConfig, jvmModuleDir, jvmTestConfig } from "./application";
|
||||
import { buildRows } from "./ConfigChooser";
|
||||
import { jdwpLaunch } from "./javaDebug";
|
||||
import { DELEGATED_DEBUG } from "./gradleRun";
|
||||
import { firstTopLevelType, jvmMainCandidates, scanJvmTargets } from "./jvmTargets";
|
||||
import { adoptTemporary, MAX_TEMPORARY, saveTemporary, testReportEvents, useRun } from "./store";
|
||||
import { detectRunTargets, targetConfig } from "./targets";
|
||||
@@ -324,6 +325,8 @@ describe("java command lines", () => {
|
||||
expect(joinJavaArgs(["a", "b c", 'q"'])).toBe('a "b c" "q\\""');
|
||||
expect(jdwpListeningPort("Listening for transport dt_socket at address: 50123")).toBe(50123);
|
||||
expect(jdwpListeningPort("Listening for transport dt_socket at address: 127.0.0.1:5005")).toBe(5005);
|
||||
expect(jdwpListeningPort("[Test worker] Listening for transport dt_socket at address: 50124")).toBe(50124);
|
||||
expect(jdwpListeningPort(" Listening for transport dt_socket at address: 50125\r")).toBe(50125);
|
||||
expect(jdwpListeningPort("[INFO] Listening")).toBeNull();
|
||||
});
|
||||
});
|
||||
@@ -340,7 +343,10 @@ describe("debugging build tool configurations", () => {
|
||||
expect(merged.args[1]).toMatch(/^-Dspring-boot\.run\.jvmArguments=-Xmx1g -agentlib:jdwp=/);
|
||||
const test = jdwpLaunch(cfg({ id: "t", kind: "maven", args: ["test", "-Dtest=A#b"], isTest: true }))!;
|
||||
expect(test.args.some((a) => a.startsWith("-Dmaven.surefire.debug=-agentlib:jdwp="))).toBe(true);
|
||||
expect(jdwpLaunch(cfg({ id: "g", kind: "gradle", args: ["bootRun"] }))!.args).toEqual(["bootRun", "--debug-jvm"]);
|
||||
expect(jdwpLaunch(cfg({ id: "g", kind: "gradle", args: ["bootRun"] }))!.args).toContain(DELEGATED_DEBUG);
|
||||
const gradleTest = jdwpLaunch(cfg({ id: "gt", kind: "gradle", args: ["test"], isTest: true }))!;
|
||||
expect(gradleTest.args).toContain(DELEGATED_DEBUG);
|
||||
expect(gradleTest.args).not.toContain("--debug-jvm");
|
||||
expect(jdwpLaunch(cfg({ id: "p", kind: "maven", args: ["package"] }))).toBeNull();
|
||||
expect(jdwpLaunch(cfg({ id: "n", kind: "npm", args: ["test"] }))).toBeNull();
|
||||
});
|
||||
|
||||
Reference in new issue
Заблокувати користувача