Skip to content

Commit

Permalink
JUnit experimental | ASTEvalEngine - WIP
Browse files Browse the repository at this point in the history
  • Loading branch information
SougandhS committed Sep 6, 2024
1 parent 2a0a97c commit 1ea982a
Show file tree
Hide file tree
Showing 7 changed files with 50 additions and 29 deletions.
2 changes: 1 addition & 1 deletion org.eclipse.jdt.debug.tests/META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.jdt.debug.tests; singleton:=true
Bundle-Version: 3.12.500.qualifier
Bundle-Version: 3.12.600.qualifier
Bundle-ClassPath: javadebugtests.jar
Bundle-Activator: org.eclipse.jdt.debug.testplugin.JavaTestPlugin
Bundle-Vendor: %providerName
Expand Down
2 changes: 1 addition & 1 deletion org.eclipse.jdt.debug.tests/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
</parent>
<groupId>org.eclipse.jdt</groupId>
<artifactId>org.eclipse.jdt.debug.tests</artifactId>
<version>3.12.500-SNAPSHOT</version>
<version>3.12.600-SNAPSHOT</version>
<packaging>eclipse-test-plugin</packaging>
<properties>
<testSuite>${project.artifactId}</testSuite>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,6 @@ public static void main(String[] ecs) {
File parent = new File("parent");
File file = new File(parent,"test");
System.out.println("COMPLETED");
System.out.println("COMPLETED");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@ public abstract class AbstractDebugTest extends TestCase implements IEvaluation
public static final String BOUND_JRE_PROJECT_NAME = "BoundJRE";
public static final String CLONE_SUFFIX = "Clone";

final String[] LAUNCH_CONFIG_NAMES_1_4 = { "java.io.File", "LargeSourceFile", "LotsOfFields",
final String[] LAUNCH_CONFIG_NAMES_1_4 = { "LargeSourceFile", "LotsOfFields",
"Breakpoints",
"InstanceVariablesTests",
"LocalVariablesTests", "LocalVariableTests2", "StaticVariablesTests",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,50 +1,60 @@
package org.eclipse.jdt.debug.tests.breakpoints;

import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.debug.core.IJavaLineBreakpoint;
import org.eclipse.jdt.debug.core.IJavaThread;
import org.eclipse.jdt.debug.tests.AbstractDebugTest;

public class ConditionalBreakpointsWithFileClass extends AbstractDebugTest {


public ConditionalBreakpointsWithFileClass(String name) {
super(name);
}

public void testFileConditionalBreakpointForTrue() throws Exception {
@Override
protected IJavaProject getProjectContext() {
return get14Project();
}

public void testFileConditionalBreakpointforFalse() throws Exception {
String typeName = "FileConditionSnippet2";
IJavaLineBreakpoint bp2 = createLineBreakpoint(7, typeName);
IJavaLineBreakpoint bp = createConditionalLineBreakpoint(374, "java.io.File", "child.equals(\"test\")", true);
IJavaLineBreakpoint bp3 = createLineBreakpoint(8, typeName);
IJavaLineBreakpoint bp2 = createConditionalLineBreakpoint(364, "java.io.File", "false", true);
IJavaThread mainThread = null;

try {
Thread.sleep(10);
mainThread = launchToBreakpoint(typeName);
mainThread.getTopStackFrame().stepInto();
Thread.sleep(100);
mainThread.resume();
Thread.sleep(100);
int hitLine = 0;
assertTrue("Thread should be suspended", mainThread.isSuspended());
hitLine = mainThread.getStackFrames()[0].getLineNumber();
assertEquals("Should've hit", 374, hitLine);
assertEquals("JENKINS FILE CLASS TESTING", 8, hitLine);

bp2.delete();
bp.delete();
bp3.delete();
} finally {
terminateAndRemove(mainThread);
removeAllBreakpoints();
}
}

public void testFileConditionalBreakpointForFalse() throws Exception {
public void testFileConditionalBreakpointforTrue() throws Exception {
String typeName = "FileConditionSnippet2";
IJavaLineBreakpoint bp = createLineBreakpoint(8, typeName);
IJavaLineBreakpoint bp2 = createConditionalLineBreakpoint(374, "java.io.File", "child.equals(\"test2\")", true);
IJavaLineBreakpoint bp3 = createLineBreakpoint(8, typeName);
IJavaLineBreakpoint bp2 = createConditionalLineBreakpoint(364, "java.io.File", "true", true);
IJavaThread mainThread = null;

try {
Thread.sleep(10);
mainThread = launchToBreakpoint(typeName);
int hitLine = 0;
hitLine = mainThread.getTopStackFrame().getLineNumber();
assertEquals("Should've hit", 8, hitLine);
assertTrue("Thread should be suspended", mainThread.isSuspended());
hitLine = mainThread.getStackFrames()[0].getLineNumber();
assertEquals("JENKINS FILE CLASS TESTING", 364, hitLine);

bp2.delete();
bp.delete();
bp3.delete();
} finally {
terminateAndRemove(mainThread);
removeAllBreakpoints();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -682,13 +682,16 @@ private ICompiledExpression createExpressionFromAST(String snippet,
errorSequence.addError(problem.getMessage());
snippetError = true;
}
if (problemId == IProblem.VoidMethodReturnsValue
if (problemId == IProblem.VoidMethodReturnsValue // WIP [do not merge]
|| problemId == IProblem.NotVisibleMethod
|| problemId == IProblem.NotVisibleConstructor
|| problemId == IProblem.NotVisibleField
|| problemId == IProblem.NotVisibleType
|| problemId == IProblem.UnexpectedStaticModifierForMethod || problemId == IProblem.AmbiguousType) {
continue;
|| problemId == IProblem.UnexpectedStaticModifierForMethod || problemId == IProblem.AmbiguousType
|| problemId == IProblem.UninitializedBlankFinalField
|| problemId == IProblem.ParsingErrorDeleteTokens || problemId == 1610612976) { // Need to refer to the correct problem ID
continue; // [WIP]

}
if (problem.isError()) {
if (codeSnippetStart <= errorOffset
Expand All @@ -698,8 +701,9 @@ private ICompiledExpression createExpressionFromAST(String snippet,
} else if (runMethodStart <= errorOffset
&& errorOffset <= runMethodEnd) {
runMethodError = true;
DebugPlugin.log(new Status(IStatus.WARNING, DebugPlugin.getUniqueIdentifier(), "Compile error during code evaluation: " //$NON-NLS-1$
+ problem.getMessage()));
DebugPlugin.log(new Status(IStatus.WARNING, DebugPlugin.getUniqueIdentifier(), problemId
+ " -> Compile error during code evaluation: Snip -> " + snippet //$NON-NLS-1$
+ problem.getMessage() + unit.toString()));
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@

import java.text.MessageFormat;

import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
Expand All @@ -23,6 +25,7 @@
import org.eclipse.debug.core.model.IDebugTarget;
import org.eclipse.debug.core.model.IValue;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.dom.Message;
import org.eclipse.jdt.debug.core.IJavaBreakpoint;
import org.eclipse.jdt.debug.core.IJavaBreakpointListener;
Expand Down Expand Up @@ -217,12 +220,15 @@ public int breakpointHit(IJavaThread thread, IJavaBreakpoint breakpoint) {
.getTopStackFrame();
IJavaProject project = lineBreakpoint.getJavaProject(frame);
if (project == null) {
fireConditionHasErrors(
lineBreakpoint,
new Message[] { new Message(
JDIDebugBreakpointMessages.JavaLineBreakpoint_Unable_to_compile_conditional_breakpoint___missing_Java_project_context__1,
-1) });
return SUSPEND;
IMarker marker = breakpoint.getMarker(); // my changes
if (marker != null) {
IResource res = marker.getResource();
project = JavaCore.create(res.getProject());
} else {
fireConditionHasErrors(lineBreakpoint, new Message[] {
new Message(JDIDebugBreakpointMessages.JavaLineBreakpoint_Unable_to_compile_conditional_breakpoint___missing_Java_project_context__1, -1) });
return SUSPEND;
}
}
IJavaDebugTarget target = (IJavaDebugTarget) thread
.getDebugTarget();
Expand Down

0 comments on commit 1ea982a

Please sign in to comment.