fix(run): merge Gradle console results into the reported test classes (#1323)

Gradle's console names a test class by its simple name and a JUnit 5
method by its display name (`method()`), while its XML reports use the
qualified class and the method name. After a run the test tree showed
each class twice, counted the failure twice, and the report's copy of
the failing test had no source location.

Console results are now moved under the reported class (when the simple
name is unambiguous), Gradle method names drop the empty `()`, and the
report's stack frame is matched for Kotlin names with spaces and frames
behind a class loader prefix (`app//`).
Цей коміт міститься в:
l0ng-ai authored and GitHub committed 2026-11-05 00:33:44 +08:00
1 джерело c399ad2598
коміт 8d29704d46
5 files changed
+96 -9

No files matched your search

+18
Переглянути файл
@@ -367,6 +367,24 @@ describe("JUnit XML reports", () => {
location: { path: "a/B.java", line: 42, resolve: "name", className: "a.B$Inner" },
});
});
it("locate Kotlin tests with spaces in their names, behind a class loader prefix", () => {
const events = testReportEvents([
{
className: "a.LibraryTest",
name: "cannot lend twice",
status: "failed",
durationMs: null,
message: null,
output: "AssertionFailedError\n\tat app//a.LibraryTest.cannot lend twice(LibraryTest.kt:43)",
},
]);
expect(events).toContainEqual({
type: "location",
path: ["a.LibraryTest", "cannot lend twice"],
location: { path: "a/LibraryTest.kt", line: 43, resolve: "name", className: "a.LibraryTest" },
});
});
});
describe("temporary configurations", () => {