Skip to content

Commit

Permalink
Merge pull request #216 from t-8ch/all-done-statuses
Browse files Browse the repository at this point in the history
Accept all status that are in the "done" category as being done
  • Loading branch information
warden committed Mar 7, 2020
2 parents 7fa2b18 + 3dac1b8 commit 68a4e77
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 6 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ See [GitHub releases](https://github.com/jenkinsci/jira-plugin/releases)
### Unreleased
Release date: _March 2, 2020_
* Changed all references of JIRA to Jira per [Atlassian branding updates](https://community.atlassian.com/t5/Feedback-Forum-articles/A-new-look-for-Atlassian/ba-p/638077)
* JiraCreateIssueNotifier: regard all statuses in "done" category as finished

### 3.0.11
Release date: _Nov 21, 2019_
Expand Down
23 changes: 17 additions & 6 deletions src/main/java/hudson/plugins/jira/JiraCreateIssueNotifier.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package hudson.plugins.jira;

import com.atlassian.jira.rest.client.api.StatusCategory;
import com.atlassian.jira.rest.client.api.domain.Issue;
import com.atlassian.jira.rest.client.api.domain.IssueType;
import com.atlassian.jira.rest.client.api.domain.Priority;
Expand Down Expand Up @@ -334,9 +335,7 @@ private void currentBuildResultFailure(AbstractBuild<?, ?> build, BuildListener
Status status = getStatus(build, issueId);

// Issue Closed, need to open new one
if (status.getName().equalsIgnoreCase(finishedStatuses.Closed.toString()) ||
status.getName().equalsIgnoreCase(finishedStatuses.Resolved.toString()) ||
status.getName().equalsIgnoreCase(finishedStatuses.Done.toString())) {
if (isDone(status)) {

listener.getLogger().println("The previous build also failed but the issue is closed");
deleteFile(filename);
Expand Down Expand Up @@ -389,9 +388,7 @@ private void currentBuildResultSuccess(AbstractBuild<?, ?> build, BuildListener
Status status = getStatus(build, issueId);

//if issue is in closed status
if (status.getName().equalsIgnoreCase(finishedStatuses.Closed.toString()) ||
status.getName().equalsIgnoreCase(finishedStatuses.Resolved.toString()) ||
status.getName().equalsIgnoreCase(finishedStatuses.Done.toString())) {
if (isDone(status)) {
LOG.info(String.format("%s is closed", issueId));
deleteFile(filename);
} else {
Expand All @@ -411,6 +408,20 @@ private void currentBuildResultSuccess(AbstractBuild<?, ?> build, BuildListener
}
}

static boolean isDone(Status status) {
if (status.getName().equalsIgnoreCase(finishedStatuses.Closed.toString()) ||
status.getName().equalsIgnoreCase(finishedStatuses.Resolved.toString()) ||
status.getName().equalsIgnoreCase(finishedStatuses.Done.toString())) {
return true;
}

StatusCategory category = status.getStatusCategory();
if (category == null) {
return false;
}
return "done".equals(category.getKey());
}

private void progressWorkflowAction(AbstractBuild<?, ?> build, String issueId, Integer actionId) throws IOException {
JiraSession session = getJiraSession(build);
session.progressWorkflowAction(issueId, actionId);
Expand Down
12 changes: 12 additions & 0 deletions src/test/java/hudson/plugins/jira/JiraCreateIssueNotifierTest.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package hudson.plugins.jira;

import com.atlassian.jira.rest.client.api.StatusCategory;
import com.atlassian.jira.rest.client.api.domain.Component;
import com.atlassian.jira.rest.client.api.domain.Issue;
import com.atlassian.jira.rest.client.api.domain.Status;
Expand All @@ -23,6 +24,7 @@
import java.util.List;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.*;

Expand Down Expand Up @@ -192,4 +194,14 @@ public void performFailureSuccessIssueClosedWithComponents() throws Exception {
assertEquals(0, temporaryDirectory.list().length);
}

@Test
public void isDone() {
assertTrue(JiraCreateIssueNotifier.isDone(new Status(null, null, "Closed", null, null, null)));
assertTrue(JiraCreateIssueNotifier.isDone(new Status(null, null, "Done", null, null, null)));
assertTrue(JiraCreateIssueNotifier.isDone(new Status(null, null, "Resolved", null, null, null)));
assertTrue(JiraCreateIssueNotifier.isDone(new Status(null, null, "Abandoned", null, null,
new StatusCategory(null, "Done", null, "done", null))));
assertFalse(JiraCreateIssueNotifier.isDone(new Status(null, null, "Abandoned", null, null,
new StatusCategory(null, "ToDo", null, "todo", null))));
}
}

0 comments on commit 68a4e77

Please sign in to comment.