/*******************************************************************************
* Copyright (c) 2016 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.linuxtools.tools.launch.core.tests;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.io.IOException;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.Path;
import org.eclipse.linuxtools.remote.proxy.tests.AbstractProxyTest;
import org.eclipse.linuxtools.tools.launch.core.factory.RuntimeProcessFactory;
import org.junit.Test;
public class RuntimeProcessFactoryTest extends AbstractProxyTest {
@Test
public void whichCommandTest() {
String actualCmd = null, expectedCmdPath, testCaseMsg = "";
IProject actualProject;
boolean expectedExist;
Object[][] testCases = {
{localProject.getProject(), "ls", true},
{localProject.getProject(), "notexistcmd", false},
{syncProject.getProject(), "ls", true},
{syncProject.getProject(), "notexistcmd", false}
};
for(Object[] params : testCases) {
try {
actualProject = (IProject) params[0];
assertNotNull(actualProject);
actualCmd = (String) params[1];
expectedExist = (boolean) params[2];
testCaseMsg = "(" + actualProject.getName() + "): ";
expectedCmdPath = RuntimeProcessFactory.getFactory().whichCommand(actualCmd, actualProject);
assertFalse(expectedCmdPath.isEmpty());
assertTrue(Path.isValidPosixPath(expectedCmdPath));
// If command does not exist it should return the command's name.
if(!expectedExist) {
assertTrue(testCaseMsg + "Command not exist",
actualCmd.contentEquals(expectedCmdPath));
} else {
assertFalse(testCaseMsg + "Should had return a path different from command name",
actualCmd.contentEquals(expectedCmdPath));
}
} catch (IOException e) {
fail(testCaseMsg + "Should had returned valid path to '" + actualCmd + "' command");
}
}
}
}