aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-core/src
diff options
context:
space:
mode:
authorJulien Lancelot <julien.lancelot@gmail.com>2013-06-07 10:27:00 +0200
committerJulien Lancelot <julien.lancelot@gmail.com>2013-06-07 10:27:00 +0200
commitbc33f4aee5e1c43e3a1784b97d464208c590943a (patch)
treeff0da01a00df7ff94cc07739b45adc2a33e3f7f1 /sonar-core/src
parent19170ca15132f97a5c8f9c32943cd2a7b6af074b (diff)
downloadsonarqube-bc33f4aee5e1c43e3a1784b97d464208c590943a.tar.gz
sonarqube-bc33f4aee5e1c43e3a1784b97d464208c590943a.zip
SONAR-3755 Closed issues should be reopened only if manual issues
Diffstat (limited to 'sonar-core/src')
-rw-r--r--sonar-core/src/main/java/org/sonar/core/issue/workflow/IssueWorkflow.java1
-rw-r--r--sonar-core/src/test/java/org/sonar/core/issue/workflow/IssueWorkflowTest.java25
2 files changed, 26 insertions, 0 deletions
diff --git a/sonar-core/src/main/java/org/sonar/core/issue/workflow/IssueWorkflow.java b/sonar-core/src/main/java/org/sonar/core/issue/workflow/IssueWorkflow.java
index acc539876da..c532611afea 100644
--- a/sonar-core/src/main/java/org/sonar/core/issue/workflow/IssueWorkflow.java
+++ b/sonar-core/src/main/java/org/sonar/core/issue/workflow/IssueWorkflow.java
@@ -78,6 +78,7 @@ public class IssueWorkflow implements BatchComponent, ServerComponent, Startable
.functions(new SetResolution(null))
.build())
.transition(Transition.builder(DefaultTransitions.REOPEN)
+ .conditions(new IsManual(true))
.from(Issue.STATUS_CLOSED).to(Issue.STATUS_REOPENED)
.functions(new SetResolution(null), new SetCloseDate(false))
.build())
diff --git a/sonar-core/src/test/java/org/sonar/core/issue/workflow/IssueWorkflowTest.java b/sonar-core/src/test/java/org/sonar/core/issue/workflow/IssueWorkflowTest.java
index 5d21f7767ef..da014a9c532 100644
--- a/sonar-core/src/test/java/org/sonar/core/issue/workflow/IssueWorkflowTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/issue/workflow/IssueWorkflowTest.java
@@ -105,6 +105,31 @@ public class IssueWorkflowTest {
}
@Test
+ public void should_list_no_out_transition_from_status_closed() throws Exception {
+ workflow.start();
+
+ DefaultIssue issue = new DefaultIssue().setStatus(Issue.STATUS_CLOSED);
+ List<Transition> transitions = workflow.outTransitions(issue);
+ assertThat(transitions).isEmpty();
+ }
+
+ @Test
+ public void should_list_out_transitions_from_status_closed_on_manual_issue() throws Exception {
+ workflow.start();
+
+ // Manual issue because of reporter
+ DefaultIssue issue = new DefaultIssue()
+ .setKey("ABCDE")
+ .setStatus(Issue.STATUS_CLOSED)
+ .setRuleKey(RuleKey.of("manual", "Performance"))
+ .setReporter("simon");
+
+ List<Transition> transitions = workflow.outTransitions(issue);
+ assertThat(transitions).hasSize(1);
+ assertThat(keys(transitions)).containsOnly("reopen");
+ }
+
+ @Test
public void should_fail_if_unknown_status_when_listing_transitions() throws Exception {
workflow.start();