]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-6717 Add IT to check that issue attribute is kept on next analysis
authorJulien Lancelot <julien.lancelot@sonarsource.com>
Fri, 9 Oct 2015 15:43:56 +0000 (17:43 +0200)
committerJulien Lancelot <julien.lancelot@sonarsource.com>
Fri, 9 Oct 2015 15:44:26 +0000 (17:44 +0200)
it/it-plugins/issue-action-plugin/src/main/java/ActionDefinition.java
it/it-tests/src/test/java/issue/suite/IssueActionTest.java

index 84f5e6c5a6acf12c1554c3136400367801f9d347..1af4f7ef1520ca85f7f29cd6738121828b371155 100644 (file)
@@ -22,10 +22,14 @@ import org.sonar.api.ServerExtension;
 import org.sonar.api.issue.Issue;
 import org.sonar.api.issue.action.Actions;
 import org.sonar.api.issue.action.Function;
+import org.sonar.api.issue.condition.HasIssuePropertyCondition;
 import org.sonar.api.issue.condition.HasResolution;
+import org.sonar.api.issue.condition.NotCondition;
 
 public class ActionDefinition implements ServerExtension {
 
+  public static final String FAKE_PROPERTY = "fake";
+
   private final Actions actions;
 
   public ActionDefinition(Actions actions) {
@@ -34,11 +38,14 @@ public class ActionDefinition implements ServerExtension {
 
   public void start() {
     actions.add("fake")
-      .setConditions(new HasResolution(Issue.RESOLUTION_FIXED))
+      .setConditions(
+        new HasResolution(Issue.RESOLUTION_FIXED),
+        new NotCondition(new HasIssuePropertyCondition(FAKE_PROPERTY))
+      )
       .setFunctions(new Function() {
         @Override
         public void execute(Context context) {
-          context.setAttribute("fake", "fake action");
+          context.setAttribute(FAKE_PROPERTY, "fake action");
           context.addComment("New Comment from fake action");
         }
       });
index ab23ce589fee8f81b14a23312ff0ea3ae6aadf63..c6d1b75e982e914a02e39dddebd0e4ce35bfda74 100644 (file)
@@ -252,6 +252,25 @@ public class IssueActionTest {
 
     assertThat(reloaded.comments()).hasSize(1);
     assertThat(reloaded.comments().get(0).htmlText()).isEqualTo("New Comment from fake action");
+
+    // The action is no more available when already executed (because an issue attribute is used to check if the action is available or not)
+    assertThat(adminIssueClient().actions(issue.key())).doesNotContain("fake");
+  }
+
+  /**
+   * SONAR-4315
+   */
+  @Test
+  public void issue_attribute_are_kept_on_new_analysis() {
+    // The condition on the action defined by the plugin is that the status must be resolved
+    adminIssueClient().doTransition(issue.key(), "resolve");
+    adminIssueClient().doAction(issue.key(), "fake");
+    assertThat(adminIssueClient().actions(issue.key())).doesNotContain("fake");
+
+    orchestrator.executeBuild(scan);
+
+    // Fake action is no more available if the issue attribute is still there
+    assertThat(adminIssueClient().actions(issue.key())).doesNotContain("fake");
   }
 
 }