Skip to content

Commit

Permalink
Fix JENKINS-27542
Browse files Browse the repository at this point in the history
Add UPSTREAM_RUN_NAME macro that will have the display name for the upstream job.
  • Loading branch information
slide committed Oct 25, 2015
1 parent 990576e commit c2fa8e1
Show file tree
Hide file tree
Showing 3 changed files with 90 additions and 15 deletions.
@@ -0,0 +1,40 @@
package org.jenkinsci.plugins.tokenmacro.impl;

import hudson.model.AbstractBuild;
import hudson.model.Cause;
import hudson.model.CauseAction;
import hudson.model.TaskListener;
import org.jenkinsci.plugins.tokenmacro.DataBoundTokenMacro;
import org.jenkinsci.plugins.tokenmacro.MacroEvaluationException;

import java.io.IOException;

/**
* Created by acearl on 10/22/2015.
*/
public class UpstreamRunNameMacro extends DataBoundTokenMacro {

public static final String MACRO_NAME = "UPSTREAM_RUN_NAME";

@Override
public boolean acceptsMacroName(String macroName) {
return macroName.equals("UPSTREAM_RUN_NAME");
}

@Override
public String evaluate(AbstractBuild<?, ?> context, TaskListener listener, String macroName) throws MacroEvaluationException, IOException, InterruptedException {
CauseAction action = context.getAction(CauseAction.class);
if(action != null) {
for(Cause c : action.getCauses()) {
if(c instanceof Cause.UpstreamCause) {
Cause.UpstreamCause u = (Cause.UpstreamCause)c;
if(u.getUpstreamRun() != null) {
return u.getUpstreamRun().getDisplayName();
}
}
}
}

return "Unknown";
}
}
15 changes: 0 additions & 15 deletions src/test/java/org/jenkinsci/plugins/tokenmacro/TokenMacroTest.java
Expand Up @@ -160,9 +160,6 @@ public boolean acceptsMacroName(String macroName) {
return macroName.equals(MACRO_NAME);
}

@Override
public String getMacroName() { return MACRO_NAME; }

@Override
public String evaluate(AbstractBuild<?,?> context, TaskListener listener, String macroName, Map<String,String> arguments, ListMultimap<String, String> argumentMultimap) throws MacroEvaluationException, IOException, InterruptedException {
return "TEST_PRIVATE";
Expand All @@ -177,9 +174,6 @@ public boolean acceptsMacroName(String macroName) {
return macroName.equals(MACRO_NAME);
}

@Override
public String getMacroName() { return MACRO_NAME; }

@Override
public String evaluate(AbstractBuild<?,?> context, TaskListener listener, String macroName, Map<String,String> arguments, ListMultimap<String, String> argumentMultimap) throws MacroEvaluationException, IOException, InterruptedException {
return "TEST2_PRIVATE";
Expand All @@ -195,9 +189,6 @@ public boolean acceptsMacroName(String macroName) {
return macroName.equals(MACRO_NAME);
}

@Override
public String getMacroName() { return MACRO_NAME; }

@Override
public String evaluate(AbstractBuild<?, ?> context, TaskListener listener, String macroName, Map<String, String> arguments, ListMultimap<String, String> argumentMultimap) throws MacroEvaluationException, IOException, InterruptedException {
return argumentMultimap.toString();
Expand All @@ -211,9 +202,6 @@ public static class NestedTestMacro extends TokenMacro {
@Override
public boolean acceptsMacroName(String macroName) { return macroName.equals(MACRO_NAME); }

@Override
public String getMacroName() { return MACRO_NAME; }

@Override
public String evaluate(AbstractBuild<?, ?> context, TaskListener listener, String macroName, Map<String, String> arguments, ListMultimap<String, String> argumentMultimap) throws MacroEvaluationException, IOException, InterruptedException {
return "${TEST,abc=\"def\",abc=\"ghi\",jkl=true}";
Expand All @@ -234,9 +222,6 @@ public boolean acceptsMacroName(String macroName) {
return macroName.equals(MACRO_NAME);
}

@Override
public String getMacroName() { return MACRO_NAME; }

@Override
public String evaluate(AbstractBuild<?, ?> context, TaskListener listener, String macroName, Map<String, String> arguments, ListMultimap<String, String> argumentMultimap) throws MacroEvaluationException, IOException, InterruptedException {
return argumentMultimap.toString();
Expand Down
@@ -0,0 +1,50 @@
package org.jenkinsci.plugins.tokenmacro.impl;

import hudson.model.Cause;
import hudson.model.FreeStyleBuild;
import hudson.model.FreeStyleProject;
import hudson.model.TaskListener;
import hudson.util.StreamTaskListener;
import org.junit.Rule;
import org.junit.Test;
import org.jvnet.hudson.test.Issue;
import org.jvnet.hudson.test.JenkinsRule;

import static org.junit.Assert.assertEquals;

/**
* Created by acearl on 10/23/2015.
*/
public class UpstreamRunNameMacroTest {
@Rule
public JenkinsRule j = new JenkinsRule();

@Test
@Issue("JENKINS-27542")
public void testNoUpstreamJob() throws Exception {
FreeStyleProject project = j.createFreeStyleProject();
TaskListener listener = StreamTaskListener.fromStdout();
FreeStyleBuild build = project.scheduleBuild2(0).get();

UpstreamRunNameMacro content = new UpstreamRunNameMacro();
assertEquals("Unknown", content.evaluate(build, listener, UpstreamRunNameMacro.MACRO_NAME));
}

@Test
@Issue("JENKINS-27542")
public void testUpstreamJob() throws Exception {
FreeStyleProject upstream = j.createFreeStyleProject("FOO");
TaskListener listener = StreamTaskListener.fromStdout();

FreeStyleProject project = j.createFreeStyleProject("BAR");

FreeStyleBuild upstreamBuild = upstream.scheduleBuild2(0).get();
upstreamBuild.setDisplayName("FOO");
Cause.UpstreamCause cause = new Cause.UpstreamCause(upstreamBuild);

FreeStyleBuild build = project.scheduleBuild2(0, cause).get();

UpstreamRunNameMacro content = new UpstreamRunNameMacro();
assertEquals("FOO", content.evaluate(build, listener, UpstreamRunNameMacro.MACRO_NAME));
}
}

0 comments on commit c2fa8e1

Please sign in to comment.