Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[FIXED JENKINS-18416] Use the build's node file separator to build
CLEARCASE_VIEWPATH instead of the master's file separator.
  • Loading branch information
Vlatombe committed Feb 7, 2014
1 parent 7ef1e07 commit cf9e0b6
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 7 deletions.
13 changes: 11 additions & 2 deletions src/main/java/hudson/plugins/clearcase/AbstractClearCaseScm.java
Expand Up @@ -291,19 +291,28 @@ public void buildEnvVars(AbstractBuild<?, ?> build, Map<String, String> env) {
if (normalizedViewName != null) {
env.put(CLEARCASE_VIEWTAG_ENVSTR, normalizedViewName);
}
boolean isUnix = isRunningOnUnix(build);
if (normalizedViewPath != null) {
env.put(CLEARCASE_VIEWNAME_ENVSTR, normalizedViewPath);
if (isUseDynamicView()) {
env.put(CLEARCASE_VIEWPATH_ENVSTR, viewDrive + File.separator + normalizedViewPath);
env.put(CLEARCASE_VIEWPATH_ENVSTR, viewDrive + PathUtil.fileSepForOS(isUnix) + normalizedViewPath);
} else {
String workspace = env.get("WORKSPACE");
if (workspace != null) {
env.put(CLEARCASE_VIEWPATH_ENVSTR, workspace + File.separator + normalizedViewPath);
env.put(CLEARCASE_VIEWPATH_ENVSTR, workspace + PathUtil.fileSepForOS(isUnix) + normalizedViewPath);
}
}
}
}

private boolean isRunningOnUnix(AbstractBuild<?, ?> build) {
Node builtOn = build.getBuiltOn();
if (builtOn == null) {
return false;
}
return builtOn.createLauncher(StreamTaskListener.NULL).isUnix();
}

public abstract SCMRevisionState calcRevisionsFromPoll(AbstractBuild<?, ?> build, Launcher launcher, TaskListener taskListener) throws IOException,
InterruptedException;

Expand Down
Expand Up @@ -228,12 +228,14 @@ protected boolean isFirstBuild(SCMRevisionState baseline) {
private BuildListener taskListener;

@Test
public void assertBuildEnvVarsUsesNormalizedViewName() throws IOException, InterruptedException {
public void assertBuildEnvVarsUsesNormalizedViewNameUnix() throws IOException, InterruptedException {

when(build.getBuiltOn()).thenReturn(node);
when(build.getProject()).thenReturn(project);
when(node.toComputer()).thenReturn(computer);
when(node.getNodeName()).thenReturn("test-node");
when(node.createLauncher(any(TaskListener.class))).thenReturn(launcher);
when(launcher.isUnix()).thenReturn(true);
when(build.getBuildVariables()).thenReturn(Collections.emptyMap());
when(computer.getSystemProperties()).thenReturn(System.getProperties());
when(project.getFullName()).thenReturn("CCHudson");
Expand All @@ -244,7 +246,7 @@ public void assertBuildEnvVarsUsesNormalizedViewName() throws IOException, Inter
env.put("NODE_NAME", "test-node");
scm.buildEnvVars(build, env);
assertEquals("The env var VIEWNAME wasn't set", "viewname-CCHudson-test-node", env.get(AbstractClearCaseScm.CLEARCASE_VIEWNAME_ENVSTR));
assertEquals("The env var VIEWPATH wasn't set", "/hudson/jobs/job/workspace" + File.separator + "viewname-CCHudson-test-node",
assertEquals("The env var VIEWPATH wasn't set", "/hudson/jobs/job/workspace/viewname-CCHudson-test-node",
env.get(AbstractClearCaseScm.CLEARCASE_VIEWPATH_ENVSTR));
}

Expand Down Expand Up @@ -590,6 +592,8 @@ public void testBuildEnvVars() throws IOException, InterruptedException {
when(build.getBuiltOn()).thenReturn(node);
when(node.toComputer()).thenReturn(computer);
when(node.getNodeName()).thenReturn("test-node");
when(node.createLauncher(any(TaskListener.class))).thenReturn(launcher);
when(launcher.isUnix()).thenReturn(true);
when(build.getBuildVariables()).thenReturn(Collections.emptyMap());
when(build.getEnvironment(any(LogTaskListener.class))).thenReturn(new EnvVars("JOB_NAME", "Hudson", "TEST_VARIABLE", "result-of-test"));
when(computer.getSystemProperties()).thenReturn(System.getProperties());
Expand All @@ -600,7 +604,28 @@ public void testBuildEnvVars() throws IOException, InterruptedException {
scm.generateNormalizedViewName(build);
scm.buildEnvVars(build, env);
assertEquals("The env var VIEWNAME wasnt set", "viewname", env.get(AbstractClearCaseScm.CLEARCASE_VIEWNAME_ENVSTR));
assertEquals("The env var VIEWPATH wasnt set", "/hudson/jobs/job/workspace" + File.separator + "viewname",
assertEquals("The env var VIEWPATH wasnt set", "/hudson/jobs/job/workspace/viewname",
env.get(AbstractClearCaseScm.CLEARCASE_VIEWPATH_ENVSTR));
}

@Test
public void testBuildEnvVarsWindows() throws IOException, InterruptedException {
when(build.getBuiltOn()).thenReturn(node);
when(node.toComputer()).thenReturn(computer);
when(node.getNodeName()).thenReturn("test-node");
when(node.createLauncher(any(TaskListener.class))).thenReturn(launcher);
when(launcher.isUnix()).thenReturn(false);
when(build.getBuildVariables()).thenReturn(Collections.emptyMap());
when(build.getEnvironment(any(LogTaskListener.class))).thenReturn(new EnvVars("JOB_NAME", "Hudson", "TEST_VARIABLE", "result-of-test"));
when(computer.getSystemProperties()).thenReturn(System.getProperties());

AbstractClearCaseScm scm = new AbstractClearCaseScmDummy("viewname", "vob", "");
Map<String, String> env = new HashMap<String, String>();
env.put("WORKSPACE", "D:\\jenkins\\workspace");
scm.generateNormalizedViewName(build);
scm.buildEnvVars(build, env);
assertEquals("The env var VIEWNAME wasnt set", "viewname", env.get(AbstractClearCaseScm.CLEARCASE_VIEWNAME_ENVSTR));
assertEquals("The env var VIEWPATH wasnt set", "D:\\jenkins\\workspace\\viewname",
env.get(AbstractClearCaseScm.CLEARCASE_VIEWPATH_ENVSTR));
}

Expand All @@ -609,6 +634,8 @@ public void testBuildEnvVarsNoWorkspaceVar() throws IOException, InterruptedExce
when(build.getBuiltOn()).thenReturn(node);
when(node.toComputer()).thenReturn(computer);
when(node.getNodeName()).thenReturn("test-node");
when(node.createLauncher(any(TaskListener.class))).thenReturn(launcher);
when(launcher.isUnix()).thenReturn(true);
when(build.getBuildVariables()).thenReturn(Collections.emptyMap());
when(build.getEnvironment(any(LogTaskListener.class))).thenReturn(new EnvVars("JOB_NAME", "Hudson", "TEST_VARIABLE", "result-of-test"));
when(computer.getSystemProperties()).thenReturn(System.getProperties());
Expand Down
11 changes: 9 additions & 2 deletions src/test/java/hudson/plugins/clearcase/ClearCaseSCMTest.java
Expand Up @@ -40,6 +40,7 @@
import hudson.model.AbstractProject;
import hudson.model.Computer;
import hudson.model.Node;
import hudson.model.TaskListener;
import hudson.plugins.clearcase.action.BaseSnapshotCheckoutAction;
import hudson.plugins.clearcase.base.BaseHistoryAction;
import hudson.plugins.clearcase.history.Filter;
Expand Down Expand Up @@ -218,6 +219,8 @@ public void testDynamicBuildEnvVars() throws IOException, InterruptedException {
when(build.getBuiltOn()).thenReturn(node);
when(node.toComputer()).thenReturn(computer);
when(node.getNodeName()).thenReturn("test-node");
when(node.createLauncher(any(TaskListener.class))).thenReturn(launcher);
when(launcher.isUnix()).thenReturn(true);
when(build.getBuildVariables()).thenReturn(new HashMap<String, String>());
when(build.getEnvironment(any(LogTaskListener.class))).thenReturn(new EnvVars("JOB_NAME", "Hudson", "TEST_VARIABLE", "result-of-test"));
when(computer.getSystemProperties()).thenReturn(System.getProperties());
Expand All @@ -231,14 +234,16 @@ public void testDynamicBuildEnvVars() throws IOException, InterruptedException {
scm.buildEnvVars(build, env);
assertEquals("The env var VIEWTAG wasnt set", "viewname", env.get(AbstractClearCaseScm.CLEARCASE_VIEWTAG_ENVSTR));
assertEquals("The env var VIEWNAME wasnt set", "viewpath", env.get(AbstractClearCaseScm.CLEARCASE_VIEWNAME_ENVSTR));
assertEquals("The env var VIEWPATH wasnt set", "/views" + File.separator + "viewname", env.get(AbstractClearCaseScm.CLEARCASE_VIEWPATH_ENVSTR));
assertEquals("The env var VIEWPATH wasnt set", "/views/viewname", env.get(AbstractClearCaseScm.CLEARCASE_VIEWPATH_ENVSTR));
}

@Test
public void testDynamicBuildEnvVarsNoViewDrive() {
when(build.getBuiltOn()).thenReturn(node);
when(node.toComputer()).thenReturn(computer);
when(node.getNodeName()).thenReturn("test-node");
when(node.createLauncher(any(TaskListener.class))).thenReturn(launcher);
when(launcher.isUnix()).thenReturn(true);
when(build.getParent()).thenReturn(project);
when(build.getBuildVariables()).thenReturn(new HashMap<String, String>());
AbstractClearCaseScm scm = new ClearCaseSCMDummy("branch", "label", "configspec", "viewname", true, "", true, null, null, false, false, false, "", "",
Expand Down Expand Up @@ -315,6 +320,8 @@ public void testSnapshotBuildEnvVars() throws IOException, InterruptedException
when(build.getBuiltOn()).thenReturn(node);
when(node.toComputer()).thenReturn(computer);
when(node.getNodeName()).thenReturn("test-node");
when(node.createLauncher(any(TaskListener.class))).thenReturn(launcher);
when(launcher.isUnix()).thenReturn(true);
when(build.getEnvironment(any(LogTaskListener.class))).thenReturn(new EnvVars("JOB_NAME", "Hudson", "TEST_VARIABLE", "result-of-test"));
when(computer.getSystemProperties()).thenReturn(System.getProperties());

Expand All @@ -328,7 +335,7 @@ public void testSnapshotBuildEnvVars() throws IOException, InterruptedException
scm.buildEnvVars(build, env);
assertEquals("The env var VIEWTAG wasn't set", "viewname", env.get(AbstractClearCaseScm.CLEARCASE_VIEWTAG_ENVSTR));
assertEquals("The env var VIEWNAME wasn't set", "viewpath", env.get(AbstractClearCaseScm.CLEARCASE_VIEWNAME_ENVSTR));
assertEquals("The env var VIEWPATH wasn't set", "/hudson/jobs/job/workspace" + File.separator + "viewpath",
assertEquals("The env var VIEWPATH wasn't set", "/hudson/jobs/job/workspace/viewpath",
env.get(AbstractClearCaseScm.CLEARCASE_VIEWPATH_ENVSTR));
}
}

0 comments on commit cf9e0b6

Please sign in to comment.