package org.peerbox.utils;
import static org.junit.Assert.assertTrue;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.RandomStringUtils;
import org.junit.Test;
import org.peerbox.BaseJUnitTest;
public class ExecuteProcessUtilsTest extends BaseJUnitTest {
/**
* Create random folder with random file in it.
* Execute dir command which should list the file in the folder.
*
* @throws IOException
*/
@Test
public void testExecuteCommand() throws IOException {
// create folder
final String folderName = RandomStringUtils.randomAlphanumeric(16);
Path tempFolder = Paths.get(FileUtils.getTempDirectoryPath(), folderName);
if (!Files.exists(tempFolder)) {
Files.createDirectory(tempFolder);
}
// create file in folder
final String fileName = RandomStringUtils.randomAlphanumeric(16);
Path tempFile = tempFolder.resolve(fileName);
Files.createFile(tempFile);
// execute dir of folder
ProcessBuilder builder = new ProcessBuilder();
if (OsUtils.isWindows()) {
builder.command("cmd", "/c", "dir", tempFolder.toString());
} else {
builder.command("dir", tempFolder.toString());
}
StringBuilder output = new StringBuilder();
ExecuteProcessUtils.executeCommand(builder, output);
// expect filename in output
assertTrue(output.toString().contains(fileName));
// cleanup
FileUtils.deleteDirectory(tempFolder.toFile());
}
}