GP-2509 GP-2644 Improved Ghidra URL support. Added support for Ghidra

URL linked files and folders within project.
This commit is contained in:
ghidra1 2022-08-30 18:31:11 -04:00
parent 8d6cf5e310
commit 5a422c4502
153 changed files with 7083 additions and 1732 deletions

View file

@ -36,6 +36,7 @@ import docking.wizard.WizardPanel;
import generic.theme.GThemeDefaults.Colors;
import ghidra.app.plugin.core.archive.RestoreDialog;
import ghidra.framework.data.GhidraFileData;
import ghidra.framework.data.ProjectFileManager;
import ghidra.framework.main.*;
import ghidra.framework.model.*;
import ghidra.framework.plugintool.dialog.*;
@ -351,8 +352,13 @@ public class FrontEndPluginScreenShots extends GhidraScreenShotGenerator {
@Test
public void testProjectExists() {
OkDialog.show("Project Exists",
"Cannot restore project because project named TestPrj already exists.");
runSwing(() -> {
OkDialog.show("Project Exists",
"Cannot restore project because project named TestPrj already exists.");
}, false);
waitForSwing();
captureDialog();
}
@ -651,25 +657,60 @@ public class FrontEndPluginScreenShots extends GhidraScreenShotGenerator {
@Test
public void testViewOtherProjects()
throws IOException, LockException, InvalidNameException, CancelledException {
ProjectTestUtils.deleteProject(TEMP_DIR, OTHER_PROJECT);
Project project = env.getProject();
program = env.getProgram("WinHelloCPP.exe");
ProjectData projectData = project.getProjectData();
projectData.getRootFolder().createFile("HelloCpp.exe", program, TaskMonitor.DUMMY);
project.close();
// Create other project to be viewed
ProjectTestUtils.deleteProject(TEMP_DIR, OTHER_PROJECT);
Project otherProject = ProjectTestUtils.getProject(TEMP_DIR, OTHER_PROJECT);
Language language = getZ80_LANGUAGE();
ProjectTestUtils.createProgramFile(otherProject, "Program1", language,
language.getDefaultCompilerSpec(), null);
ProjectTestUtils.createProgramFile(otherProject, "Program2", language,
language.getDefaultCompilerSpec(), null);
otherProject.close();
waitForSwing();
performAction("View Project", "FrontEndPlugin", false);
final GhidraFileChooser fileChooser = (GhidraFileChooser) getDialog();
runSwing(() -> fileChooser.setSelectedFile(new File(TEMP_DIR, OTHER_PROJECT)));
pressButtonOnDialog("Select Project");
setToolSize(500, 600);
captureToolWindow(700, 600);
ProjectTestUtils.deleteProject(TEMP_DIR, OTHER_PROJECT);
ProjectTestUtils.deleteProject(TEMP_DIR, OTHER_PROJECT);
}
@Test
public void testLinkOtherProject()
throws IOException, LockException, InvalidNameException, CancelledException {
Project project = env.getProject();
program = env.getProgram("WinHelloCPP.exe");
ProjectFileManager projectData = (ProjectFileManager) project.getProjectData();
projectData.getRootFolder().createFile("HelloCpp.exe", program, TaskMonitor.DUMMY);
// Create other project to be viewed
ProjectTestUtils.deleteProject(TEMP_DIR, OTHER_PROJECT);
Project otherProject = ProjectTestUtils.getProject(TEMP_DIR, OTHER_PROJECT);
Language language = getZ80_LANGUAGE();
DomainFile otherFile =
ProjectTestUtils.createProgramFile(otherProject, "Program1", language,
language.getDefaultCompilerSpec(), null);
ProjectTestUtils.createProgramFile(otherProject, "Program2", language,
language.getDefaultCompilerSpec(), null);
otherFile.copyToAsLink(projectData.getRootFolder());
otherProject.close();
waitForSwing();
project = ProjectTestUtils.getProject(TEMP_DIR, PROJECT_NAME);
waitForBusyTool(tool);
performAction("View Project", "FrontEndPlugin", false);
final GhidraFileChooser fileChooser = (GhidraFileChooser) getDialog();