package jetbrains.mps.execution.impl.configurations.tests.commands; /*Generated by MPS */ import jetbrains.mps.MPSLaunch; import jetbrains.mps.lang.test.runtime.BaseTransformationTest; import org.junit.Test; import jetbrains.mps.lang.test.runtime.BaseTestBody; import jetbrains.mps.baseLanguage.closures.runtime.Wrappers; import org.jetbrains.mps.openapi.model.SNodeReference; import org.jetbrains.mps.openapi.model.SModel; import jetbrains.mps.smodel.ModuleRepositoryFacade; import org.jetbrains.mps.openapi.model.SNode; import jetbrains.mps.internal.collections.runtime.ListSequence; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SModelOperations; import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory; import jetbrains.mps.internal.collections.runtime.IWhereFilter; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SPropertyOperations; import jetbrains.mps.execution.impl.configurations.tests.commands.sandbox.Main; import jetbrains.mps.smodel.SNodePointer; import jetbrains.mps.baseLanguage.execution.api.Java_Command; import com.intellij.execution.process.ProcessHandler; import com.intellij.execution.process.ProcessEvent; import jetbrains.mps.execution.api.commands.OutputRedirector; import com.intellij.execution.process.ProcessAdapter; import com.intellij.openapi.util.Key; import com.intellij.execution.process.ProcessOutputTypes; import jetbrains.mps.execution.api.commands.ProcessHandlerBuilder; import junit.framework.Assert; @MPSLaunch public class JavaCommand_Test extends BaseTransformationTest { @Test public void test_startJavaByNode() throws Throwable { initTest("${mps_home}", "r:e2bad6d6-3029-4bc3-b44d-49863f32d863(jetbrains.mps.execution.impl.configurations.tests.commands@tests)", false); runTest("jetbrains.mps.execution.impl.configurations.tests.commands.JavaCommand_Test$TestBody", "test_startJavaByNode", true); } @MPSLaunch public static class TestBody extends BaseTestBody { public void test_startJavaByNode() throws Exception { final Wrappers._T<SNodeReference> pointer = new Wrappers._T<SNodeReference>(); myProject.getModelAccess().runReadAction(new Runnable() { public void run() { SModel model = new ModuleRepositoryFacade(myProject.getRepository()).getModelByName("jetbrains.mps.execution.impl.configurations.tests.commands.sandbox@tests"); SNode mainNode = ListSequence.fromList(SModelOperations.roots(model, MetaAdapterFactory.getInterfaceConcept(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L, "jetbrains.mps.lang.core.structure.INamedConcept"))).findFirst(new IWhereFilter<SNode>() { public boolean accept(SNode it) { return eq_849b2c_a0a0a0a0a0a1a0a0a0a1a0c(SPropertyOperations.getString(it, MetaAdapterFactory.getProperty(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L, 0x110396ec041L, "name")), Main.class.getSimpleName()); } }); pointer.value = new SNodePointer(mainNode); } }); this.checkProcess(new Java_Command().createProcess(pointer.value, myProject.getRepository()), Main.MESSAGE + "\n"); } public void checkProcess(ProcessHandler process, final String expectedSysErr) { final ProcessEvent[] failed = new ProcessEvent[1]; final boolean[] printed = new boolean[1]; // todo show progress window OutputRedirector.redirect(process, new ProcessAdapter() { @Override public void onTextAvailable(ProcessEvent event, Key key) { if (ProcessOutputTypes.STDERR.equals(key)) { if (neq_849b2c_a0a0a0a0a1a3a3c(event.getText(), expectedSysErr)) { failed[0] = event; System.err.print(event.getText()); } else { printed[0] = true; } } else if (!(ProcessOutputTypes.SYSTEM.equals(key))) { failed[0] = event; System.err.println("Unknown event " + event.getText()); } } }); int exitCode = ProcessHandlerBuilder.startAndWait(process); if (failed[0] != null) { Assert.fail(failed[0].getText()); } if (!(printed[0])) { Assert.fail("Did not print required message!"); } if (exitCode != 0) { Assert.fail("Exit with code " + exitCode); } } private static boolean eq_849b2c_a0a0a0a0a0a1a0a0a0a1a0c(Object a, Object b) { return (a != null ? a.equals(b) : a == b); } private static boolean neq_849b2c_a0a0a0a0a1a3a3c(Object a, Object b) { return !(((a != null ? a.equals(b) : a == b))); } } }