Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/run-regression-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ jobs:
fail-fast: false
matrix:
runtime: [ linux, mac, windows ]
targetPlatform: [ 2Q2025 ]
targetPlatform: [ 3Q2025 ]
include:
- runtime: linux
os: ubuntu-latest
Expand Down
8 changes: 4 additions & 4 deletions ci/jenkins/run-tests
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ pipeline {
}
}

stage('Test on Eclipse 2Q2025') {
stage('Test on Eclipse 3Q2025') {
steps {
dir('liberty-tools-eclipse') {
script {
Expand All @@ -48,16 +48,16 @@ pipeline {
sh '''
MVNPATH="$(dirname $(which mvn))/.."
GRADLEPATH="$(dirname $(which gradle))/.."
mvn clean verify -DmvnLogFile -DmvnPath=$MVNPATH -DgradlePath=$GRADLEPATH -Dtycho.disableP2Mirrors=true -Declipse.target=2Q2025 -Dosgi.debug=./tests/resources/ci/debug.opts -DtestAppImportWait=120000 -Dtycho.showEclipseLog -e -X
mvn clean verify -DmvnLogFile -DmvnPath=$MVNPATH -DgradlePath=$GRADLEPATH -Dtycho.disableP2Mirrors=true -Declipse.target=3Q2025 -Dosgi.debug=./tests/resources/ci/debug.opts -DtestAppImportWait=120000 -Dtycho.showEclipseLog -e -X
'''
}
} finally {
sh "find tests -type f -name \"lte-dev-mode-output-*.log\""
sh "mkdir lte-dev-mode-output-logs && find tests -type f -name \"lte-dev-mode-output-*.log\" -exec cp {} lte-dev-mode-output-logs \\;"
sh "zip -r lte-dev-mode-output-logs.zip lte-dev-mode-output-logs"
sh "cd tests/target/surefire-reports && zip -r 2Q2025-test-reports.zip ."
sh "cd tests/target/surefire-reports && zip -r 3Q2025-test-reports.zip ."

archiveArtifacts artifacts: 'tests/target/surefire-reports/2Q2025-test-reports.zip', fingerprint: true
archiveArtifacts artifacts: 'tests/target/surefire-reports/3Q2025-test-reports.zip', fingerprint: true
archiveArtifacts artifacts: 'lte-dev-mode-output-logs.zip', fingerprint: true
archiveArtifacts artifacts: 'tests/target/work/data/.metadata/.log', fingerprint: true
}
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@

<!-- default version of the eclipse IDE to run tests against -->
<!-- must be one of the target platform files defined in this project under releng -->
<eclipse.target>2Q2025</eclipse.target>
<eclipse.target>3Q2025</eclipse.target>

</properties>

Expand Down
111 changes: 111 additions & 0 deletions releng/target-platform-3Q2025/target-platform-3Q2025.target
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde version="3.8"?>
<!--
Copyright (c) 2025 IBM Corporation and others.

This program and the accompanying materials are made available under the
terms of the Eclipse Public License v. 2.0 which is available at
http://www.eclipse.org/legal/epl-2.0.

SPDX-License-Identifier: EPL-2.0

Contributors:
IBM Corporation - initial implementation
--><target includeMode="feature" name="target-platform.target" sequenceNumber="16">
<locations>
<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
<repository location="https://download.eclipse.org/releases/2025-09/"/>
<unit id="org.eclipse.jdt.feature.group" version="3.20.300.v20250905-1111"/>
<unit id="org.eclipse.ui.trace" version="1.3.500.v20250320-0611"/>
<unit id="org.eclipse.emf.sdk.feature.group" version="2.43.0.v20250825-1255"/>
<unit id="org.eclipse.equinox.sdk.feature.group" version="3.23.1800.v20250820-1640"/>
<unit id="org.eclipse.m2e.wtp.feature.feature.group" version="1.6.1.20231024-1618"/>
<unit id="org.eclipse.sdk.feature.group" version="4.37.0.v20250905-1111"/>
<unit id="org.hamcrest.core" version="2.2.0.v20230809-1000"/>
<unit id="org.junit" version="4.13.2.v20240929-1000"/>
<unit id="junit-jupiter-api" version="5.13.4"/>
<unit id="junit-jupiter-engine" version="5.13.4"/>
<unit id="org.eclipse.lsp4e" version="0.18.26.202508141023"/>
<unit id="org.eclipse.lsp4e.jdt" version="0.13.7.202505091900"/>
<unit id="org.eclipse.wildwebdeveloper.feature.feature.group" version="1.3.10.202502071606"/>
<unit id="org.eclipse.wildwebdeveloper.xml.feature.feature.group" version="1.3.7.202501161210"/>
<unit id="org.eclipse.m2e.lemminx.feature.feature.group" version="2.6.101.20250727-0612"/>
<unit id="org.eclipse.jdt.debug.ui" version="3.15.100.v20250801-1103"/>
<unit id="org.eclipse.jdt.debug" version="3.24.0.v20250729-0743"/>
</location>
<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
<repository location="https://download.eclipse.org/tools/orbit/downloads/drops/R20220531185310/repository"/>
<unit id="ch.qos.logback.slf4j" version="1.2.3.v20200428-2012"/>
<unit id="ch.qos.logback.slf4j.source" version="1.2.3.v20200428-2012"/>
<unit id="org.slf4j.api" version="1.7.30.v20200204-2150"/>
<unit id="org.slf4j.api.source" version="1.7.30.v20200204-2150"/>
</location>
<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
<repository location="https://download.eclipse.org/technology/swtbot/releases/4.2.1"/>
<unit id="org.eclipse.swtbot.eclipse.feature.group" version="4.2.1.202406141605"/>
<unit id="org.eclipse.swtbot.eclipse.test.junit.feature.group" version="4.2.1.202406141605"/>
<unit id="org.eclipse.swtbot.feature.group" version="4.2.1.202406141605"/>
<unit id="org.eclipse.swtbot.forms.feature.group" version="4.2.1.202406141605"/>
<unit id="org.eclipse.swtbot.ide.feature.group" version="4.2.1.202406141605"/>
</location>
<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
<repository location="https://download.eclipse.org/tools/cdt/releases/11.6"/>
<unit id="org.eclipse.cdt.launch" version="0.0.0"/>
</location>
<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
<repository location="http://download.eclipse.org/lsp4mp/releases/0.13.2/repository/"/>
<unit id="org.eclipse.lsp4mp.jdt.core" version="0.13.2.20241022-1352"/>
</location>
<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
<repository location="https://download.eclipse.org/lsp4j/updates/releases/0.24.0/"/>
<unit id="org.eclipse.lsp4j" version="0.24.0.v20250131-1745"/>
<unit id="org.eclipse.lsp4j.jsonrpc" version="0.24.0.v20250131-1745"/>
</location>
<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
<repository location="https://download.eclipse.org/jdtls/milestones/1.42.0/repository/"/>
<unit id="org.eclipse.jdt.ls.core" version="1.42.0.202411281516"/>
</location>
<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
<repository location="https://download.eclipse.org/buildship/updates/e427/releases/3.x/3.1.9.v20240115-1636/"/>
<unit id="org.eclipse.buildship.ui" version="3.1.9.v20240115-1636"/>
</location>
<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
<repository location="https://download.eclipse.org/lsp4jakarta/releases/0.2.3/repository/"/>
<unit id="org.eclipse.lsp4jakarta.jdt.core" version="0.2.3"/>
</location>
<location includeDependencyDepth="none" includeDependencyScopes="compile" missingManifest="generate" type="Maven">
<dependencies>
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy-agent</artifactId>
<version>1.14.18</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy</artifactId>
<version>1.14.18</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>5.12.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-junit-jupiter</artifactId>
<version>5.12.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.objenesis</groupId>
<artifactId>objenesis</artifactId>
<version>3.4</version>
<type>jar</type>
</dependency>
</dependencies>
</location>
</locations>
</target>
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@
import java.util.Iterator;
import java.util.List;

import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
Expand Down Expand Up @@ -140,7 +142,7 @@ public static SWTBotMenu getDebuggerConnectMenuForDebugObject(Object debugObject
showDebugView();

SWTBotTreeItem obj = new SWTBotTreeItem((TreeItem) debugObject);

// Ensure the tree item is properly selected and focused before accessing context menu
// This is critical for headless CI environments where context menus can hang
obj.select();
Expand Down Expand Up @@ -238,10 +240,10 @@ public void run() {
}
}
});

// Give the view time to activate and render
MagicWidgetFinder.pause(500);

Object debugView = debugViewHolder[0];
if (debugView == null) {
System.err.println("Debug view not found, cannot find object: " + objectName);
Expand All @@ -255,7 +257,7 @@ public void run() {
System.out.println("Retry attempt " + attempt + " to find object: " + objectName);
MagicWidgetFinder.pause(1000);
}

result = MagicWidgetFinder.find(objectName, debugView,
Option.factory().useContains(true).setThrowExceptionOnNotFound(false).widgetClass(TreeItem.class).build());
}
Expand Down Expand Up @@ -802,6 +804,14 @@ public static Object getAppInPackageExplorerTree(String appName) {

Object project = MagicWidgetFinder.find(appName, peView, Option.factory().useContains(true).widgetClass(TreeItem.class).build());
go(project);

// Add pause to ensure UI is fully ready after selection
// This helps prevent race conditions where TreeItem data isn't fully initialized
// particularly on Windows in headless CI environments where selection events
// can trigger cascading calls to getSelectedDashboardProject() before the
// selection is fully resolved, causing infinite loops
MagicWidgetFinder.pause(5000);

return project;
}

Expand Down
Loading