@Override public Builder createBuilder(BuilderFactory builderFactory, ExecTask task, Pipeline pipeline, UpstreamPipelineResolver pipelineResolver) { String workingDir = task.workingDirectory(); String command = task.command(); File newWorkingDir = workingDir == null ? pipeline.defaultWorkingFolder() : new File( applyBaseDirIfRelativeAndNormalize(pipeline.defaultWorkingFolder(), new File(workingDir))); Builder builder = builderFactory.builderFor(task.cancelTask(), pipeline, pipelineResolver); String description = task.describe(); if (!task.getArgList().isEmpty()) { return new CommandBuilderWithArgList(command, task.getArgList().toStringArray(), newWorkingDir, task.getConditions(), builder, description); } else { return new CommandBuilder(command, task.getArgs(), newWorkingDir, task.getConditions(), builder, description); } } }
@Test public void shouldSetOnCancelExecTask() { AbstractTask task = new ExecTask(); Map onCancelMapAttrib = new HashMap(); onCancelMapAttrib.put(ExecTask.COMMAND, "sudo"); onCancelMapAttrib.put(ExecTask.ARGS, "ls -la"); onCancelMapAttrib.put(ExecTask.WORKING_DIR, "working_dir"); onCancelMapAttrib.put(AbstractTask.RUN_IF_CONFIGS_ANY, "1"); onCancelMapAttrib.put(AbstractTask.RUN_IF_CONFIGS_FAILED, "1"); onCancelMapAttrib.put(AbstractTask.RUN_IF_CONFIGS_PASSED, "1"); Map onCancelConfigAttributes = new HashMap(); onCancelConfigAttributes.put(OnCancelConfig.EXEC_ON_CANCEL, onCancelMapAttrib); onCancelConfigAttributes.put(OnCancelConfig.ON_CANCEL_OPTIONS, "exec"); Map actualTaskAttributes = new HashMap(); actualTaskAttributes.put(AbstractTask.ON_CANCEL_CONFIG, onCancelConfigAttributes); actualTaskAttributes.put(AbstractTask.HAS_CANCEL_TASK, "1"); ExecTask execTask = new ExecTask(); when(taskFactory.taskInstanceFor(execTask.getTaskType())).thenReturn(execTask); task.setConfigAttributes(actualTaskAttributes, taskFactory); assertThat(task.hasCancelTask(), is(true)); ExecTask expected = new ExecTask("sudo", "ls -la", "working_dir"); expected.getConditions().add(RunIfConfig.ANY); expected.getConditions().add(RunIfConfig.FAILED); expected.getConditions().add(RunIfConfig.PASSED); assertThat(task.cancelTask(), is(expected)); }
public static Builder builderFor(ExecTask task) { Builder cancelTask = null; if (task.cancelTask() != null) { cancelTask = builderFor((ExecTask) task.cancelTask()); } return new CommandBuilderWithArgList(task.command(), task.getArgList().toStringArray(), new File(task.workingDirectory()), task.getConditions(), cancelTask, task.describe()); }