Skip to content

Commit 8179285

Browse files
Merge pull request #35 from imonteroperez/resolve-branches
Bugfix autoresolve test reference on different stage name
2 parents 6b2e861 + 3241387 commit 8179285

File tree

3 files changed

+48
-20
lines changed

3 files changed

+48
-20
lines changed

src/main/java/org/jenkinsci/plugins/JiraTestResultReporter/JiraTestAction.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -100,11 +100,11 @@ public JiraTestAction(JiraTestData testData, CaseResult test) {
100100

101101
this.testData = testData;
102102
this.test = test;
103-
issueKey = TestToIssueMapping.getInstance().getTestIssueKey(job, test.getId());
104-
if (issueKey != null) {
103+
for (String key: JiraUtils.searchIssueKeys(job, testData.getEnvVars(), test)) {
104+
issueKey = key;
105105
IssueRestClient issueRestClient = JiraUtils.getJiraDescriptor().getRestClient().getIssueClient();
106106
try {
107-
Issue issue = issueRestClient.getIssue(issueKey).claim();
107+
Issue issue = issueRestClient.getIssue(key).claim();
108108
issueStatus = issue.getStatus().getName();
109109
issueSummary = issue.getSummary();
110110
JiraTestDataPublisher.JiraTestDataPublisherDescriptor jiraDescriptor = JiraUtils.getJiraDescriptor();

src/main/java/org/jenkinsci/plugins/JiraTestResultReporter/JiraTestDataPublisher.java

+16-17
Original file line numberDiff line numberDiff line change
@@ -237,26 +237,25 @@ private boolean resolveIssues(TaskListener listener, Job project, Job job,
237237
boolean solved = false;
238238
try {
239239
for(CaseResult test : testCaseResults) {
240-
if(test.isPassed() && test.getPreviousResult() != null && test.getPreviousResult().isFailed()
241-
&& TestToIssueMapping.getInstance().getTestIssueKey(job, test.getId()) != null) {
240+
if(test.isPassed() && test.getPreviousResult() != null && test.getPreviousResult().isFailed()) {
242241
synchronized (test.getId()) {
243-
String issueKey = TestToIssueMapping.getInstance().getTestIssueKey(job, test.getId());
244-
IssueRestClient issueRestClient = getDescriptor().getRestClient().getIssueClient();
245-
Issue issue = issueRestClient.getIssue(issueKey).claim();
246-
boolean transitionExecuted = false;
247-
for (Transition transition : issueRestClient.getTransitions(issue).claim()) {
248-
if (transition.getName().toLowerCase().contains("resolve")) {
249-
issueRestClient.transition(issue, new TransitionInput(transition.getId()));
250-
transitionExecuted = true;
251-
solved = true;
252-
break;
242+
for (String issueKey: JiraUtils.searchIssueKeys(job, envVars, test)) {
243+
IssueRestClient issueRestClient = getDescriptor().getRestClient().getIssueClient();
244+
Issue issue = issueRestClient.getIssue(issueKey).claim();
245+
boolean transitionExecuted = false;
246+
for (Transition transition : issueRestClient.getTransitions(issue).claim()) {
247+
if (transition.getName().toLowerCase().contains("resolve")) {
248+
issueRestClient.transition(issue, new TransitionInput(transition.getId()));
249+
transitionExecuted = true;
250+
solved = true;
251+
break;
252+
}
253+
}
254+
255+
if (!transitionExecuted) {
256+
listener.getLogger().println("Could not find transition to resolve issue " + issueKey);
253257
}
254258
}
255-
256-
if (!transitionExecuted) {
257-
listener.getLogger().println("Could not find transition to resolve issue " + issueKey);
258-
}
259-
260259
}
261260
}
262261
}

src/main/java/org/jenkinsci/plugins/JiraTestResultReporter/JiraUtils.java

+29
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,35 @@ public static String createIssue(Job job, Job project, EnvVars envVars, CaseResu
135135
}
136136
}
137137

138+
/**
139+
* Given a test case result, it searchs for all the issue keys related with it
140+
* from the local issue map or from the Jira server
141+
* @param job
142+
* @param envVars
143+
* @param test
144+
* @return related issue keys from issue map or from Jira server
145+
* @throws RestClientException
146+
*/
147+
public static Set<String> searchIssueKeys(Job job, EnvVars envVars, CaseResult test) throws RestClientException {
148+
synchronized (test.getId()) {
149+
Set<String> issueKeys = new HashSet<>();
150+
String issueKey = TestToIssueMapping.getInstance().getTestIssueKey(job, test.getId());
151+
if (StringUtils.isNotBlank(issueKey)) {
152+
issueKeys.add(issueKey);
153+
return issueKeys;
154+
}
155+
156+
IssueInput issueInput = JiraUtils.createIssueInput(job, test, envVars);
157+
SearchResult searchResult = JiraUtils.findIssues(job, test, envVars, issueInput);
158+
if (searchResult != null && searchResult.getTotal() > 0) {
159+
for (Issue issue: searchResult.getIssues()) {
160+
issueKeys.add(issue.getKey());
161+
}
162+
}
163+
return issueKeys;
164+
}
165+
}
166+
138167
private static IssueInput createIssueInput(Job project, TestResult test, EnvVars envVars) {
139168
final IssueInputBuilder newIssueBuilder = new IssueInputBuilder(
140169
JobConfigMapping.getInstance().getProjectKey(project),

0 commit comments

Comments
 (0)