package jetbrains.mps.execution.configurations.implementation.plugin.plugin;
/*Generated by MPS */
import java.util.List;
import com.intellij.execution.junit.RuntimeConfigurationProducer;
import com.intellij.execution.configurations.ConfigurationType;
import jetbrains.mps.internal.collections.runtime.ListSequence;
import java.util.ArrayList;
import jetbrains.mps.execution.api.configurations.BaseMpsProducer;
import jetbrains.mps.project.MPSProject;
import jetbrains.mps.plugins.runconfigs.MPSPsiElement;
import com.intellij.execution.impl.RunManagerImpl;
import jetbrains.mps.baseLanguage.unitTest.execution.settings.JUnitRunTypes;
import org.jetbrains.annotations.NotNull;
import com.intellij.execution.configurations.RunConfiguration;
import com.intellij.execution.actions.ConfigurationContext;
import jetbrains.mps.baseLanguage.unitTest.execution.settings.JUnitSettings_Configuration;
import org.jetbrains.mps.openapi.module.SModule;
import org.jetbrains.mps.openapi.module.SModuleReference;
import org.jetbrains.mps.openapi.model.SModel;
import org.jetbrains.mps.openapi.model.SModelName;
import org.jetbrains.mps.openapi.model.SModelReference;
import org.jetbrains.mps.openapi.module.SRepository;
import jetbrains.mps.smodel.ModelAccessHelper;
import jetbrains.mps.util.Computable;
import java.util.Objects;
import org.jetbrains.mps.openapi.model.SNode;
import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations;
import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory;
import jetbrains.mps.baseLanguage.unitTest.execution.client.TestNodeWrapperFactory;
import jetbrains.mps.baseLanguage.unitTest.execution.client.ITestNodeWrapper;
import jetbrains.mps.internal.collections.runtime.Sequence;
import jetbrains.mps.lang.smodel.generator.smodelAdapter.SPropertyOperations;
import jetbrains.mps.execution.lib.PointerUtils;
import jetbrains.mps.smodel.behaviour.BHReflection;
import jetbrains.mps.core.aspects.behaviour.SMethodTrimmedId;
public class JUnitTests_Producer {
private static final String CONFIGURATION_FACTORY_CLASS_NAME = "jetbrains.mps.execution.configurations.implementation.plugin.plugin.JUnitTests_Configuration_Factory";
public JUnitTests_Producer() {
}
public static List<RuntimeConfigurationProducer> getProducers(ConfigurationType configurationType) {
List<RuntimeConfigurationProducer> creators = ListSequence.fromList(new ArrayList<RuntimeConfigurationProducer>());
ListSequence.fromList(creators).addElement(new JUnitTests_Producer.ProducerPart_MPSProject_f2w1m9_a(configurationType, CONFIGURATION_FACTORY_CLASS_NAME));
ListSequence.fromList(creators).addElement(new JUnitTests_Producer.ProducerPart_SModule_f2w1m9_b(configurationType, CONFIGURATION_FACTORY_CLASS_NAME));
ListSequence.fromList(creators).addElement(new JUnitTests_Producer.ProducerPart_SModel_f2w1m9_c(configurationType, CONFIGURATION_FACTORY_CLASS_NAME));
ListSequence.fromList(creators).addElement(new JUnitTests_Producer.ProducerPart_Node_f2w1m9_d(configurationType, CONFIGURATION_FACTORY_CLASS_NAME));
ListSequence.fromList(creators).addElement(new JUnitTests_Producer.ProducerPart_Node_f2w1m9_e(configurationType, CONFIGURATION_FACTORY_CLASS_NAME));
ListSequence.fromList(creators).addElement(new JUnitTests_Producer.ProducerPart_NlistITestCase_f2w1m9_f(configurationType, CONFIGURATION_FACTORY_CLASS_NAME));
ListSequence.fromList(creators).addElement(new JUnitTests_Producer.ProducerPart_NlistITestMethod_f2w1m9_g(configurationType, CONFIGURATION_FACTORY_CLASS_NAME));
return creators;
}
public static final class ProducerPart_MPSProject_f2w1m9_a extends BaseMpsProducer<MPSProject> {
public ProducerPart_MPSProject_f2w1m9_a(ConfigurationType configurationType, String factoryName) {
super(configurationType, factoryName);
}
@Override
protected boolean isApplicable(Object source) {
return source instanceof MPSProject;
}
@Override
protected JUnitTests_Configuration doCreateConfiguration(final MPSProject source) {
setSourceElement(new MPSPsiElement(getMpsProject()));
JUnitTests_Configuration configuration = ((JUnitTests_Configuration) getConfigurationFactory().createConfiguration("" + "All Tests in Project", (JUnitTests_Configuration) RunManagerImpl.getInstanceImpl(getContext().getProject()).getConfigurationTemplate(getConfigurationFactory()).getConfiguration()));
configuration.getJUnitSettings().setJUnitRunType(JUnitRunTypes.PROJECT);
configuration.getJUnitSettings().setInProcess(false);
return configuration;
}
@Override
protected boolean isConfigurationFromContext(@NotNull RunConfiguration configuration0, @NotNull ConfigurationContext context) {
if (!(configuration0 instanceof JUnitTests_Configuration)) {
return false;
}
JUnitTests_Configuration configuration = (JUnitTests_Configuration) configuration0;
JUnitSettings_Configuration settings = configuration.getJUnitSettings();
return settings.getJUnitRunType() == JUnitRunTypes.PROJECT;
}
@Override
public JUnitTests_Producer.ProducerPart_MPSProject_f2w1m9_a clone() {
return (JUnitTests_Producer.ProducerPart_MPSProject_f2w1m9_a) super.clone();
}
}
public static final class ProducerPart_SModule_f2w1m9_b extends BaseMpsProducer<SModule> {
public ProducerPart_SModule_f2w1m9_b(ConfigurationType configurationType, String factoryName) {
super(configurationType, factoryName);
}
@Override
protected boolean isApplicable(Object source) {
return source instanceof SModule;
}
@Override
protected JUnitTests_Configuration doCreateConfiguration(final SModule source) {
setSourceElement(MPSPsiElement.createFor(source, getMpsProject()));
String name = source.getModuleName();
JUnitTests_Configuration configuration = ((JUnitTests_Configuration) getConfigurationFactory().createConfiguration("" + "Tests in '" + name + "'", (JUnitTests_Configuration) RunManagerImpl.getInstanceImpl(getContext().getProject()).getConfigurationTemplate(getConfigurationFactory()).getConfiguration()));
configuration.getJUnitSettings().setJUnitRunType(JUnitRunTypes.MODULE);
configuration.getJUnitSettings().setModule(source.getModuleName());
configuration.getJUnitSettings().setInProcess(false);
return configuration;
}
@Override
protected boolean isConfigurationFromContext(@NotNull RunConfiguration configuration0, @NotNull ConfigurationContext context) {
if (!(configuration0 instanceof JUnitTests_Configuration)) {
return false;
}
JUnitTests_Configuration configuration = (JUnitTests_Configuration) configuration0;
JUnitSettings_Configuration settings = configuration.getJUnitSettings();
if (context.getPsiLocation() instanceof MPSPsiElement) {
SModuleReference mRef = ((MPSPsiElement) context.getPsiLocation()).getUnresolvedItem(SModuleReference.class);
if (mRef == null) {
return false;
}
return settings.getJUnitRunType() == JUnitRunTypes.MODULE && settings.getModule().equals(mRef.getModuleName());
}
return false;
}
@Override
public JUnitTests_Producer.ProducerPart_SModule_f2w1m9_b clone() {
return (JUnitTests_Producer.ProducerPart_SModule_f2w1m9_b) super.clone();
}
}
public static final class ProducerPart_SModel_f2w1m9_c extends BaseMpsProducer<SModel> {
public ProducerPart_SModel_f2w1m9_c(ConfigurationType configurationType, String factoryName) {
super(configurationType, factoryName);
}
@Override
protected boolean isApplicable(Object source) {
return source instanceof SModel;
}
@Override
protected JUnitTests_Configuration doCreateConfiguration(final SModel source) {
setSourceElement(MPSPsiElement.createFor(source, getMpsProject()));
SModelName name = source.getName();
JUnitTests_Configuration configuration = ((JUnitTests_Configuration) getConfigurationFactory().createConfiguration("" + "Tests in '" + name.getValue() + "'", (JUnitTests_Configuration) RunManagerImpl.getInstanceImpl(getContext().getProject()).getConfigurationTemplate(getConfigurationFactory()).getConfiguration()));
configuration.getJUnitSettings().setJUnitRunType(JUnitRunTypes.MODEL);
configuration.getJUnitSettings().setModel(name.getValue());
configuration.getJUnitSettings().setModule(source.getModule().getModuleName());
configuration.getJUnitSettings().setInProcess(false);
return configuration;
}
@Override
protected boolean isConfigurationFromContext(@NotNull RunConfiguration configuration0, @NotNull ConfigurationContext context) {
if (!(configuration0 instanceof JUnitTests_Configuration)) {
return false;
}
JUnitTests_Configuration configuration = (JUnitTests_Configuration) configuration0;
JUnitSettings_Configuration settings = configuration.getJUnitSettings();
if (context.getPsiLocation() instanceof MPSPsiElement) {
MPSPsiElement element = ((MPSPsiElement) context.getPsiLocation());
final SModelReference mRef = element.getUnresolvedItem(SModelReference.class);
if (mRef == null) {
return false;
}
final SRepository repository = element.getMPSProject().getRepository();
SModule module = new ModelAccessHelper(repository).runReadAction(new Computable<SModule>() {
public SModule compute() {
SModel model = mRef.resolve(repository);
return model.getModule();
}
});
if (module == null) {
return false;
}
return settings.getJUnitRunType() == JUnitRunTypes.MODEL && Objects.equals(settings.getModel(), mRef.getName().getValue()) && Objects.equals(settings.getModule(), module.getModuleName());
}
return false;
}
@Override
public JUnitTests_Producer.ProducerPart_SModel_f2w1m9_c clone() {
return (JUnitTests_Producer.ProducerPart_SModel_f2w1m9_c) super.clone();
}
}
public static final class ProducerPart_Node_f2w1m9_d extends BaseMpsProducer<SNode> {
public ProducerPart_Node_f2w1m9_d(ConfigurationType configurationType, String factoryName) {
super(configurationType, factoryName);
}
@Override
protected boolean isApplicable(Object source) {
return source instanceof SNode && SNodeOperations.isInstanceOf(((SNode) source), MetaAdapterFactory.getConcept(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x10802efe25aL, "jetbrains.mps.lang.core.structure.BaseConcept"));
}
@Override
protected JUnitTests_Configuration doCreateConfiguration(final SNode source) {
setSourceElement(MPSPsiElement.createFor(source, getMpsProject()));
SNode testableMethod = TestNodeWrapperFactory.findWrappableAncestor(source, false);
if (testableMethod != null) {
ITestNodeWrapper testWrapper = TestNodeWrapperFactory.tryToWrap(testableMethod);
if (testWrapper != null && !(testWrapper.isTestCase())) {
// no need to run the whole test case if we are inside a test method
return null;
}
}
SNode testNode = SNodeOperations.cast(TestNodeWrapperFactory.findWrappableAncestor(source, true), MetaAdapterFactory.getInterfaceConcept(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L, "jetbrains.mps.lang.core.structure.INamedConcept"));
if (testNode == null) {
return null;
}
ITestNodeWrapper wrapper = TestNodeWrapperFactory.tryToWrap(testNode);
if (wrapper == null || Sequence.fromIterable(wrapper.getTestMethods()).isEmpty()) {
return null;
}
String name = SPropertyOperations.getString(testNode, MetaAdapterFactory.getProperty(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L, 0x110396ec041L, "name"));
if (name == null) {
return null;
}
JUnitTests_Configuration configuration = ((JUnitTests_Configuration) getConfigurationFactory().createConfiguration("" + name, (JUnitTests_Configuration) RunManagerImpl.getInstanceImpl(getContext().getProject()).getConfigurationTemplate(getConfigurationFactory()).getConfiguration()));
configuration.getJUnitSettings().setJUnitRunType(JUnitRunTypes.NODE);
configuration.getJUnitSettings().setTestCases(PointerUtils.nodeToCloneableList(testNode));
boolean canRunInProcess = false;
if (SNodeOperations.isInstanceOf(testNode, MetaAdapterFactory.getInterfaceConcept(0xf61473f9130f42f6L, 0xb98d6c438812c2f6L, 0x11b2709bd56L, "jetbrains.mps.baseLanguage.unitTest.structure.ITestCase"))) {
canRunInProcess = ((boolean) (Boolean) BHReflection.invoke(SNodeOperations.cast(testNode, MetaAdapterFactory.getInterfaceConcept(0xf61473f9130f42f6L, 0xb98d6c438812c2f6L, 0x11b2709bd56L, "jetbrains.mps.baseLanguage.unitTest.structure.ITestCase")), SMethodTrimmedId.create("canRunInProcess", null, "5_jSk8paieB")));
}
configuration.getJUnitSettings().setInProcess(canRunInProcess);
return configuration;
}
@Override
public JUnitTests_Producer.ProducerPart_Node_f2w1m9_d clone() {
return (JUnitTests_Producer.ProducerPart_Node_f2w1m9_d) super.clone();
}
}
public static final class ProducerPart_Node_f2w1m9_e extends BaseMpsProducer<SNode> {
public ProducerPart_Node_f2w1m9_e(ConfigurationType configurationType, String factoryName) {
super(configurationType, factoryName);
}
@Override
protected boolean isApplicable(Object source) {
return source instanceof SNode && SNodeOperations.isInstanceOf(((SNode) source), MetaAdapterFactory.getConcept(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x10802efe25aL, "jetbrains.mps.lang.core.structure.BaseConcept"));
}
@Override
protected JUnitTests_Configuration doCreateConfiguration(final SNode source) {
setSourceElement(MPSPsiElement.createFor(source, getMpsProject()));
SNode method = TestNodeWrapperFactory.findWrappableAncestor(source, false);
if (method == null) {
return null;
}
ITestNodeWrapper wrapper = TestNodeWrapperFactory.tryToWrap(method);
if (wrapper == null || wrapper.isTestCase()) {
return null;
}
JUnitTests_Configuration configuration = ((JUnitTests_Configuration) getConfigurationFactory().createConfiguration("" + wrapper.getName(), (JUnitTests_Configuration) RunManagerImpl.getInstanceImpl(getContext().getProject()).getConfigurationTemplate(getConfigurationFactory()).getConfiguration()));
configuration.getJUnitSettings().setJUnitRunType(JUnitRunTypes.METHOD);
configuration.getJUnitSettings().setTestMethods(PointerUtils.nodeToCloneableList(method));
SNode testNode = TestNodeWrapperFactory.findWrappableAncestor(source, true);
if (SNodeOperations.isInstanceOf(testNode, MetaAdapterFactory.getInterfaceConcept(0xf61473f9130f42f6L, 0xb98d6c438812c2f6L, 0x11b2709bd56L, "jetbrains.mps.baseLanguage.unitTest.structure.ITestCase"))) {
boolean canRunInProcess = ((boolean) (Boolean) BHReflection.invoke(SNodeOperations.cast(testNode, MetaAdapterFactory.getInterfaceConcept(0xf61473f9130f42f6L, 0xb98d6c438812c2f6L, 0x11b2709bd56L, "jetbrains.mps.baseLanguage.unitTest.structure.ITestCase")), SMethodTrimmedId.create("canRunInProcess", null, "5_jSk8paieB")));
configuration.getJUnitSettings().setInProcess(canRunInProcess);
}
return configuration;
}
@Override
public JUnitTests_Producer.ProducerPart_Node_f2w1m9_e clone() {
return (JUnitTests_Producer.ProducerPart_Node_f2w1m9_e) super.clone();
}
}
public static final class ProducerPart_NlistITestCase_f2w1m9_f extends BaseMpsProducer<List<SNode>> {
public ProducerPart_NlistITestCase_f2w1m9_f(ConfigurationType configurationType, String factoryName) {
super(configurationType, factoryName);
}
@Override
protected boolean isApplicable(Object source) {
if (!(source instanceof List)) {
return false;
}
for (Object obj : (List) source) {
if (!((obj instanceof SNode && SNodeOperations.isInstanceOf(((SNode) obj), MetaAdapterFactory.getInterfaceConcept(0xf61473f9130f42f6L, 0xb98d6c438812c2f6L, 0x11b2709bd56L, "jetbrains.mps.baseLanguage.unitTest.structure.ITestCase"))))) {
return false;
}
}
return true;
}
@Override
protected JUnitTests_Configuration doCreateConfiguration(final List<SNode> source) {
setSourceElement(MPSPsiElement.createFor(source, getMpsProject()));
boolean containsTest = false;
boolean canRunInProcess = true;
for (SNode testCase : source) {
if (ListSequence.fromList(((List<SNode>) BHReflection.invoke(testCase, SMethodTrimmedId.create("getTestMethods", null, "1RfJDyhAUar")))).isNotEmpty()) {
containsTest = true;
}
if (!(((boolean) (Boolean) BHReflection.invoke(testCase, SMethodTrimmedId.create("canRunInProcess", null, "5_jSk8paieB"))))) {
canRunInProcess = false;
}
}
if (!(containsTest)) {
return null;
}
JUnitTests_Configuration configuration = ((JUnitTests_Configuration) getConfigurationFactory().createConfiguration("" + SPropertyOperations.getString(SNodeOperations.cast(ListSequence.fromList(source).first(), MetaAdapterFactory.getInterfaceConcept(0xf61473f9130f42f6L, 0xb98d6c438812c2f6L, 0x11b2709bd56L, "jetbrains.mps.baseLanguage.unitTest.structure.ITestCase")), MetaAdapterFactory.getProperty(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L, 0x110396ec041L, "name")) + ",...", (JUnitTests_Configuration) RunManagerImpl.getInstanceImpl(getContext().getProject()).getConfigurationTemplate(getConfigurationFactory()).getConfiguration()));
configuration.getJUnitSettings().setJUnitRunType(JUnitRunTypes.NODE);
configuration.getJUnitSettings().setTestCases(PointerUtils.nodesToCloneableList(source));
configuration.getJUnitSettings().setInProcess(canRunInProcess);
return configuration;
}
@Override
public JUnitTests_Producer.ProducerPart_NlistITestCase_f2w1m9_f clone() {
return (JUnitTests_Producer.ProducerPart_NlistITestCase_f2w1m9_f) super.clone();
}
}
public static final class ProducerPart_NlistITestMethod_f2w1m9_g extends BaseMpsProducer<List<SNode>> {
public ProducerPart_NlistITestMethod_f2w1m9_g(ConfigurationType configurationType, String factoryName) {
super(configurationType, factoryName);
}
@Override
protected boolean isApplicable(Object source) {
if (!(source instanceof List)) {
return false;
}
for (Object obj : (List) source) {
if (!((obj instanceof SNode && SNodeOperations.isInstanceOf(((SNode) obj), MetaAdapterFactory.getInterfaceConcept(0xf61473f9130f42f6L, 0xb98d6c438812c2f6L, 0x11b27438a3dL, "jetbrains.mps.baseLanguage.unitTest.structure.ITestMethod"))))) {
return false;
}
}
return true;
}
@Override
protected JUnitTests_Configuration doCreateConfiguration(final List<SNode> source) {
setSourceElement(MPSPsiElement.createFor(source, getMpsProject()));
JUnitTests_Configuration configuration = ((JUnitTests_Configuration) getConfigurationFactory().createConfiguration("" + ((String) BHReflection.invoke(ListSequence.fromList(source).first(), SMethodTrimmedId.create("getTestName", null, "hGBohAB"))) + ",...", (JUnitTests_Configuration) RunManagerImpl.getInstanceImpl(getContext().getProject()).getConfigurationTemplate(getConfigurationFactory()).getConfiguration()));
configuration.getJUnitSettings().setJUnitRunType(JUnitRunTypes.METHOD);
boolean canRunInProcess = true;
for (SNode testMethod : source) {
SNode testCase = ((SNode) BHReflection.invoke(testMethod, SMethodTrimmedId.create("getTestCase", null, "hGBgWVd")));
if (testCase == null || !(((boolean) (Boolean) BHReflection.invoke(testCase, SMethodTrimmedId.create("canRunInProcess", null, "5_jSk8paieB"))))) {
canRunInProcess = false;
}
}
configuration.getJUnitSettings().setTestMethods(PointerUtils.nodesToCloneableList(source));
configuration.getJUnitSettings().setInProcess(canRunInProcess);
return configuration;
}
@Override
public JUnitTests_Producer.ProducerPart_NlistITestMethod_f2w1m9_g clone() {
return (JUnitTests_Producer.ProducerPart_NlistITestMethod_f2w1m9_g) super.clone();
}
}
}