private Arguments toArgList(List<String> args) { Arguments arguments = new Arguments(); if (args != null) for (String arg : args) { arguments.add(new Argument(arg)); } return arguments; }
@Test public void shouldReturnEmptyCommandArguments(){ ExecTask task = new ExecTask("./bn", new Arguments(), "src/build" ); assertThat(task.arguments(),is("")); }
@Test public void shouldConvertToEmptyArray() { assertThat(new Arguments().toStringArray().length, is(0)); }
@Test public void shouldAddErrorsOfEachArgumentToTheParent() { Argument argument = new Argument("invalid-argument"); argument.addError(ExecTask.ARG_LIST_STRING, "Invalid argument"); ExecTask execTask = new ExecTask("echo", new Arguments(argument), null); execTask.validate(ConfigSaveValidationContext.forChain(new BasicCruiseConfig())); assertThat(execTask.errors().on(ExecTask.ARG_LIST_STRING), is("Invalid argument")); }
@Test public void describeMutipleArgumentsTest() { ExecTask task = new ExecTask("echo", null, new Arguments(new Argument("abc"), new Argument("hello baby!"))); task.setTimeout(600); assertThat(task.describe(), is("echo abc \"hello baby!\"")); }
@Test public void shouldConvertToStringArray() { assertThat(new Arguments(new Argument("arg1"), new Argument("arg2")).toStringArray(), is(new String[]{"arg1", "arg2"})); }
@Test public void shouldReturnCommandArgumentList(){ ExecTask task = new ExecTask("./bn", new Arguments(new Argument("clean"), new Argument("compile"), new Argument("\"buildfile\"")), "src/build" ); assertThat(task.arguments(),is("clean compile \"buildfile\"")); }
@Test public void shouldValidateConfig() throws Exception { ExecTask execTask = new ExecTask("arg1 arg2", new Arguments(new Argument("arg1"), new Argument("arg2"))); execTask.validate(ConfigSaveValidationContext.forChain(new BasicCruiseConfig())); assertThat(execTask.errors().isEmpty(), is(false)); assertThat(execTask.errors().on(ExecTask.ARGS), is(ExecTask.EXEC_CONFIG_ERROR)); assertThat(execTask.errors().on(ExecTask.ARG_LIST_STRING), is(ExecTask.EXEC_CONFIG_ERROR)); }
@Test public void shouldValidateTreeForAllTasks() { AntTask antTask = antTask("build.xml", "compile", "/abc"); ExecTask execTask = new ExecTask("foo", new Arguments(new Argument("arg"))); Tasks tasks = new Tasks(antTask, execTask); String pipelineName = "p1"; PipelineConfig pipelineConfig = GoConfigMother.configWithPipelines(pipelineName).pipelineConfigByName(new CaseInsensitiveString(pipelineName)); StageConfig stageConfig = pipelineConfig.getStages().get(0); JobConfig jobConfig = stageConfig.getJobs().get(0); jobConfig.setTasks(tasks); PipelineConfigSaveValidationContext context = PipelineConfigSaveValidationContext.forChain(true, "group", pipelineConfig, stageConfig, jobConfig); assertFalse(tasks.validateTree(context)); assertThat(tasks.errors().isEmpty(), is(true)); assertThat(antTask.errors().isEmpty(), is(false)); assertThat(antTask.errors().get(AntTask.WORKING_DIRECTORY).size(), is(1)); assertThat(antTask.errors().get(AntTask.WORKING_DIRECTORY).contains("Task of job 'job' in stage 'stage' of pipeline 'p1' has path '/abc' which is outside the working directory."), is(true)); assertThat(execTask.errors().get(ExecTask.ARG_LIST_STRING).size(), is(1)); assertThat(execTask.errors().get(ExecTask.ARG_LIST_STRING).contains("Can not use both 'args' attribute and 'arg' sub element in 'exec' element!"), is(true)); assertThat(execTask.errors().get(ExecTask.ARGS).size(), is(1)); assertThat(execTask.errors().get(ExecTask.ARGS).contains("Can not use both 'args' attribute and 'arg' sub element in 'exec' element!"), is(true)); }
@Test public void shouldBeValid() throws Exception { ExecTask execTask = new ExecTask("", new Arguments(new Argument("arg1"), new Argument("arg2"))); execTask.validate(ConfigSaveValidationContext.forChain(new BasicCruiseConfig())); assertThat(execTask.errors().isEmpty(), is(true)); execTask = new ExecTask("command", "", "blah"); execTask.validate(ConfigSaveValidationContext.forChain(new BasicCruiseConfig())); assertThat(execTask.errors().isEmpty(), is(true)); }
@Test public void shouldPopulateAllAttributesOnPropertiesForDisplay() { ExecTask execTask = new ExecTask("ls", "-la", "holy/dir"); execTask.setTimeout(10l); assertThat(execTask.getPropertiesForDisplay(), hasItems(new TaskProperty("Command", "ls", "command"), new TaskProperty("Arguments", "-la", "arguments"), new TaskProperty("Working Directory", "holy/dir", "working_directory"), new TaskProperty("Timeout", "10", "timeout"))); assertThat(execTask.getPropertiesForDisplay().size(), is(4)); execTask = new ExecTask("ls", new Arguments(new Argument("-la"), new Argument("/proc")), "holy/dir"); execTask.setTimeout(10l); assertThat(execTask.getPropertiesForDisplay(), hasItems(new TaskProperty("Command", "ls", "command"), new TaskProperty("Arguments", "-la /proc", "arguments"), new TaskProperty("Working Directory", "holy/dir", "working_directory"), new TaskProperty("Timeout", "10", "timeout"))); assertThat(execTask.getPropertiesForDisplay().size(), is(4)); execTask = new ExecTask("ls", new Arguments(new Argument()), null); assertThat(execTask.getPropertiesForDisplay(), hasItems(new TaskProperty("Command", "ls", "command"))); assertThat(execTask.getPropertiesForDisplay().size(), is(1)); execTask = new ExecTask("ls", "", (String) null); assertThat(execTask.getPropertiesForDisplay(), hasItems(new TaskProperty("Command", "ls", "command"))); assertThat(execTask.getPropertiesForDisplay().size(), is(1)); }
@Test public void shouldSupportMultipleArgs() throws Exception { String xml = "<exec command='ls'>\n" + " <arg>arg1</arg>\n" + " <arg>arg2</arg>\n" + "</exec>"; ExecTask execTask = new MagicalGoConfigXmlLoader(new ConfigCache(), ConfigElementImplementationRegistryMother.withNoPlugins()).fromXmlPartial(xml, ExecTask.class); assertThat(execTask.getArgList(), is(new Arguments(new Argument("arg1"), new Argument("arg2")))); }