diff options
author | Julien Lancelot <julien.lancelot@sonarsource.com> | 2017-04-18 11:14:15 +0200 |
---|---|---|
committer | Julien Lancelot <julien.lancelot@sonarsource.com> | 2017-04-20 11:11:05 +0200 |
commit | b007b2589ac52fad5a09bb53936aa9486fd1d8b5 (patch) | |
tree | 9eb100b87c412ddd34a7e72e59e779751883ae60 /it | |
parent | b75ef9230b1235a1cfc20e4dcf11101147c237e9 (diff) | |
download | sonarqube-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.java | 37 |
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; |