diff --git a/org.eclipse.jdt.debug.tests/build.properties b/org.eclipse.jdt.debug.tests/build.properties index 7f803a96b9..d6b90f907c 100644 --- a/org.eclipse.jdt.debug.tests/build.properties +++ b/org.eclipse.jdt.debug.tests/build.properties @@ -26,6 +26,7 @@ bin.includes = plugin.xml,\ java8/,\ java9/,\ java16_/,\ + java23/,\ java24/ source.javadebugtests.jar = test plugin/,\ tests/,\ diff --git a/org.eclipse.jdt.debug.tests/test plugin/org/eclipse/jdt/debug/testplugin/JavaProjectHelper.java b/org.eclipse.jdt.debug.tests/test plugin/org/eclipse/jdt/debug/testplugin/JavaProjectHelper.java index 7366002db1..ef25f67a1c 100644 --- a/org.eclipse.jdt.debug.tests/test plugin/org/eclipse/jdt/debug/testplugin/JavaProjectHelper.java +++ b/org.eclipse.jdt.debug.tests/test plugin/org/eclipse/jdt/debug/testplugin/JavaProjectHelper.java @@ -189,6 +189,15 @@ public static boolean isJava21_Compatible() { return isCompatible(21); } + /** + * Returns if the currently running VM is version compatible with Java 23 + * + * @return true if a Java 23 (or greater) VM is running false otherwise + */ + public static boolean isJava23_Compatible() { + return isCompatible(23); + } + /** * Returns if the currently running VM is version compatible with Java 24 * diff --git a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/AbstractDebugTest.java b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/AbstractDebugTest.java index b517055bf5..551a4e130f 100644 --- a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/AbstractDebugTest.java +++ b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/AbstractDebugTest.java @@ -245,6 +245,7 @@ public abstract class AbstractDebugTest extends TestCase implements IEvaluation private static boolean loaded9 = false; private static boolean loaded16_ = false; private static boolean loaded21 = false; + private static boolean loaded23 = false; private static boolean loaded24 = false; private static boolean loadedEE = false; private static boolean loadedJRE = false; @@ -626,6 +627,34 @@ synchronized void assert21Project() { } } + synchronized void assert23Project() { + IJavaProject jp = null; + ArrayList cfgs = new ArrayList<>(1); + try { + if (!loaded23) { + jp = createProject(TWENTYTHREE_PROJECT_NAME, JavaProjectHelper.TEST_23_SRC_DIR.toString(), JavaProjectHelper.JAVA_SE_23_EE_NAME, false); + jp.setOption(JavaCore.COMPILER_SOURCE, JavaCore.VERSION_23); + jp.setOption(JavaCore.COMPILER_COMPLIANCE, JavaCore.VERSION_23); + cfgs.add(createLaunchConfiguration(jp, "Main21")); + loaded23 = true; + waitForBuild(); + assertNoErrorMarkersExist(jp.getProject()); + } + } catch (Exception e) { + try { + if (jp != null) { + jp.getProject().delete(true, true, null); + for (int i = 0; i < cfgs.size(); i++) { + cfgs.get(i).delete(); + } + } + } catch (CoreException ce) { + // ignore + } + handleProjectCreationException(e, TWENTYTHREE_PROJECT_NAME, jp); + } + } + /** * Creates the Java 24 compliant project */ @@ -957,6 +986,16 @@ protected IJavaProject get21Project() { return getJavaProject(TWENTYONE_PROJECT_NAME); } + /** + * Returns the 'Two_Three' project, used for Java 23 tests. + * + * @return the test project + */ + protected IJavaProject get23Project() { + assert23Project(); + return getJavaProject(TWENTYTHREE_PROJECT_NAME); + } + /** * Returns the 'Two_Four' project, used for Java 24 tests. * diff --git a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/AutomatedSuite.java b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/AutomatedSuite.java index c05e9ef457..a5e5d591c9 100644 --- a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/AutomatedSuite.java +++ b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/AutomatedSuite.java @@ -420,7 +420,7 @@ public AutomatedSuite() { if (JavaProjectHelper.isJava16_Compatible()) { addTest(new TestSuite(RecordBreakpointTests.class)); } - if (Runtime.version().feature() == 24 && JavaProjectHelper.isJava24_Compatible()) { + if (JavaProjectHelper.isJava23_Compatible()) { addTest(new TestSuite(VirtualThreadsDebugViewTests.class)); } } diff --git a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/ui/VirtualThreadsDebugViewTests.java b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/ui/VirtualThreadsDebugViewTests.java index d3e5ce1378..675a69b423 100644 --- a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/ui/VirtualThreadsDebugViewTests.java +++ b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/ui/VirtualThreadsDebugViewTests.java @@ -17,12 +17,8 @@ *******************************************************************************/ package org.eclipse.jdt.debug.tests.ui; -import java.util.ArrayList; - import org.eclipse.core.resources.IFile; -import org.eclipse.core.runtime.CoreException; import org.eclipse.debug.core.DebugPlugin; -import org.eclipse.debug.core.ILaunchConfiguration; import org.eclipse.debug.core.model.IStackFrame; import org.eclipse.debug.core.model.IThread; import org.eclipse.debug.internal.ui.views.console.ProcessConsole; @@ -31,10 +27,8 @@ import org.eclipse.debug.ui.IDebugUIConstants; import org.eclipse.debug.ui.IDebugView; import org.eclipse.jdt.core.IJavaProject; -import org.eclipse.jdt.core.JavaCore; import org.eclipse.jdt.debug.core.IJavaBreakpoint; import org.eclipse.jdt.debug.core.IJavaThread; -import org.eclipse.jdt.debug.testplugin.JavaProjectHelper; import org.eclipse.jdt.debug.tests.TestUtil; import org.eclipse.jdt.debug.ui.IJavaDebugUIConstants; import org.eclipse.jdt.internal.debug.core.model.JDIThread; @@ -86,33 +80,7 @@ protected void tearDown() throws Exception { @Override protected IJavaProject getProjectContext() { - create23Project(); - return getJavaProject(TWENTYTHREE_PROJECT_NAME); - } - - synchronized void create23Project() { - IJavaProject jp = null; - ArrayList cfgs = new ArrayList<>(1); - try { - jp = createProject(TWENTYTHREE_PROJECT_NAME, JavaProjectHelper.TEST_23_SRC_DIR.toString(), JavaProjectHelper.JAVA_SE_23_EE_NAME, false); - jp.setOption(JavaCore.COMPILER_SOURCE, JavaCore.VERSION_23); - jp.setOption(JavaCore.COMPILER_COMPLIANCE, JavaCore.VERSION_23); - cfgs.add(createLaunchConfiguration(jp, "Main21")); - waitForBuild(); - assertNoErrorMarkersExist(jp.getProject()); - } catch (Exception e) { - try { - if (jp != null) { - jp.getProject().delete(true, true, null); - for (int i = 0; i < cfgs.size(); i++) { - cfgs.get(i).delete(); - } - } - } catch (CoreException ce) { - // ignore - } - super.handleProjectCreationException(e, TWENTYTHREE_PROJECT_NAME, jp); - } + return get23Project(); } public void testVirtualThreadDebugView() throws Exception {