X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.tests.modelled%2Fsrc%2Forg%2Fsimantics%2Ftests%2Fmodelled%2Fjunit%2Fv2%2FModelledSTSRunner.java;h=393174906afeb46e7530a71cdef4091c818507ec;hp=c74f6efaea0fb0485f377177eba45ecfe26191d2;hb=3e8cd4aef089a228d7f2e141f2b2159f820a4266;hpb=06ee0c4c71cd9e372969da1570e7fcac2c4397a5 diff --git a/bundles/org.simantics.tests.modelled/src/org/simantics/tests/modelled/junit/v2/ModelledSTSRunner.java b/bundles/org.simantics.tests.modelled/src/org/simantics/tests/modelled/junit/v2/ModelledSTSRunner.java index c74f6efae..393174906 100644 --- a/bundles/org.simantics.tests.modelled/src/org/simantics/tests/modelled/junit/v2/ModelledSTSRunner.java +++ b/bundles/org.simantics.tests.modelled/src/org/simantics/tests/modelled/junit/v2/ModelledSTSRunner.java @@ -1,5 +1,7 @@ package org.simantics.tests.modelled.junit.v2; +import java.util.ArrayList; +import java.util.Collection; import java.util.List; import java.util.stream.Collectors; @@ -11,29 +13,74 @@ import org.junit.runner.notification.RunNotifier; import org.junit.runners.ParentRunner; import org.junit.runners.model.InitializationError; import org.simantics.Simantics; +import org.simantics.db.layer0.util.Layer0Utils; import org.simantics.db.testing.common.AcornTests; -import org.simantics.scl.compiler.commands.CommandSession; -import org.simantics.scl.osgi.SCLOsgi; +import org.simantics.tests.modelled.utils.ModelledSTSSuite; import org.simantics.tests.modelled.utils.STSSuiteTestCollector; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class ModelledSTSRunner extends ParentRunner { - private CommandSession commandSession; + private static final Logger LOGGER = LoggerFactory.getLogger(ModelledSTSRunner.class); + + public static final String INCLUSION_FILTER = "org.simantics.tests.modelled.singleTestIncludeFilter"; + public static final String EXCLUSION_FILTER = "org.simantics.tests.modelled.excludeFilter"; + + private final List children; - public ModelledSTSRunner(Class testClass) throws Exception { + public ModelledSTSRunner(Class testClass) throws InitializationError { super(testClass); - initialize0(); + + try { + initialize0(); + Collection suites = STSSuiteTestCollector.collectTests(); + + // Filter exclusions + String exclusionFilter = System.getProperty(EXCLUSION_FILTER); + Collection filtered; + if (exclusionFilter != null) { + String[] filters = exclusionFilter.split(","); + filtered = suites.stream().filter(s -> !startsWithAny(s, filters)).collect(Collectors.toList()); + } else { + filtered = suites; + } + // Filter inclusions +// String inclusionFilter = System.getProperty(INCLUSION_FILTER); +// Collection included; +// if (inclusionFilter != null) { +// String[] filters = inclusionFilter.split(","); +// included = filtered.stream().filter(s -> startsWithAny(s, filters)).collect(Collectors.toList()); +// } else { +// included = filtered; +// } + + // Sort by priority +// List sorted = included.stream().sorted((o1, o2) -> Integer.compare(o1.getPriority(), o2.getPriority())).collect(Collectors.toList()); + List sorted = filtered.stream().sorted((o1, o2) -> Integer.compare(o1.getPriority(), o2.getPriority())).collect(Collectors.toList()); + + + children = new ArrayList<>(sorted.size()); + for (ModelledSTSSuite suite : sorted) { + children.add(new ModelledSTSSuiteRunner(suite)); + } + } catch (Exception e) { + throw new InitializationError(e); + } + } + + private static boolean startsWithAny(ModelledSTSSuite suite, String[] filters) { + for (String filter : filters) { + if (suite.getName().contains(filter)) { + return true; + } + } + return false; } @Override protected List getChildren() { - return STSSuiteTestCollector.collectTests().stream().map(suite -> { - try { - return new ModelledSTSSuiteRunner(suite); - } catch (Exception e) { - throw new RuntimeException(e); - } - }).collect(Collectors.toList()); + return children; } @Override @@ -55,8 +102,12 @@ public class ModelledSTSRunner extends ParentRunner { @Override protected void runChild(ModelledSTSSuiteRunner child, RunNotifier notifier) { - child.setCommandSesssion(commandSession); - child.run(notifier); + try { + child.run(notifier); + } finally { + // Clear query cache + Layer0Utils.queryDebugSupport("QueryControl.flush"); + } // TODO: Add coverage reporting to ModelledSTSRunner // CombinedCoverage cover = child.getCoverage(); // CoverageBuilder b = new CoverageBuilder(); @@ -70,12 +121,13 @@ public class ModelledSTSRunner extends ParentRunner { private void initialize0() throws Exception { AcornTests.newSimanticsWorkspace(null, null); - this.commandSession = new CommandSession(SCLOsgi.MODULE_REPOSITORY, null); + org.simantics.debug.browser.internal.Activator.getDefault().startDebugServer(); initialize(); } private void deinitialize0() throws Exception { deinitialize(); + org.simantics.debug.browser.internal.Activator.getDefault().stopDebugServer(); Simantics.shutdown(new NullProgressMonitor()); } }