aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorViktor Vorona <viktor.vorona@sonarsource.com>2025-03-07 17:04:17 +0100
committersonartech <sonartech@sonarsource.com>2025-03-12 20:03:12 +0000
commit06353f7cdc6d3626fcc9759609a06cd64c3b2f97 (patch)
tree9a39ae0ccf2e31111bfd4492e1bc86a445b45697
parent51d9e661fe661be0cbc81d6768068daabc09f2cd (diff)
downloadsonarqube-06353f7cdc6d3626fcc9759609a06cd64c3b2f97.tar.gz
sonarqube-06353f7cdc6d3626fcc9759609a06cd64c3b2f97.zip
SONAR-20263 Do not fail GET quality-gates on condition duplicates
-rw-r--r--server/sonar-webserver-webapi/src/it/java/org/sonar/server/qualitygate/QualityGateCaycCheckerIT.java9
-rw-r--r--server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/QualityGateCaycChecker.java2
2 files changed, 10 insertions, 1 deletions
diff --git a/server/sonar-webserver-webapi/src/it/java/org/sonar/server/qualitygate/QualityGateCaycCheckerIT.java b/server/sonar-webserver-webapi/src/it/java/org/sonar/server/qualitygate/QualityGateCaycCheckerIT.java
index db9a52ecaf6..343e1854127 100644
--- a/server/sonar-webserver-webapi/src/it/java/org/sonar/server/qualitygate/QualityGateCaycCheckerIT.java
+++ b/server/sonar-webserver-webapi/src/it/java/org/sonar/server/qualitygate/QualityGateCaycCheckerIT.java
@@ -131,6 +131,15 @@ public class QualityGateCaycCheckerIT {
assertEquals(COMPLIANT, underTest.checkCaycCompliant(db.getSession(), qualityGateUuid));
}
+ @Test
+ public void checkCaycCompliant_whenDuplicatedCondition_doNotThrow() {
+ String qualityGateUuid = "abcd";
+ MetricDto metric = insertMetric(NEW_VIOLATIONS);
+ insertCondition(metric, qualityGateUuid, metric.getBestValue());
+ insertCondition(metric, qualityGateUuid, metric.getBestValue());
+ assertEquals(NON_COMPLIANT, underTest.checkCaycCompliant(db.getSession(), qualityGateUuid));
+ }
+
@DataProvider
public static Object[][] caycMetrics() {
return new Object[][]{
diff --git a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/QualityGateCaycChecker.java b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/QualityGateCaycChecker.java
index bc9e9fec350..ab9f4e21959 100644
--- a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/QualityGateCaycChecker.java
+++ b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/QualityGateCaycChecker.java
@@ -96,7 +96,7 @@ public class QualityGateCaycChecker {
public QualityGateCaycStatus checkCaycCompliant(Collection<QualityGateConditionDto> conditions, List<MetricDto> metrics) {
var conditionsByMetricId = conditions
.stream()
- .collect(Collectors.toMap(QualityGateConditionDto::getMetricUuid, Function.identity()));
+ .collect(Collectors.toMap(QualityGateConditionDto::getMetricUuid, Function.identity(), (existing, replacement) -> existing));
if (conditionsByMetricId.size() < CAYC_METRICS.size()) {
return NON_COMPLIANT;