aboutsummaryrefslogtreecommitdiffstats
path: root/it
diff options
context:
space:
mode:
authorJulien Lancelot <julien.lancelot@sonarsource.com>2017-04-18 11:14:15 +0200
committerJulien Lancelot <julien.lancelot@sonarsource.com>2017-04-20 11:11:05 +0200
commitb007b2589ac52fad5a09bb53936aa9486fd1d8b5 (patch)
tree9eb100b87c412ddd34a7e72e59e779751883ae60 /it
parentb75ef9230b1235a1cfc20e4dcf11101147c237e9 (diff)
downloadsonarqube-b007b2589ac52fad5a09bb53936aa9486fd1d8b5.tar.gz
sonarqube-b007b2589ac52fad5a09bb53936aa9486fd1d8b5.zip
SONAR-8712 Do not fail to display QGates containing removed metrics
Diffstat (limited to 'it')
-rw-r--r--it/it-tests/src/test/java/it/qualityGate/QualityGateTest.java37
1 files changed, 37 insertions, 0 deletions
diff --git a/it/it-tests/src/test/java/it/qualityGate/QualityGateTest.java b/it/it-tests/src/test/java/it/qualityGate/QualityGateTest.java
index 72af801a9f4..e5675df4a4f 100644
--- a/it/it-tests/src/test/java/it/qualityGate/QualityGateTest.java
+++ b/it/it-tests/src/test/java/it/qualityGate/QualityGateTest.java
@@ -52,6 +52,7 @@ import org.sonarqube.ws.client.WsClient;
import org.sonarqube.ws.client.WsResponse;
import org.sonarqube.ws.client.qualitygate.ProjectStatusWsRequest;
+import static org.apache.commons.lang.RandomStringUtils.randomAlphabetic;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.groups.Tuple.tuple;
import static util.ItUtils.concat;
@@ -250,6 +251,28 @@ public class QualityGateTest {
}
}
+ @Test
+ public void does_not_fail_when_condition_is_on_removed_metric() throws IOException {
+ String customMetricKey = randomAlphabetic(10);
+ createCustomIntMetric(orchestrator, customMetricKey);
+ QualityGate simple = qgClient().create("OnCustomMetric");
+ qgClient().setDefault(simple.id());
+ qgClient().createCondition(NewCondition.create(simple.id()).metricKey(customMetricKey).operator("GT").warningThreshold("40"));
+ try {
+ deleteCustomMetric(orchestrator, customMetricKey);
+ String projectKey = newProjectKey();
+ BuildResult buildResult = executeAnalysis(projectKey);
+
+ verifyQGStatusInPostTask(buildResult, projectKey, TASK_STATUS_SUCCESS, QG_STATUS_OK);
+
+ assertThat(getGateStatusMeasure(projectKey).getValue()).isEqualTo("OK");
+ } finally {
+ deleteCustomMetric(orchestrator, customMetricKey);
+ qgClient().unsetDefault();
+ qgClient().destroy(simple.id());
+ }
+ }
+
private BuildResult executeAnalysis(String projectKey, String... keyValueProperties) {
return orchestrator.executeBuild(SonarScanner.create(
projectDir("qualitygate/xoo-sample"), concat(keyValueProperties, "sonar.projectKey", projectKey)));
@@ -310,6 +333,20 @@ public class QualityGateTest {
.collect(Collectors.toList());
}
+ private static void createCustomIntMetric(Orchestrator orchestrator, String metricKey) {
+ newAdminWsClient(orchestrator).wsConnector().call(new PostRequest("api/metrics/create")
+ .setParam("key", metricKey)
+ .setParam("name", metricKey)
+ .setParam("type", "INT"))
+ .failIfNotSuccessful();
+ }
+
+ private static void deleteCustomMetric(Orchestrator orchestrator, String metricKey) {
+ newAdminWsClient(orchestrator).wsConnector().call(new PostRequest("api/metrics/delete")
+ .setParam("keys", metricKey))
+ .failIfNotSuccessful();
+ }
+
static class QualityGateDetails {
private String level;