/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.utils.executor;
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import de.rcenvironment.core.utils.common.OSFamily;
import de.rcenvironment.core.utils.common.TempFileServiceAccess;
/**
* Wrapper for running the {@link CommonExecutorTests} with a {@link LocalCommandLineExecutor}.
*
* @author Robert Mischke
*
*/
public class LocalCommandLineExecutorTest extends CommonExecutorTests {
private LocalCommandLineExecutor executor;
private File workDir;
/**
* Static test setup.
*/
@BeforeClass
public static void classSetUp() {
TempFileServiceAccess.setupUnitTestEnvironment();
}
/**
* Setup.
*
* @throws IOException on I/O errors
*/
@Before
public void setUp() throws IOException {
workDir = TempFileServiceAccess.getInstance().createManagedTempDir("-unittest");
executor = new LocalCommandLineExecutor(workDir);
}
/**
* Cleanup.
*
* @throws IOException on I/O errors
*/
@After
public void tearDown() throws IOException {
if (workDir != null) {
TempFileServiceAccess.getInstance().disposeManagedTempDirOrFile(workDir);
}
}
/**
* Tests {@link CommandLineExecutor#start(String)} with a single "echo" command.
*
* @throws IOException on test exception
* @throws InterruptedException on test exception
*/
@Test(timeout = DEFAULT_TEST_TIMEOUT)
public void testCrossPlatformEcho() throws IOException, InterruptedException {
testCrossPlatformEcho(executor);
}
/**
* Tests {@link CommandLineExecutor#startMultiLineCommand(String[])} with multiple "echo" commands.
*
* @throws IOException on test exception
* @throws InterruptedException on test exception
*/
@Test(timeout = DEFAULT_TEST_TIMEOUT)
public void testCrossPlatformMultiLineEcho() throws IOException, InterruptedException {
testCrossPlatformMultiLineEcho(executor);
}
/**
* Tests if environment variables are being properly set under Linux.
*
* @throws IOException on I/O errors
* @throws InterruptedException on thread interruption
*/
@Test(timeout = DEFAULT_TEST_TIMEOUT)
public void testLinuxEnvironmentSetting() throws IOException, InterruptedException {
if (!OSFamily.isLinux()) {
log.info(MESSAGE_LINUX_SPECIFIC_TEST_SKIPPED);
return;
}
testLinuxEnvironmentSetting(executor);
}
/**
* Tests if a provided input stream properly reaches the command line under Linux.
*
* @throws UnsupportedEncodingException if UTF-8 somehow ceased to exist
* @throws IOException on I/O errors
* @throws InterruptedException on thread interruption
*/
@Test(timeout = DEFAULT_TEST_TIMEOUT)
public void testLinuxProvidedInputStream() throws UnsupportedEncodingException, IOException, InterruptedException {
if (!OSFamily.isLinux()) {
log.info(MESSAGE_LINUX_SPECIFIC_TEST_SKIPPED);
return;
}
testLinuxProvidedInputStream(executor);
}
/**
* Tests if environment variables are being properly set under Windows.
*
* @throws IOException on I/O errors
* @throws InterruptedException on thread interruption
*/
@Test(timeout = DEFAULT_TEST_TIMEOUT)
public void testWindowsEnvironmentSetting() throws IOException, InterruptedException {
if (!OSFamily.isWindows()) {
log.info(MESSAGE_WINDOWS_SPECIFIC_TEST_SKIPPED);
return;
}
testWindowsEnvironmentSetting(executor);
}
/**
* Tests if a provided input stream properly reaches the command line under Windows.
*
* @throws UnsupportedEncodingException if UTF-8 somehow ceased to exist
* @throws IOException on I/O errors
* @throws InterruptedException on thread interruption
*/
@Test(timeout = DEFAULT_TEST_TIMEOUT)
public void testWindowsProvidedInputStream() throws UnsupportedEncodingException, IOException, InterruptedException {
if (!OSFamily.isWindows()) {
log.info(MESSAGE_WINDOWS_SPECIFIC_TEST_SKIPPED);
return;
}
testWindowsProvidedInputStream(executor);
}
}