package com.atsebak.embeddedlinuxjvm.commandline;
import com.atsebak.embeddedlinuxjvm.runner.conf.EmbeddedLinuxJVMRunConfiguration;
import com.atsebak.embeddedlinuxjvm.runner.data.EmbeddedLinuxJVMRunConfigurationRunnerParameters;
import com.intellij.execution.configurations.JavaParameters;
import com.intellij.execution.configurations.ParametersList;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
import java.util.ArrayList;
import java.util.Arrays;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.when;
public class CommandLineTargetTest {
JavaParameters javaParameters = Mockito.mock(JavaParameters.class);
EmbeddedLinuxJVMRunConfiguration piRunConfiguration = Mockito.mock(EmbeddedLinuxJVMRunConfiguration.class);
EmbeddedLinuxJVMRunConfigurationRunnerParameters parameters = new EmbeddedLinuxJVMRunConfigurationRunnerParameters();
ParametersList parametersList = Mockito.mock(ParametersList.class);
ParametersList jvmParametersList = Mockito.mock(ParametersList.class);
@Before
public void setUp() {
parameters.setRunAsRoot(true);
parameters.setMainclass("com.test.Main");
parameters.setPort("4000");
parameters.setHostname("127.0.0.1");
when(piRunConfiguration.getRunnerParameters()).thenReturn(parameters);
when(javaParameters.getProgramParametersList()).thenReturn(parametersList);
when(javaParameters.getProgramParametersList().getParameters()).thenReturn(new ArrayList<String>());
when(javaParameters.getVMParametersList()).thenReturn(jvmParametersList);
when(javaParameters.getMainClass()).thenReturn(parameters.getMainclass());
}
@Test
public void testRunCommand() {
when(javaParameters.getVMParametersList().getParameters()).thenReturn(new ArrayList<String>());
String runCommand = CommandLineTarget.builder()
.isDebugging(false)
.parameters(javaParameters)
.embeddedLinuxJVMRunConfiguration(piRunConfiguration)
.build().toString();
assertTrue(runCommand.contains(String.format("sudo java -cp classes:lib/'*' %s", parameters.getMainclass())));
}
@Test
public void testDebugCommand() {
JavaParameters params = Mockito.mock(JavaParameters.class);
String debugCommand = CommandLineTarget.builder()
.isDebugging(true)
.parameters(javaParameters)
.embeddedLinuxJVMRunConfiguration(piRunConfiguration)
.build().toString();
assertTrue(debugCommand.contains("sudo java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=" + parameters.getPort()));
}
@Test
public void testAddingArguments() {
when(javaParameters.getProgramParametersList().getParameters()).thenReturn(Arrays.asList("1", "2", "3"));
String runCommand = CommandLineTarget.builder()
.isDebugging(false)
.parameters(javaParameters)
.embeddedLinuxJVMRunConfiguration(piRunConfiguration)
.build().toString();
assertTrue(runCommand.contains(String.format("sudo java -cp classes:lib/'*' %s %s", parameters.getMainclass(), "1 2 3")));
}
@Test
public void testRemoveJavaAgent() {
when(jvmParametersList.getParameters()).thenReturn(Arrays.asList("-javaagent:123", "-foo:bar"));
String runCommand = CommandLineTarget.builder()
.isDebugging(false)
.parameters(javaParameters)
.embeddedLinuxJVMRunConfiguration(piRunConfiguration)
.build().toString();
System.out.println(runCommand);
assertTrue(runCommand.contains(String.format("sudo java %s -cp classes:lib/'*' %s", "-foo:bar" ,parameters.getMainclass())));
}
}