diff --git a/GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/META-INF/MANIFEST.MF b/GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/META-INF/MANIFEST.MF index 17899d784d..b2d2405b25 100644 --- a/GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/META-INF/MANIFEST.MF +++ b/GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/META-INF/MANIFEST.MF @@ -14,6 +14,7 @@ Require-Bundle: org.eclipse.ant.core;bundle-version="3.5.200", org.eclipse.jdt.core;bundle-version="3.16.0", org.eclipse.jdt.core.manipulation;bundle-version="1.11.0", org.eclipse.jdt.debug.ui;bundle-version="3.10.100", + org.eclipse.jdt.junit.core;bundle-version="3.10.200", org.eclipse.jdt.launching;bundle-version="3.12.0", org.eclipse.jdt.ui;bundle-version="3.16.0", org.eclipse.ltk.core.refactoring;bundle-version="3.9.200", diff --git a/GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/src/main/java/ghidradev/ghidraprojectcreator/utils/GhidraProjectUtils.java b/GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/src/main/java/ghidradev/ghidraprojectcreator/utils/GhidraProjectUtils.java index 8bbaf370a1..61d659bf92 100644 --- a/GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/src/main/java/ghidradev/ghidraprojectcreator/utils/GhidraProjectUtils.java +++ b/GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/src/main/java/ghidradev/ghidraprojectcreator/utils/GhidraProjectUtils.java @@ -26,6 +26,7 @@ import org.eclipse.core.runtime.*; import org.eclipse.debug.core.ILaunchConfiguration; import org.eclipse.jdt.core.*; import org.eclipse.jdt.internal.launching.StandardVMType; +import org.eclipse.jdt.junit.JUnitCore; import org.eclipse.jdt.launching.*; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; @@ -298,6 +299,10 @@ public class GhidraProjectUtils { IFolder binFolder = project.getFolder("bin"); javaProject.setOutputLocation(binFolder.getFullPath(), monitor); + // Add Eclipse's built-in JUnit to classpath + addToClasspath(javaProject, JavaCore.newContainerEntry(JUnitCore.JUNIT4_CONTAINER_PATH), + monitor); + // Link in Ghidra to the project linkGhidraToProject(javaProject, ghidraLayout, javaConfig, jythonInterpreterName, monitor); @@ -370,6 +375,11 @@ public class GhidraProjectUtils { vmEntryCandidate = entry; } } + else if (entry.getEntryKind() == IClasspathEntry.CPE_CONTAINER && + entry.getPath().toString().startsWith(JUnitCore.JUNIT_CONTAINER_ID)) { + // Keep existing JUnit + classpathEntriesToKeep.add(entry); + } else if (entry.getEntryKind() == IClasspathEntry.CPE_PROJECT) { // Keep all project dependencies classpathEntriesToKeep.add(entry);