From b04ff770b3c9e358437eecedab218c96f2abf0ce Mon Sep 17 00:00:00 2001 From: dragonmacher <48328597+dragonmacher@users.noreply.github.com> Date: Wed, 26 Feb 2025 12:42:09 -0500 Subject: [PATCH] Test fixes --- .../framework/main/AbstractDataTreeDialog.java | 6 ++---- .../core/memory/MemoryMapProvider1Test.java | 7 ++++--- .../datatree/FrontEndPluginActionsTest.java | 2 +- .../java/docking/DockableToolBarManager.java | 2 +- .../main/datatree/ProjectDataTreePanel.java | 4 +++- .../actions/ProjectDataSelectAction.java | 17 +++++++++++++---- 6 files changed, 24 insertions(+), 14 deletions(-) diff --git a/Ghidra/Features/Base/src/main/java/ghidra/framework/main/AbstractDataTreeDialog.java b/Ghidra/Features/Base/src/main/java/ghidra/framework/main/AbstractDataTreeDialog.java index a269df13c2..c9f9accac3 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/framework/main/AbstractDataTreeDialog.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/framework/main/AbstractDataTreeDialog.java @@ -372,10 +372,8 @@ public abstract class AbstractDataTreeDialog extends DialogComponentProvider // data tree panel must be created before the combo box JPanel dataTreePanel = createDataTreePanel(); - if (type == CHOOSE_FOLDER) { - // this allows users to press the OK button to choose the root folder - treePanel.selectRootDataFolder(); - } + // this allows users to press the OK button to choose the root folder + treePanel.selectRootDataFolder(); if (type == OPEN) { JPanel comboPanel = createComboBoxPanel(); diff --git a/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/memory/MemoryMapProvider1Test.java b/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/memory/MemoryMapProvider1Test.java index c7f183bedd..9b56f66d08 100644 --- a/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/memory/MemoryMapProvider1Test.java +++ b/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/memory/MemoryMapProvider1Test.java @@ -113,12 +113,13 @@ public class MemoryMapProvider1Test extends AbstractGhidraHeadedIntegrationTest table.addRowSelectionInterval(0, 0); Set actions = getActionsByOwner(tool, plugin.getName()); for (DockingActionIf action : actions) { - if (action.getName().equals("Merge Blocks") || action.getName().equals("Local Menu") || - action.getName().equals("Rename Overlay Space")) { + String name = action.getName(); + if (name.equals("Merge Blocks") || name.equals("Local Menu") || + name.equals("Rename Overlay Space") || name.equals("Close Window")) { assertFalse(action.isEnabled()); } else { - assertTrue("Action not enabled when it should be: " + action.getName(), + assertTrue("Action not enabled when it should be: " + name, action.isEnabled()); } } diff --git a/Ghidra/Features/Base/src/test.slow/java/ghidra/framework/main/datatree/FrontEndPluginActionsTest.java b/Ghidra/Features/Base/src/test.slow/java/ghidra/framework/main/datatree/FrontEndPluginActionsTest.java index b672a9418d..2c78427209 100644 --- a/Ghidra/Features/Base/src/test.slow/java/ghidra/framework/main/datatree/FrontEndPluginActionsTest.java +++ b/Ghidra/Features/Base/src/test.slow/java/ghidra/framework/main/datatree/FrontEndPluginActionsTest.java @@ -725,7 +725,7 @@ public class FrontEndPluginActionsTest extends AbstractGhidraHeadedIntegrationTe f = f.createFolder("A"); f = f.createFolder("B"); f = f.createFolder("C"); - waitForSwing(); + waitForTree(); setSelectionPath(rootNode.getTreePath()); DockingActionIf selectAction = getAction("Select All"); diff --git a/Ghidra/Framework/Docking/src/main/java/docking/DockableToolBarManager.java b/Ghidra/Framework/Docking/src/main/java/docking/DockableToolBarManager.java index 0c080ca575..f013cef5c8 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/DockableToolBarManager.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/DockableToolBarManager.java @@ -218,7 +218,7 @@ class DockableToolBarManager { } // don't allow the last component in a window to be closed to prevent an empty window - return !dwm.isLastComponentInWindow(provider); + return dwm != null && !dwm.isLastComponentInWindow(provider); } } diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/datatree/ProjectDataTreePanel.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/datatree/ProjectDataTreePanel.java index 6f4c15c9a0..cc34358872 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/datatree/ProjectDataTreePanel.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/datatree/ProjectDataTreePanel.java @@ -188,7 +188,9 @@ public class ProjectDataTreePanel extends JPanel { } public void selectDomainFile(DomainFile domainFile) { - selectDomainFiles(Set.of(domainFile)); + if (domainFile != null) { + selectDomainFiles(Set.of(domainFile)); + } } public void setHelpLocation(HelpLocation helpLocation) { diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/projectdata/actions/ProjectDataSelectAction.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/projectdata/actions/ProjectDataSelectAction.java index 0308351572..5190105dbd 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/projectdata/actions/ProjectDataSelectAction.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/projectdata/actions/ProjectDataSelectAction.java @@ -4,9 +4,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -22,6 +22,7 @@ import javax.swing.tree.TreePath; import docking.action.MenuData; import docking.widgets.tree.GTreeNode; +import docking.widgets.tree.tasks.GTreeExpandAllTask; import ghidra.framework.main.datatable.ProjectTreeAction; import ghidra.framework.main.datatree.DataTree; import ghidra.framework.main.datatree.FrontEndProjectTreeContext; @@ -53,8 +54,16 @@ public class ProjectDataSelectAction extends ProjectTreeAction { */ private void selectAllChildren(DataTree tree, GTreeNode node) { List paths = new ArrayList(); - getAllTreePaths(node, paths); - tree.setSelectionPaths(paths.toArray(new TreePath[paths.size()])); + + tree.runTask(monitor -> { + + GTreeExpandAllTask task = new GTreeExpandAllTask(tree, node); + task.run(monitor); + + getAllTreePaths(node, paths); + tree.setSelectionPaths(paths); + }); + } /**