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 @@ - + +