package cz.cuni.mff.d3s.been.hostruntime.task; import java.io.File; import cz.cuni.mff.d3s.been.hostruntime.task.NativeCmdLineBuilder; import org.apache.commons.exec.CommandLine; import org.junit.Assert; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; import cz.cuni.mff.d3s.been.bpk.NativeRuntime; import cz.cuni.mff.d3s.been.core.task.Arguments; import cz.cuni.mff.d3s.been.core.task.TaskDescriptor; public class NativeCommandLineBuilderTest extends Assert { @Rule public TemporaryFolder tmpFolder = new TemporaryFolder(); private File taskDir; @Before public void setUp() throws Exception { taskDir = tmpFolder.newFolder(); } @Test public void testCompleteCommandLineIsBuilt() throws Exception { NativeRuntime runtime = new NativeRuntime(); runtime.setBinary("binary"); TaskDescriptor td = new TaskDescriptor(); td.setArguments(createArgs("arg1", "arg2")); String executable = "executable"; CommandLine cmdLine = new NativeCmdLineBuilder(executable, taskDir, td).build(); assertEquals(2, cmdLine.getArguments().length); assertEquals(new File(taskDir, "files/executable").getAbsolutePath(), cmdLine.getExecutable()); assertEquals("arg1", cmdLine.getArguments()[0]); assertEquals("arg2", cmdLine.getArguments()[1]); } @Test public void testExecutableFlagSetOnExecutableFile() throws Exception { NativeRuntime runtime = new NativeRuntime(); runtime.setBinary("binary"); TaskDescriptor td = new TaskDescriptor(); File filesDir = new File(taskDir, "files"); filesDir.mkdir(); File executable = new File(filesDir, "executable"); executable.createNewFile(); assertFalse(executable.canExecute()); new NativeCmdLineBuilder(executable.getName(), taskDir, td).build(); assertTrue(executable.canExecute()); } private Arguments createArgs(String arg1, String arg2) { Arguments args = new Arguments(); args.getArgument().add(arg1); args.getArgument().add(arg2); return args; } }