Navigation Menu

Skip to content

Commit

Permalink
JENKINS-33054 support environment variables in fix version, label, fi…
Browse files Browse the repository at this point in the history
…eld, and single ticket strategy
  • Loading branch information
Dan Alvizu committed May 25, 2016
1 parent 866012f commit d4995e8
Show file tree
Hide file tree
Showing 8 changed files with 111 additions and 4 deletions.
Expand Up @@ -54,7 +54,8 @@ public void perform(List<JiraCommit> commits, AbstractBuild build, Launcher laun
{
try
{
getJiraClientSvc().addFixVersion(commit.getJiraTicket(), fixVersion);
String expandedFixVersion = build.getEnvironment(listener).expand(fixVersion);
getJiraClientSvc().addFixVersion(commit.getJiraTicket(), expandedFixVersion);
}
catch (Throwable t)
{
Expand Down
Expand Up @@ -58,7 +58,8 @@ public void perform(List<JiraCommit> jiraCommitList,
listener.getLogger().println("Label: " + labelName);
try
{
getJiraClientSvc().addLabelToTicket(jiraCommit.getJiraTicket(), labelName);
String expandedName = build.getEnvironment(listener).expand(labelName);
getJiraClientSvc().addLabelToTicket(jiraCommit.getJiraTicket(), expandedName);
}
catch (Throwable t)
{
Expand Down
Expand Up @@ -24,6 +24,7 @@
import org.jenkinsci.plugins.jiraext.domain.JiraCommit;
import org.kohsuke.stapler.DataBoundConstructor;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Logger;
Expand Down Expand Up @@ -53,7 +54,16 @@ public List<JiraCommit> getJiraCommits(AbstractBuild build,
BuildListener listener)
{
List<JiraCommit> jiraCommits = new ArrayList<>();
jiraCommits.add(new JiraCommit(issueKey, null));
String expandedIssueKey = issueKey;
try
{
expandedIssueKey = build.getEnvironment(listener).expand(issueKey);
}
catch (IOException|InterruptedException e)
{
e.printStackTrace(listener.getLogger());
}
jiraCommits.add(new JiraCommit(expandedIssueKey, null));
return jiraCommits;
}

Expand Down
Expand Up @@ -66,7 +66,8 @@ public void perform(List<JiraCommit> commits, AbstractBuild build, Launcher laun
{
try
{
getJiraClientSvc().updateStringField(commit.getJiraTicket(), fieldName, fieldValue);
String expandedValue = build.getEnvironment(listener).expand(fieldValue);
getJiraClientSvc().updateStringField(commit.getJiraTicket(), fieldName, expandedValue);
}
catch (Throwable t)
{
Expand Down
Expand Up @@ -87,6 +87,25 @@ public void testAddFixVersion()
verify(jiraClientSvc, times(1)).addFixVersion(eq("SSD-101"), eq("Beta Release"));
}

@Test
public void testExpandValues()
throws Exception
{
AddFixVersion addFixVersion = new AddFixVersion("Beta Release $FOO");
addFixVersion.setJiraClientSvc(jiraClientSvc);
AbstractBuild mockBuild = mock(AbstractBuild.class);
EnvVars envVars = new EnvVars();
envVars.put("FOO", "BAR");
when(mockBuild.getEnvironment(any(TaskListener.class))).thenReturn(envVars);
List<JiraCommit> jiraCommits = new ArrayList<>();
jiraCommits.add(new JiraCommit("SSD-101"));
jiraCommits.add(new JiraCommit("SSD-101"));

addFixVersion.perform(jiraCommits, mockBuild, mock(Launcher.class), new StreamBuildListener(System.out, Charset.defaultCharset()));
verify(jiraClientSvc, times(1)).addFixVersion(eq("SSD-101"), eq("Beta Release BAR"));

}

/**
* An exception updating a ticket should not impact other issues being updated
*/
Expand Down
18 changes: 18 additions & 0 deletions src/test/java/org/jenkinsci/plugins/jiraext/view/AddLabelTest.java
Expand Up @@ -88,6 +88,24 @@ public void testAddLabel()
verify(jiraClientSvc, times(1)).addLabelToTicket(eq("SSD-101"), eq("Test Label"));
}

@Test
public void testExpandValues()
throws Exception
{
AddLabel addLabel = new AddLabel("Test Label $FOO");
addLabel.setJiraClientSvc(jiraClientSvc);

AbstractBuild mockBuild = mock(AbstractBuild.class);
EnvVars envVars = new EnvVars();
envVars.put("FOO", "BAR");
when(mockBuild.getEnvironment(any(TaskListener.class))).thenReturn(envVars);
List<JiraCommit> jiraCommits = new ArrayList<>();
jiraCommits.add(new JiraCommit("SSD-101", MockChangeLogUtil.mockChangeLogSetEntry("Test Comment")));

addLabel.perform(jiraCommits, mockBuild, mock(Launcher.class), new StreamBuildListener(System.out, Charset.defaultCharset()));
verify(jiraClientSvc, times(1)).addLabelToTicket(eq("SSD-101"), eq("Test Label BAR"));
}

/**
* An exception adding the first label add should not disrupt the next label
*/
Expand Down
Expand Up @@ -18,14 +18,27 @@
**************************************************************************/
package org.jenkinsci.plugins.jiraext.view;

import hudson.EnvVars;
import hudson.model.AbstractBuild;
import hudson.model.BuildListener;
import hudson.model.FreeStyleProject;
import hudson.model.StreamBuildListener;
import org.jenkinsci.plugins.jiraext.Config;
import org.jenkinsci.plugins.jiraext.domain.JiraCommit;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.jvnet.hudson.test.JenkinsRule;

import java.io.IOException;
import java.nio.charset.Charset;
import java.util.Arrays;
import java.util.List;

import static org.junit.Assert.assertEquals;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

/**
* @author dalvizu
Expand Down Expand Up @@ -56,4 +69,31 @@ public void testSaveConfig()
jenkinsRule.assertEqualBeans(builder, after, "issueStrategy");
}

@Test
public void testExpansion()
throws Exception
{
AbstractBuild mockBuild = mock(AbstractBuild.class);
EnvVars envVars = new EnvVars();
envVars.put("FOO", "BAR");
when(mockBuild.getEnvironment(any(BuildListener.class))).thenReturn(envVars);
SingleTicketStrategy strategy = new SingleTicketStrategy("$FOO");
List<JiraCommit> commits = strategy.getJiraCommits(mockBuild, mock(BuildListener.class));
assertEquals(1, commits.size());
assertEquals("BAR", commits.get(0).getJiraTicket());
}

@Test
public void testErrorInExpansion()
throws Exception
{
AbstractBuild mockBuild = mock(AbstractBuild.class);
SingleTicketStrategy strategy = new SingleTicketStrategy("$FOO");
when(mockBuild.getEnvironment(any(BuildListener.class))).thenThrow(new IOException());
List<JiraCommit> commits = strategy.getJiraCommits(mockBuild,
new StreamBuildListener(System.out, Charset.defaultCharset()));
assertEquals(1, commits.size());
assertEquals("$FOO", commits.get(0).getJiraTicket());

}
}
Expand Up @@ -87,6 +87,23 @@ public void testUpdateField()
verify(jiraClientSvc, times(1)).updateStringField(eq("SSD-101"), eq("CustomField_123"), eq("Completed"));
}

@Test
public void testExpandValues()
throws Exception
{
UpdateField updateField = new UpdateField("CustomField_123", "Completed $FOO");
updateField.setJiraClientSvc(jiraClientSvc);
AbstractBuild mockBuild = mock(AbstractBuild.class);
EnvVars envVars = new EnvVars();
envVars.put("FOO", "BAR");
when(mockBuild.getEnvironment(any(TaskListener.class))).thenReturn(envVars);
List<JiraCommit> jiraCommits = new ArrayList<>();
jiraCommits.add(new JiraCommit("SSD-101", MockChangeLogUtil.mockChangeLogSetEntry("Test Comment")));

updateField.perform(jiraCommits, mockBuild, mock(Launcher.class), new StreamBuildListener(System.out, Charset.defaultCharset()));
verify(jiraClientSvc, times(1)).updateStringField(eq("SSD-101"), eq("CustomField_123"), eq("Completed BAR"));
}

/**
* An exception adding the first label add should not disrupt the next label
*/
Expand Down

0 comments on commit d4995e8

Please sign in to comment.