From 8acf9982b6269af8d738d389c851c7a8786d5af5 Mon Sep 17 00:00:00 2001 From: Andreas Dangel Date: Fri, 28 Aug 2026 15:08:16 +0200 Subject: [PATCH 1/2] chore: Make ViolationDetailsDialogTest more reliable --- .../dialogs/ViolationDetailsDialogTest.java | 34 +++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/net.sourceforge.pmd.eclipse.plugin.test/src/main/java/net/sourceforge/pmd/eclipse/ui/dialogs/ViolationDetailsDialogTest.java b/net.sourceforge.pmd.eclipse.plugin.test/src/main/java/net/sourceforge/pmd/eclipse/ui/dialogs/ViolationDetailsDialogTest.java index 9a01464c..d08c2be0 100644 --- a/net.sourceforge.pmd.eclipse.plugin.test/src/main/java/net/sourceforge/pmd/eclipse/ui/dialogs/ViolationDetailsDialogTest.java +++ b/net.sourceforge.pmd.eclipse.plugin.test/src/main/java/net/sourceforge/pmd/eclipse/ui/dialogs/ViolationDetailsDialogTest.java @@ -83,9 +83,39 @@ public void openDialogViaProblemView() throws Exception { openJavaPerspective(); SWTBotView problemsView = bot.viewByPartName("Problems"); + SWTBotTreeItem warningsNode = problemsView.bot().tree().getTreeItem("Warnings (4 items)").expand(); + + // Wait for the tree to fully render + bot.waitUntil(new DefaultCondition() { + @Override + public boolean test() throws Exception { + try { + // Try to find all violation nodes - if all exist, tree is ready + return warningsNode.getItems().length >= 4; + } catch (Exception e) { + return false; + } + } + + @Override + public String getFailureMessage() { + return "Warnings tree items did not render"; + } + }); + + // Now search for the marker by partial match or iterate through nodes + SWTBotTreeItem markerItem = null; + for (SWTBotTreeItem node : warningsNode.getItems()) { + if (node.getText().contains("UnnecessaryModifier")) { + markerItem = node; + break; + } + } + + Assert.assertNotNull("Could not find UnnecessaryModifier violation in Problems view", markerItem); String markerText = "UnnecessaryModifier: Unnecessary modifier 'public' on method 'run': the method is declared in an interface type"; - SWTBotTreeItem item = problemsView.bot().tree().getTreeItem("Warnings (4 items)").expand(); - SWTBotTreeItem markerItem = item.getNode(markerText).select(); + Assert.assertEquals(markerText, markerItem.getText()); + markerItem.select(); markerItem.contextMenu("Show details...").click(); assertDialog(); From 0b64938a1249b9f43f84c7a86000d8a2d803ae8f Mon Sep 17 00:00:00 2001 From: Andreas Dangel Date: Fri, 28 Aug 2026 16:03:41 +0200 Subject: [PATCH 2/2] Update release notes --- ReleaseNotes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/ReleaseNotes.md b/ReleaseNotes.md index dd8790b1..fab1ed6f 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -20,6 +20,7 @@ This is a minor release. * [#431](https://github.com/pmd/pmd-eclipse-plugin/pull/431): chore: Improve logging during tests at waitForPMDJobs - [Andreas Dangel](https://github.com/adangel) (@adangel) * [#432](https://github.com/pmd/pmd-eclipse-plugin/pull/432): refactor: Remove custom JavaProject cache - [Andreas Dangel](https://github.com/adangel) (@adangel) * [#449](https://github.com/pmd/pmd-eclipse-plugin/pull/449): chore: Upload surefire reports for failed unit tests - [Andreas Dangel](https://github.com/adangel) (@adangel) +* [#451](https://github.com/pmd/pmd-eclipse-plugin/pull/451): chore: Make ViolationDetailsDialogTest more reliable - [Andreas Dangel](https://github.com/adangel) (@adangel) ### 📦 Dependency updates