diff --git a/.cirrus.default.yml b/.cirrus.default.yml
index 352b2bb12..a4d58e589 100644
--- a/.cirrus.default.yml
+++ b/.cirrus.default.yml
@@ -234,6 +234,7 @@ qa_connectedModeSonarQube_task:
echo "Run Maven ITs for Connected Mode with SonarQube on Eclipse 2024-03 / 4.31 (latest Java 17) and Server ${SQ_VERSION}"
cd its/
mvn -B -e -V org.jacoco:jacoco-maven-plugin:prepare-agent verify \
+ -s ${HOME}/.m2/settings-public-auth.xml \
-P coverage,\!standaloneMode,\!connectedModeSc \
-Declipse.p2.mirrors=false \
-Dtarget.platform=latest-java-17_e431 \
@@ -308,6 +309,7 @@ qa_connectedModeSonarCloud_task:
cd its/
env SONARCLOUD_IT_PASSWORD=$SONARCLOUD_IT_PASSWORD \
mvn -B -e -V org.jacoco:jacoco-maven-plugin:prepare-agent verify \
+ -s ${HOME}/.m2/settings-public-auth.xml \
-P coverage,\!standaloneMode,\!connectedModeSq \
-Declipse.p2.mirrors=false \
-Dtarget.platform=latest-java-21 \
@@ -386,6 +388,7 @@ qa_standaloneMode_task:
echo "Run Maven ITs for Standalone Mode on Eclipse '${TARGET_PLATFORM}'"
cd its/
mvn -B -e -V org.jacoco:jacoco-maven-plugin:prepare-agent verify \
+ -s ${HOME}/.m2/settings-public-auth.xml \
-P coverage,\!connectedModeSq,\!connectedModeSc \
-Declipse.p2.mirrors=false \
-Dtarget.platform=${TARGET_PLATFORM} \
diff --git a/.cirrus.ibuilds.yml b/.cirrus.ibuilds.yml
index b0d396632..bdaffe3dd 100644
--- a/.cirrus.ibuilds.yml
+++ b/.cirrus.ibuilds.yml
@@ -71,6 +71,7 @@ qa_ibuilds_task:
echo "Run Maven ITs for Standalone Mode on Eclipse iBuilds"
cd its/
mvn -B -e -V verify \
+ -s ${HOME}/.m2/settings-public-auth.xml \
-P \!connectedModeSq,\!connectedModeSc \
-Declipse.p2.mirrors=false \
-Dtarget.platform=ibuilds \
diff --git a/.cirrus/Dockerfile b/.cirrus/Dockerfile
index 50f26eefa..4c3d3bd59 100644
--- a/.cirrus/Dockerfile
+++ b/.cirrus/Dockerfile
@@ -19,8 +19,15 @@ RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2
# "build-essential" (containing gcc/g++/make) for C/C++ analysis
# Webkit libraries for rendering the SonarQube Rule Description view
ARG NODE_VERSION=20
-RUN apt-get update && apt-get install -y build-essential metacity xvfb ffmpeg nodejs=${NODE_VERSION}.* gettext-base \
+RUN apt-get update && apt-get install -y \
+ build-essential \
+ dbus-x11 \
+ ffmpeg \
+ gettext-base \
libwebkit2gtk-4.* \
+ metacity \
+ nodejs=${NODE_VERSION}.* \
+ xvfb \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
COPY --chmod=755 .cirrus/init.d/xvfb /etc/init.d/
@@ -30,3 +37,5 @@ ENV JAVA_HOME_11_X64=/opt/java/openjdk-11
ENV JAVA_HOME_17_X64=/opt/java/openjdk
ENV JAVA_HOME_21_X64=/opt/java/openjdk-21
COPY --chown=sonarsource .cirrus/toolchains.xml .m2/toolchains.xml
+# Fix for authenticated access to Reddeer mirror on Repox
+COPY --chown=sonarsource .cirrus/settings-public-auth.xml .m2/settings-public-auth.xml
diff --git a/.cirrus/settings-public-auth.xml b/.cirrus/settings-public-auth.xml
new file mode 100644
index 000000000..2f90da0c7
--- /dev/null
+++ b/.cirrus/settings-public-auth.xml
@@ -0,0 +1,117 @@
+
+
+
+ ${env.CIRRUS_WORKING_DIR}/.m2/repository
+
+
+ sonarsource
+
+
+
+ Authorization
+ Bearer ${env.ARTIFACTORY_ACCESS_TOKEN}
+
+
+
+
+
+
+ reddeerLatest
+ ${env.ARTIFACTORY_PRIVATE_USERNAME}
+ ${env.ARTIFACTORY_PRIVATE_PASSWORD}
+
+ httpclient
+
+
+
+
+ http.authentication.preemptive
+ %b,false
+
+
+ true
+
+
+
+
+
+ reddeer420
+ ${env.ARTIFACTORY_PRIVATE_USERNAME}
+ ${env.ARTIFACTORY_PRIVATE_PASSWORD}
+
+ httpclient
+
+
+
+
+ http.authentication.preemptive
+ %b,false
+
+
+ true
+
+
+
+
+
+
+
+
+ sonarsource-repo
+
+
+ !skip-sonarsource-repo
+
+
+
+
+ sonarsource
+ SonarSource Central Repository
+ https://repox.jfrog.io/artifactory/sonarsource
+
+ true
+ interval:60
+ fail
+
+
+ false
+ never
+
+
+
+
+ reddeerLatest
+ https://repox.jfrog.io/artifactory/reddeer/releases/latest
+ p2
+
+
+ reddeer420
+ https://repox.jfrog.io/artifactory/reddeer/releases/4.2.0
+ p2
+
+
+
+
+
+ sonarsource
+ SonarSource Central Repository
+ https://repox.jfrog.io/artifactory/sonarsource
+
+ true
+
+ interval:60
+ fail
+
+
+ false
+ never
+
+
+
+
+
+
diff --git a/its/org.sonarlint.eclipse.its.connected.sq/src/org/sonarlint/eclipse/its/connected/sq/SonarQubeConnectedModeTest.java b/its/org.sonarlint.eclipse.its.connected.sq/src/org/sonarlint/eclipse/its/connected/sq/SonarQubeConnectedModeTest.java
index 26d3bf83f..1e5541ce3 100644
--- a/its/org.sonarlint.eclipse.its.connected.sq/src/org/sonarlint/eclipse/its/connected/sq/SonarQubeConnectedModeTest.java
+++ b/its/org.sonarlint.eclipse.its.connected.sq/src/org/sonarlint/eclipse/its/connected/sq/SonarQubeConnectedModeTest.java
@@ -31,6 +31,7 @@
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
+import org.awaitility.Awaitility;
import org.eclipse.reddeer.common.wait.TimePeriod;
import org.eclipse.reddeer.common.wait.WaitUntil;
import org.eclipse.reddeer.common.wait.WaitWhile;
@@ -636,8 +637,20 @@ public void test_Java_Python_DBD() {
new DefaultEditor().close();
openFileAndWaitForAnalysisCompletion(rootProject.getResource("src", "dbd", "Main.java"));
- waitForSonarLintMarkers(onTheFlyView,
- tuple("Fix this access on a collection that may trigger an 'ArrayIndexOutOfBoundsException'. [+2 locations]", "Main.java", "few seconds ago"));
+
+ // Due to changes in the DBD Java analyzer the rule "S6466" was changed to now find more locations. This analyzer
+ // is only included in the latest version of SonarQube Server!
+ Awaitility.await()
+ .atMost(20, TimeUnit.SECONDS)
+ .untilAsserted(() -> {
+ assertThat(onTheFlyView.getIssues()).hasSize(1);
+ assertThat(onTheFlyView.getIssues())
+ .extracting(SonarLintIssueMarker::getDescription, SonarLintIssueMarker::getResource, SonarLintIssueMarker::getCreationDate)
+ .containsAnyOf(
+ tuple("Fix this access on a collection that may trigger an 'ArrayIndexOutOfBoundsException'. [+2 locations]", "Main.java", "few seconds ago"),
+ tuple("Fix this access on a collection that may trigger an 'ArrayIndexOutOfBoundsException'. [+4 locations]", "Main.java", "few seconds ago"));
+ });
+
new DefaultEditor().close();
}
diff --git a/its/org.sonarlint.eclipse.its.shared/src/org/sonarlint/eclipse/its/shared/reddeer/preferences/FileAssociationsPreferences.java b/its/org.sonarlint.eclipse.its.shared/src/org/sonarlint/eclipse/its/shared/reddeer/preferences/FileAssociationsPreferences.java
index 55db9b1d6..0a2a53fa8 100644
--- a/its/org.sonarlint.eclipse.its.shared/src/org/sonarlint/eclipse/its/shared/reddeer/preferences/FileAssociationsPreferences.java
+++ b/its/org.sonarlint.eclipse.its.shared/src/org/sonarlint/eclipse/its/shared/reddeer/preferences/FileAssociationsPreferences.java
@@ -19,6 +19,7 @@
*/
package org.sonarlint.eclipse.its.shared.reddeer.preferences;
+import org.eclipse.reddeer.common.exception.RedDeerException;
import org.eclipse.reddeer.core.matcher.WithLabelMatcher;
import org.eclipse.reddeer.core.reference.ReferencedComposite;
import org.eclipse.reddeer.eclipse.ui.dialogs.PropertyPage;
@@ -44,11 +45,21 @@ public static FileAssociationsPreferences open() {
}
public void resetFileAssociation() {
- new DefaultCombo(this, new WithLabelMatcher(LABEL)).setSelection("System Editor; if none: Text Editor");
+ // With Eclipse 4.34 (2024-12) they changed the label inside the combo box from "Text Editor" to "Plain Text Editor"
+ try {
+ new DefaultCombo(this, new WithLabelMatcher(LABEL)).setSelection("System Editor; if none: Text Editor");
+ } catch (RedDeerException ignored) {
+ new DefaultCombo(this, new WithLabelMatcher(LABEL)).setSelection("System Editor; if none: Plain Text Editor");
+ }
}
public void enforceFileAssociation() {
- new DefaultCombo(this, new WithLabelMatcher(LABEL)).setSelection("Text Editor");
+ // With Eclipse 4.34 (2024-12) they changed the label inside the combo box from "Text Editor" to "Plain Text Editor"
+ try {
+ new DefaultCombo(this, new WithLabelMatcher(LABEL)).setSelection("Text Editor");
+ } catch (RedDeerException ignored) {
+ new DefaultCombo(this, new WithLabelMatcher(LABEL)).setSelection("Plain Text Editor");
+ }
}
public void ok() {
diff --git a/target-platforms/ibuilds.target b/target-platforms/ibuilds.target
index 33ec60be5..1d42044b6 100644
--- a/target-platforms/ibuilds.target
+++ b/target-platforms/ibuilds.target
@@ -19,7 +19,8 @@
-
+
+
diff --git a/target-platforms/latest-java-17_e431.target b/target-platforms/latest-java-17_e431.target
index 11cb2c9b8..f95de2a28 100644
--- a/target-platforms/latest-java-17_e431.target
+++ b/target-platforms/latest-java-17_e431.target
@@ -19,7 +19,8 @@
-
+
+
diff --git a/target-platforms/latest-java-21.target b/target-platforms/latest-java-21.target
index a2f7fbb0b..63cb6d5c1 100644
--- a/target-platforms/latest-java-21.target
+++ b/target-platforms/latest-java-21.target
@@ -25,7 +25,8 @@
-
+
+
diff --git a/target-platforms/oldest-java-11_e48.target b/target-platforms/oldest-java-11_e48.target
index c291e4413..e86ebaf3b 100644
--- a/target-platforms/oldest-java-11_e48.target
+++ b/target-platforms/oldest-java-11_e48.target
@@ -20,7 +20,8 @@
-
+
+