GP-0 Corrected test failures related to recent changes.

This commit is contained in:
ghidra1
2023-12-20 10:10:16 -05:00
parent 2ae048e2f3
commit df4dd327af
6 changed files with 48 additions and 6 deletions
@@ -374,9 +374,11 @@ public class ProgramManagerPlugin extends Plugin implements ProgramManager, Opti
for (Program p : openPrograms) { for (Program p : openPrograms) {
if (ignoreChanges) { if (ignoreChanges) {
toRemove.add(p); toRemove.add(p);
continue;
} }
else if (p.isClosed()) { else if (p.isClosed()) {
toRemove.add(p); toRemove.add(p);
continue;
} }
if (!tool.canCloseDomainObject(p)) { if (!tool.canCloseDomainObject(p)) {
@@ -34,6 +34,7 @@ import docking.widgets.fieldpanel.support.FieldLocation;
import docking.widgets.fieldpanel.support.FieldSelection; import docking.widgets.fieldpanel.support.FieldSelection;
import ghidra.app.cmd.data.CreateDataCmd; import ghidra.app.cmd.data.CreateDataCmd;
import ghidra.app.cmd.data.CreateStructureCmd; import ghidra.app.cmd.data.CreateStructureCmd;
import ghidra.app.events.OpenProgramPluginEvent;
import ghidra.app.events.ProgramSelectionPluginEvent; import ghidra.app.events.ProgramSelectionPluginEvent;
import ghidra.app.services.ProgramManager; import ghidra.app.services.ProgramManager;
import ghidra.app.util.viewer.field.*; import ghidra.app.util.viewer.field.*;
@@ -382,6 +383,9 @@ public class CodeBrowserScreenMovementTest extends AbstractProgramBasedTest {
env.connectTools(tool, tool2); env.connectTools(tool, tool2);
// open same program in second tool - cannot rely on tool connection for this
tool2.firePluginEvent(new OpenProgramPluginEvent("Test", program));
codeBrowser.goToField(addr("0x1006420"), "Address", 0, 0); codeBrowser.goToField(addr("0x1006420"), "Address", 0, 0);
assertEquals("01006420", cb2.getCurrentFieldText()); assertEquals("01006420", cb2.getCurrentFieldText());
@@ -795,8 +799,7 @@ public class CodeBrowserScreenMovementTest extends AbstractProgramBasedTest {
private void resetFormatOptions(CodeBrowserPlugin plugin) { private void resetFormatOptions(CodeBrowserPlugin plugin) {
Options fieldOptions = plugin.getFormatManager().getFieldOptions(); Options fieldOptions = plugin.getFormatManager().getFieldOptions();
List<String> names = fieldOptions.getOptionNames(); List<String> names = fieldOptions.getOptionNames();
for (int i = 0; i < names.size(); i++) { for (String name : names) {
String name = names.get(i);
if (!name.startsWith("Format Code")) { if (!name.startsWith("Format Code")) {
continue; continue;
} }
@@ -33,6 +33,7 @@ import docking.widgets.fieldpanel.field.Field;
import docking.widgets.fieldpanel.support.*; import docking.widgets.fieldpanel.support.*;
import docking.widgets.table.GTable; import docking.widgets.table.GTable;
import ghidra.app.cmd.data.CreateDataCmd; import ghidra.app.cmd.data.CreateDataCmd;
import ghidra.app.events.OpenProgramPluginEvent;
import ghidra.app.events.ProgramSelectionPluginEvent; import ghidra.app.events.ProgramSelectionPluginEvent;
import ghidra.app.plugin.core.codebrowser.SelectEndpointsAction.RangeEndpoint; import ghidra.app.plugin.core.codebrowser.SelectEndpointsAction.RangeEndpoint;
import ghidra.app.plugin.core.navigation.NextPrevAddressPlugin; import ghidra.app.plugin.core.navigation.NextPrevAddressPlugin;
@@ -382,6 +383,9 @@ public class CodeBrowserTest extends AbstractGhidraHeadedIntegrationTest {
env.connectTools(tool, tool2); env.connectTools(tool, tool2);
// open same program in second tool - cannot rely on tool connection for this
tool2.firePluginEvent(new OpenProgramPluginEvent("Test", program));
cb.goToField(addr("0x1003a50"), "Bytes", 0, 4); cb.goToField(addr("0x1003a50"), "Bytes", 0, 4);
Point p1 = getCursorPoint(); Point p1 = getCursorPoint();
cb.goToField(addr("0x1003a5e"), "Mnemonic", 0, 0, 2, false); cb.goToField(addr("0x1003a5e"), "Mnemonic", 0, 0, 2, false);
@@ -31,6 +31,7 @@ import docking.widgets.table.threaded.GThreadedTablePanel;
import generic.test.TestUtils; import generic.test.TestUtils;
import ghidra.GhidraOptions; import ghidra.GhidraOptions;
import ghidra.app.cmd.data.CreateDataCmd; import ghidra.app.cmd.data.CreateDataCmd;
import ghidra.app.events.OpenProgramPluginEvent;
import ghidra.app.events.ProgramLocationPluginEvent; import ghidra.app.events.ProgramLocationPluginEvent;
import ghidra.app.plugin.core.codebrowser.CodeBrowserPlugin; import ghidra.app.plugin.core.codebrowser.CodeBrowserPlugin;
import ghidra.app.plugin.core.navigation.GoToAddressLabelPlugin; import ghidra.app.plugin.core.navigation.GoToAddressLabelPlugin;
@@ -231,7 +232,10 @@ public class CommentsPluginTest extends AbstractGhidraHeadedIntegrationTest {
env.connectTools(tool, tool2); env.connectTools(tool, tool2);
env.connectTools(tool2, tool); env.connectTools(tool2, tool);
env.open(program); // do this again now that the tools are in-sync env.open(program);
// open same program in second tool - cannot rely on tool connection for this
tool2.firePluginEvent(new OpenProgramPluginEvent("Test", program));
Address addr = addr(0x01006420); Address addr = addr(0x01006420);
sendProgramLocation(addr, CodeUnit.EOL_COMMENT); sendProgramLocation(addr, CodeUnit.EOL_COMMENT);
@@ -136,6 +136,13 @@ public class MultiTabPluginTest extends AbstractGhidraHeadedIntegrationTest {
assertNotNull(iconLabel); assertNotNull(iconLabel);
Point p = iconLabel.getLocationOnScreen(); Point p = iconLabel.getLocationOnScreen();
clickMouse(iconLabel, MouseEvent.BUTTON1, p.x + 1, p.y + 1, 1, 0); clickMouse(iconLabel, MouseEvent.BUTTON1, p.x + 1, p.y + 1, 1, 0);
JDialog dlg = waitForJDialog("Program Changed");
JButton button = findButtonByText(dlg, "Continue");
pressButton(button);
waitForSwing();
assertEquals(2, panel.getTabCount()); assertEquals(2, panel.getTabCount());
} }
@@ -160,9 +167,23 @@ public class MultiTabPluginTest extends AbstractGhidraHeadedIntegrationTest {
JLabel iconLabel = (JLabel) findComponentByName(tab, "Close"); JLabel iconLabel = (JLabel) findComponentByName(tab, "Close");
Point p = iconLabel.getLocationOnScreen(); Point p = iconLabel.getLocationOnScreen();
clickMouse(iconLabel, MouseEvent.BUTTON1, p.x + 1, p.y + 1, 1, 0); clickMouse(iconLabel, MouseEvent.BUTTON1, p.x + 1, p.y + 1, 1, 0);
JDialog dlg = waitForJDialog("Program Changed");
JButton button = findButtonByText(dlg, "Continue");
pressButton(button);
} }
runSwing(() -> panel.removeProgram(programs[programs.length - 1])); // Last program does not have a tab
ProgramManagerPlugin programMgr = env.getPlugin(ProgramManagerPlugin.class);
runSwingLater(() -> programMgr.closeProgram());
waitForSwing();
JDialog dlg = waitForJDialog("Program Changed");
JButton button = findButtonByText(dlg, "Continue");
pressButton(button);
waitForSwing();
assertEquals(0, panel.getTabCount()); assertEquals(0, panel.getTabCount());
} }
@@ -27,6 +27,7 @@ import org.junit.*;
import docking.DefaultActionContext; import docking.DefaultActionContext;
import docking.action.ToggleDockingAction; import docking.action.ToggleDockingAction;
import docking.widgets.fieldpanel.support.FieldLocation; import docking.widgets.fieldpanel.support.FieldLocation;
import ghidra.app.events.OpenProgramPluginEvent;
import ghidra.app.plugin.core.format.*; import ghidra.app.plugin.core.format.*;
import ghidra.app.plugin.core.navigation.NavigationHistoryPlugin; import ghidra.app.plugin.core.navigation.NavigationHistoryPlugin;
import ghidra.app.plugin.core.navigation.NextPrevAddressPlugin; import ghidra.app.plugin.core.navigation.NextPrevAddressPlugin;
@@ -70,6 +71,13 @@ public class ByteViewerConnectedToolBehaviorTest extends AbstractGhidraHeadedInt
env.connectTools(toolOne, tool2); env.connectTools(toolOne, tool2);
program = buildNotepad(); program = buildNotepad();
// open program in toolOne
env.open(program);
// open same program in second tool - cannot rely on tool connection for this
tool2.firePluginEvent(new OpenProgramPluginEvent("Test", program));
final ProgramManager pm = toolOne.getService(ProgramManager.class); final ProgramManager pm = toolOne.getService(ProgramManager.class);
runSwing(() -> pm.openProgram(program.getDomainFile())); runSwing(() -> pm.openProgram(program.getDomainFile()));
} }
@@ -223,8 +231,8 @@ public class ByteViewerConnectedToolBehaviorTest extends AbstractGhidraHeadedInt
} }
private Address convertToAddr(ByteViewerPlugin plugin, ByteBlockInfo info) { private Address convertToAddr(ByteViewerPlugin plugin, ByteBlockInfo info) {
return ((ProgramByteBlockSet) plugin.getProvider().getByteBlockSet()).getAddress( return ((ProgramByteBlockSet) plugin.getProvider().getByteBlockSet())
info.getBlock(), info.getOffset()); .getAddress(info.getBlock(), info.getOffset());
} }
private boolean byteBlockSelectionEquals(ByteBlockSelection b1, ByteBlockSelection b2) { private boolean byteBlockSelectionEquals(ByteBlockSelection b1, ByteBlockSelection b2) {