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()); }
@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 shouldAllowEmptyOnCancel() throws Exception { String buildXmlPartial = "<jobs>\n" + " <job name=\"functional\">\n" + " <tasks>\n" + " <exec command='ls'>\n" + " <oncancel/>\n" + " </exec>\n" + " </tasks>\n" + " </job>\n" + "</jobs>"; JobConfigs jobs = xmlLoader.fromXmlPartial(buildXmlPartial, JobConfigs.class); JobConfig job = jobs.first(); Tasks tasks = job.tasks(); assertThat(tasks.size(), is(1)); ExecTask execTask = (ExecTask) tasks.get(0); assertThat(execTask.cancelTask(), is(instanceOf(NullTask.class))); }