]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.tests.modelled/src/org/simantics/tests/modelled/junit/v2/ModelledSTSRunner.java
Fixing NPE with modelled tests
[simantics/platform.git] / bundles / org.simantics.tests.modelled / src / org / simantics / tests / modelled / junit / v2 / ModelledSTSRunner.java
index e77224b58c72caa59b1e290831e817803844368e..29628cec061e8b4ef5117da84d45947524cd3893 100644 (file)
@@ -3,6 +3,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;
 
 import org.eclipse.core.runtime.NullProgressMonitor;
 import org.junit.runner.Description;
@@ -18,6 +19,8 @@ import org.simantics.tests.modelled.utils.STSSuiteTestCollector;
 
 public class ModelledSTSRunner extends ParentRunner<ModelledSTSSuiteRunner> {
 
+    public static final String EXCLUSION_FILTER = "org.simantics.tests.modelled.excludeFilter";
+    
     private final List<ModelledSTSSuiteRunner> children;
 
     public ModelledSTSRunner(Class<?> testClass) throws InitializationError {
@@ -25,8 +28,20 @@ public class ModelledSTSRunner extends ParentRunner<ModelledSTSSuiteRunner> {
         try {
             initialize0();
             Collection<ModelledSTSSuite> suites = STSSuiteTestCollector.collectTests();
-            children = new ArrayList<>(suites.size());
-            for (ModelledSTSSuite suite : suites) {
+            String exclusionFilter = System.getProperty(EXCLUSION_FILTER);
+            Collection<ModelledSTSSuite> filtered;
+            if (exclusionFilter != null) {
+                String[] filters = exclusionFilter.split(",");
+                filtered = suites.stream().filter(s -> !startsWithAny(s, filters)).collect(Collectors.toList());
+            } else {
+                filtered = suites;
+            }
+            // Sort by priority
+            List<ModelledSTSSuite> 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) {
@@ -34,6 +49,15 @@ public class ModelledSTSRunner extends ParentRunner<ModelledSTSSuiteRunner> {
         }
     }
 
+    private static boolean startsWithAny(ModelledSTSSuite suite, String[] filters) {
+        for (String filter : filters) {
+            if (suite.getName().contains(filter)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
     @Override
     protected List<ModelledSTSSuiteRunner> getChildren() {
         return children;