diff options
author | Viktor Vorona <viktor.vorona@sonarsource.com> | 2025-03-07 17:04:17 +0100 |
---|---|---|
committer | sonartech <sonartech@sonarsource.com> | 2025-03-12 20:03:12 +0000 |
commit | 06353f7cdc6d3626fcc9759609a06cd64c3b2f97 (patch) | |
tree | 9a39ae0ccf2e31111bfd4492e1bc86a445b45697 | |
parent | 51d9e661fe661be0cbc81d6768068daabc09f2cd (diff) | |
download | sonarqube-06353f7cdc6d3626fcc9759609a06cd64c3b2f97.tar.gz sonarqube-06353f7cdc6d3626fcc9759609a06cd64c3b2f97.zip |
SONAR-20263 Do not fail GET quality-gates on condition duplicates
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; |