Skip to content

Commit 752e819

Browse files
committed
Fixing some Windows test failures.
1 parent 10f920f commit 752e819

File tree

2 files changed

+16
-14
lines changed

2 files changed

+16
-14
lines changed

src/test/java/org/jenkinsci/plugins/workflow/EnvWorkflowTest.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -109,9 +109,9 @@ public class EnvWorkflowTest {
109109
p.setDefinition(new CpsFlowDefinition("node('remote') {echo(/running in ${env.WORKSPACE}/)}", true));
110110
WorkflowRun b2 = r.assertBuildStatusSuccess(p.scheduleBuild2(0));
111111
r.assertLogContains("running in " + remote.getWorkspaceFor(p), b2);
112-
p.setDefinition(new CpsFlowDefinition("node('remote') {ws('workspace/foo') {echo(/running in ${env.WORKSPACE}, really ?/)}}", true)); // JENKINS-41446
112+
p.setDefinition(new CpsFlowDefinition("node('remote') {ws('workspace/foo') {echo(/running in ${env.WORKSPACE}/)}}", true)); // JENKINS-41446
113113
WorkflowRun b3 = r.assertBuildStatusSuccess(p.scheduleBuild2(0));
114-
r.assertLogContains("/workspace/foo, really ?" , b3); // '/workspace/foo' is in the log, testing with ', really' to ensure we catch the environment variable
114+
r.assertLogContains("running in " + remote.getRootPath().child("workspace/foo"), b3);
115115
}
116116

117117
}

src/test/java/org/jenkinsci/plugins/workflow/steps/durable_task/ShellStepTest.java

+14-12
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import hudson.model.Result;
1111
import hudson.slaves.DumbSlave;
1212
import hudson.slaves.EnvironmentVariablesNodeProperty;
13+
import hudson.tasks.BatchFile;
1314
import hudson.tasks.Shell;
1415
import java.io.File;
1516
import java.io.Serializable;
@@ -26,7 +27,7 @@
2627
import org.jenkinsci.plugins.workflow.steps.StepConfigTester;
2728
import org.jenkinsci.plugins.workflow.support.visualization.table.FlowGraphTable;
2829
import org.jenkinsci.plugins.workflow.support.visualization.table.FlowGraphTable.Row;
29-
import org.junit.Assert;
30+
import static org.junit.Assert.*;
3031
import org.junit.Assume;
3132
import org.junit.ClassRule;
3233
import org.junit.Rule;
@@ -37,7 +38,7 @@
3738
import org.jvnet.hudson.test.TestExtension;
3839
import org.kohsuke.stapler.DataBoundConstructor;
3940

40-
public class ShellStepTest extends Assert {
41+
public class ShellStepTest {
4142

4243
@ClassRule
4344
public static BuildWatcher buildWatcher = new BuildWatcher();
@@ -116,17 +117,17 @@ public boolean apply(File tmp) {
116117
DumbSlave slave = j.createSlave("slave", null, null);
117118
FreeStyleProject f = j.createFreeStyleProject("f"); // the control
118119
f.setAssignedNode(slave);
119-
f.getBuildersList().add(new Shell("echo PATH=$PATH"));
120+
f.getBuildersList().add(Functions.isWindows() ? new BatchFile("echo Path=%Path%") : new Shell("echo PATH=$PATH"));
120121
WorkflowJob p = j.jenkins.createProject(WorkflowJob.class, "p");
121-
p.setDefinition(new CpsFlowDefinition("node('slave') {sh 'echo PATH=$PATH'}", true));
122+
p.setDefinition(new CpsFlowDefinition("node('slave') {isUnix() ? sh('echo PATH=$PATH') : bat('echo Path=%Path%')}", true));
122123
// First check: syntax recommended in /help/system-config/nodeEnvironmentVariables.html.
123-
slave.getNodeProperties().add(new EnvironmentVariablesNodeProperty(new EnvironmentVariablesNodeProperty.Entry("PATH+ACME", "/opt/acme/bin")));
124-
j.assertLogContains(":/opt/acme/bin:/", j.buildAndAssertSuccess(f)); // JRE also gets prepended
125-
j.assertLogContains("PATH=/opt/acme/bin:/", j.buildAndAssertSuccess(p));
124+
slave.getNodeProperties().add(new EnvironmentVariablesNodeProperty(new EnvironmentVariablesNodeProperty.Entry("PATH+ACME", Functions.isWindows() ? "C:\\acme\\bin" : "/opt/acme/bin")));
125+
j.assertLogContains(Functions.isWindows() ? ";C:\\acme\\bin;" : ":/opt/acme/bin:/", j.buildAndAssertSuccess(f)); // JRE also gets prepended
126+
j.assertLogContains(Functions.isWindows() ? "Path=C:\\acme\\bin;" : "PATH=/opt/acme/bin:/", j.buildAndAssertSuccess(p));
126127
// Second check: recursive expansion.
127-
slave.getNodeProperties().replace(new EnvironmentVariablesNodeProperty(new EnvironmentVariablesNodeProperty.Entry("PATH", "/opt/acme/bin:$PATH")));
128-
j.assertLogContains(":/opt/acme/bin:/", j.buildAndAssertSuccess(f));
129-
j.assertLogContains("PATH=/opt/acme/bin:/", j.buildAndAssertSuccess(p));
128+
slave.getNodeProperties().replace(new EnvironmentVariablesNodeProperty(new EnvironmentVariablesNodeProperty.Entry("PATH", Functions.isWindows() ? "C:\\acme\\bin;$PATH" : "/opt/acme/bin:$PATH")));
129+
j.assertLogContains(Functions.isWindows() ? ";C:\\acme\\bin;" : ":/opt/acme/bin:/", j.buildAndAssertSuccess(f));
130+
j.assertLogContains(Functions.isWindows() ? "Path=C:\\acme\\bin;" : "PATH=/opt/acme/bin:/", j.buildAndAssertSuccess(p));
130131
}
131132

132133
@Test public void launcherDecorator() throws Exception {
@@ -177,7 +178,7 @@ public DescriptorImpl() {
177178
@Issue("JENKINS-40734")
178179
@Test public void envWithShellChar() throws Exception {
179180
WorkflowJob p = j.jenkins.createProject(WorkflowJob.class, "p");
180-
p.setDefinition(new CpsFlowDefinition("node {withEnv(['MONEY=big$$money']) {sh 'echo \"MONEY=$MONEY\"'}}", true));
181+
p.setDefinition(new CpsFlowDefinition("node {withEnv(['MONEY=big$$money']) {isUnix() ? sh('echo \"MONEY=$MONEY\"') : bat('echo \"MONEY=%MONEY%\"')}}", true));
181182
j.assertLogContains("MONEY=big$$money", j.buildAndAssertSuccess(p));
182183
}
183184

@@ -208,6 +209,7 @@ public DescriptorImpl() {
208209

209210
@Issue("JENKINS-26133")
210211
@Test public void returnStdout() throws Exception {
212+
Assume.assumeTrue("TODO Windows equivalent TBD", new File("/usr/bin/tr").canExecute());
211213
WorkflowJob p = j.jenkins.createProject(WorkflowJob.class, "p");
212214
p.setDefinition(new CpsFlowDefinition("def msg; node {msg = sh(script: 'echo hello world | tr [a-z] [A-Z]', returnStdout: true).trim()}; echo \"it said ${msg}\""));
213215
j.assertLogContains("it said HELLO WORLD", j.assertBuildStatusSuccess(p.scheduleBuild2(0)));
@@ -218,7 +220,7 @@ public DescriptorImpl() {
218220
@Issue("JENKINS-26133")
219221
@Test public void returnStatus() throws Exception {
220222
WorkflowJob p = j.jenkins.createProject(WorkflowJob.class, "p");
221-
p.setDefinition(new CpsFlowDefinition("node {echo \"truth is ${sh script: 'true', returnStatus: true} but falsity is ${sh script: 'false', returnStatus: true}\"}"));
223+
p.setDefinition(new CpsFlowDefinition("node {echo \"truth is ${isUnix() ? sh(script: 'true', returnStatus: true) : bat(script: 'echo', returnStatus: true)} but falsity is ${isUnix() ? sh(script: 'false', returnStatus: true) : bat(script: 'type nonexistent' , returnStatus: true)}\"}", true));
222224
j.assertLogContains("truth is 0 but falsity is 1", j.assertBuildStatusSuccess(p.scheduleBuild2(0)));
223225
}
224226

0 commit comments

Comments
 (0)