Skip to content

Commit c77b341

Browse files
committed
[JENKINS-45101] More argumentsToString implementations.
1 parent b5b30ec commit c77b341

14 files changed

Lines changed: 130 additions & 5 deletions

File tree

src/main/java/org/jenkinsci/plugins/workflow/steps/EnvStep.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,27 @@ private static final class ExpanderImpl extends EnvironmentExpander {
138138
return Collections.emptySet();
139139
}
140140

141+
@Override public String argumentsToString(Map<String, Object> namedArgs) {
142+
Object overrides = namedArgs.get("overrides");
143+
if (overrides instanceof List) {
144+
StringBuilder b = new StringBuilder();
145+
for (Object pair : (List) overrides) {
146+
if (pair instanceof String) {
147+
int idx = ((String) pair).indexOf('=');
148+
if (idx > 0) {
149+
if (b.length() > 0) {
150+
b.append(", ");
151+
}
152+
b.append(((String) pair).substring(0, idx));
153+
}
154+
}
155+
}
156+
return b.toString();
157+
} else {
158+
return null;
159+
}
160+
}
161+
141162
}
142163

143164
}

src/main/java/org/jenkinsci/plugins/workflow/steps/MailStep.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import hudson.Util;
2929
import hudson.model.TaskListener;
3030
import java.util.Collections;
31+
import java.util.Map;
3132
import java.util.Set;
3233
import jenkins.plugins.mailer.tasks.MimeMessageBuilder;
3334

@@ -114,6 +115,11 @@ public static final class DescriptorImpl extends StepDescriptor {
114115
@Override public Set<? extends Class<?>> getRequiredContext() {
115116
return Collections.singleton(TaskListener.class);
116117
}
118+
119+
@Override public String argumentsToString(Map<String, Object> namedArgs) {
120+
Object subject = namedArgs.get("subject");
121+
return subject instanceof String ? (String) subject : null;
122+
}
117123
}
118124

119125
/**

src/main/java/org/jenkinsci/plugins/workflow/steps/PwdStep.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import hudson.FilePath;
3030
import hudson.slaves.WorkspaceList;
3131
import java.util.Collections;
32+
import java.util.Map;
3233
import java.util.Set;
3334
import org.kohsuke.stapler.DataBoundConstructor;
3435
import org.kohsuke.stapler.DataBoundSetter;
@@ -76,6 +77,10 @@ public boolean isTmp() {
7677
return Collections.singleton(FilePath.class);
7778
}
7879

80+
@Override public String argumentsToString(Map<String, Object> namedArgs) {
81+
return null; // "true" is not a reasonable description
82+
}
83+
7984
}
8085

8186
// TODO use 1.652 use WorkspaceList.tempDir

src/main/java/org/jenkinsci/plugins/workflow/steps/SleepStep.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,5 +151,7 @@ public ListBoxModel doFillUnitItems() {
151151
return Collections.singleton(TaskListener.class);
152152
}
153153

154+
// TODO argumentsToString should perhaps return "3m" etc.
155+
154156
}
155157
}

src/main/java/org/jenkinsci/plugins/workflow/steps/TimeoutStep.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,8 @@ public Set<? extends Class<?>> getRequiredContext() {
8181
return Collections.singleton(TaskListener.class);
8282
}
8383

84+
// TODO argumentsToString as for SleepStep
85+
8486
}
8587

8688
private static final long serialVersionUID = 1L;

src/main/java/org/jenkinsci/plugins/workflow/steps/ToolStep.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import hudson.tools.ToolDescriptor;
3737
import hudson.tools.ToolInstallation;
3838
import hudson.util.ListBoxModel;
39+
import java.util.Map;
3940

4041
import javax.annotation.CheckForNull;
4142

@@ -122,6 +123,11 @@ public ListBoxModel doFillNameItems(@QueryParameter String type) {
122123
return ImmutableSet.of(TaskListener.class, EnvVars.class, Node.class);
123124
}
124125

126+
@Override public String argumentsToString(Map<String, Object> namedArgs) {
127+
Object name = namedArgs.get("name");
128+
return name instanceof String ? (String) name : null;
129+
}
130+
125131
}
126132

127133
public static final class Execution extends SynchronousNonBlockingStepExecution<String> {

src/main/java/org/jenkinsci/plugins/workflow/steps/WriteFileStep.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import hudson.FilePath;
2929
import hudson.Util;
3030
import java.util.Collections;
31+
import java.util.Map;
3132
import java.util.Set;
3233

3334

@@ -79,6 +80,11 @@ public String getEncoding() {
7980
return Collections.singleton(FilePath.class);
8081
}
8182

83+
@Override public String argumentsToString(Map<String, Object> namedArgs) {
84+
Object file = namedArgs.get("file");
85+
return file instanceof String ? (String) file : null;
86+
}
87+
8288
}
8389

8490
public static final class Execution extends SynchronousNonBlockingStepExecution<Void> {

src/main/java/org/jenkinsci/plugins/workflow/support/steps/stash/StashStep.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import hudson.Util;
3131
import hudson.model.Run;
3232
import hudson.model.TaskListener;
33+
import java.util.Map;
3334
import java.util.Set;
3435
import jenkins.model.Jenkins;
3536
import org.jenkinsci.plugins.workflow.flow.StashManager;
@@ -130,6 +131,11 @@ public static class Execution extends SynchronousNonBlockingStepExecution<Void>
130131
return ImmutableSet.of(Run.class, FilePath.class, TaskListener.class);
131132
}
132133

134+
@Override public String argumentsToString(Map<String, Object> namedArgs) {
135+
Object name = namedArgs.get("name");
136+
return name instanceof String ? (String) name : null;
137+
}
138+
133139
}
134140

135141
}

src/test/java/org/jenkinsci/plugins/workflow/steps/EnvStepTest.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,24 @@
2424

2525
package org.jenkinsci.plugins.workflow.steps;
2626

27+
import com.google.common.base.Predicate;
28+
import com.google.common.base.Predicates;
2729
import hudson.Functions;
2830
import java.util.Arrays;
2931
import java.util.Collections;
3032
import java.util.List;
33+
import org.hamcrest.Matchers;
34+
import org.jenkinsci.plugins.workflow.actions.ArgumentsAction;
3135
import org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition;
36+
import org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode;
37+
import org.jenkinsci.plugins.workflow.graph.FlowNode;
38+
import org.jenkinsci.plugins.workflow.graphanalysis.DepthFirstScanner;
39+
import org.jenkinsci.plugins.workflow.graphanalysis.NodeStepTypePredicate;
3240
import org.jenkinsci.plugins.workflow.job.WorkflowJob;
3341
import org.jenkinsci.plugins.workflow.job.WorkflowRun;
3442
import org.jenkinsci.plugins.workflow.test.steps.SemaphoreStep;
3543
import static org.junit.Assert.assertEquals;
44+
import static org.junit.Assert.assertThat;
3645
import org.junit.ClassRule;
3746
import org.junit.Rule;
3847
import org.junit.Test;
@@ -64,6 +73,13 @@ public class EnvStepTest {
6473
story.j.assertLogContains(Functions.isWindows() ? "inside CUSTOM=override NOVEL=val BUILD_TAG=custom NULLED= FOOPATH=C:\\ball;C:\\foos;" : "inside CUSTOM=override NOVEL=val BUILD_TAG=custom NULLED= FOOPATH=/opt/ball:/opt/foos:", b);
6574
story.j.assertLogContains("groovy NULLED=null", b);
6675
story.j.assertLogContains("outside CUSTOM=initial NOVEL= NULLED=outside", b);
76+
List<FlowNode> coreStepNodes = new DepthFirstScanner().filteredNodes(b.getExecution(), Predicates.and(new NodeStepTypePredicate("withEnv"), new Predicate<FlowNode>() {
77+
@Override public boolean apply(FlowNode n) {
78+
return n instanceof StepStartNode && !((StepStartNode) n).isBody();
79+
}
80+
}));
81+
assertThat(coreStepNodes, Matchers.hasSize(1));
82+
assertEquals("CUSTOM, NOVEL, BUILD_TAG, NULLED, FOOPATH+BALL", ArgumentsAction.getStepArgumentsAsString(coreStepNodes.get(0)));
6783
}
6884
});
6985
}

src/test/java/org/jenkinsci/plugins/workflow/steps/MailStepTest.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,20 @@
2424
package org.jenkinsci.plugins.workflow.steps;
2525

2626
import hudson.model.Result;
27+
import java.util.List;
2728
import javax.mail.Message;
2829
import javax.mail.internet.MimeMultipart;
30+
import org.hamcrest.Matchers;
31+
import org.jenkinsci.plugins.workflow.actions.ArgumentsAction;
2932
import org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition;
33+
import org.jenkinsci.plugins.workflow.graph.FlowNode;
34+
import org.jenkinsci.plugins.workflow.graphanalysis.DepthFirstScanner;
35+
import org.jenkinsci.plugins.workflow.graphanalysis.NodeStepTypePredicate;
3036
import org.jenkinsci.plugins.workflow.job.WorkflowJob;
3137
import org.jenkinsci.plugins.workflow.job.WorkflowRun;
3238
import org.junit.Assert;
39+
import static org.junit.Assert.assertEquals;
40+
import static org.junit.Assert.assertThat;
3341
import org.junit.Rule;
3442
import org.junit.Test;
3543
import org.jvnet.hudson.test.JenkinsRule;
@@ -80,7 +88,10 @@ public void test_send() throws Exception {
8088
WorkflowJob job = r.jenkins.createProject(WorkflowJob.class, "workflow");
8189
job.setDefinition(new CpsFlowDefinition("mail(to: 'tom.abcd@jenkins.org', subject: 'Hello friend', body: 'Missing you!');", true));
8290

83-
r.assertBuildStatusSuccess(job.scheduleBuild2(0));
91+
WorkflowRun b = r.assertBuildStatusSuccess(job.scheduleBuild2(0));
92+
List<FlowNode> coreStepNodes = new DepthFirstScanner().filteredNodes(b.getExecution(), new NodeStepTypePredicate("mail"));
93+
assertThat(coreStepNodes, Matchers.hasSize(1));
94+
assertEquals("Hello friend", ArgumentsAction.getStepArgumentsAsString(coreStepNodes.get(0)));
8495

8596
Mailbox mailbox = Mailbox.get("tom.abcd@jenkins.org");
8697
Assert.assertEquals(1, mailbox.getNewMessageCount());

0 commit comments

Comments
 (0)