X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.tests.modelled%2Fsrc%2Forg%2Fsimantics%2Ftests%2Fmodelled%2Futils%2FSTSSuiteTestCollector.java;h=e04144f6d003e073cca780f33fb04bd37e6bf9f5;hb=refs%2Fchanges%2F87%2F3887%2F5;hp=58aa323e1e98e5053380b1579eaf2c27823f4e85;hpb=9c866c82a391db00ae11913c61d39d7dc46b14d0;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.tests.modelled/src/org/simantics/tests/modelled/utils/STSSuiteTestCollector.java b/bundles/org.simantics.tests.modelled/src/org/simantics/tests/modelled/utils/STSSuiteTestCollector.java index 58aa323e1..e04144f6d 100644 --- a/bundles/org.simantics.tests.modelled/src/org/simantics/tests/modelled/utils/STSSuiteTestCollector.java +++ b/bundles/org.simantics.tests.modelled/src/org/simantics/tests/modelled/utils/STSSuiteTestCollector.java @@ -7,6 +7,7 @@ import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.regex.Pattern; import org.simantics.Simantics; @@ -15,7 +16,9 @@ import org.simantics.db.ReadGraph; import org.simantics.db.Resource; import org.simantics.db.common.request.ObjectsWithType; import org.simantics.db.common.request.UniqueRead; +import org.simantics.db.common.utils.CommonDBUtils; import org.simantics.db.exception.DatabaseException; +import org.simantics.db.layer0.QueryIndexUtils; import org.simantics.layer0.Layer0; import org.simantics.modeling.ModelingUtils; import org.simantics.scl.compiler.commands.CommandSession; @@ -52,7 +55,7 @@ public class STSSuiteTestCollector { for (Resource sharedOntology : sharedOntologies) { if (LOGGER.isInfoEnabled()) LOGGER.info("Searching {} for modelled tests", graph.getURI(sharedOntology)); - List stsSuites = ModelingUtils.searchByType(graph, sharedOntology, TESTS.STSSuite); + List stsSuites = QueryIndexUtils.searchByType(graph, sharedOntology, TESTS.STSSuite); for (Resource stsSuite : stsSuites) { try { Collection tests = graph.syncRequest(new ObjectsWithType(stsSuite, L0.ConsistsOf, TESTS.STSTest)); @@ -76,7 +79,27 @@ public class STSSuiteTestCollector { } + public static void collectTestImports(ReadGraph graph, Resource resource, Set imports) throws DatabaseException { + Layer0 L0 = Layer0.getInstance(graph); + TestsResource TESTS = TestsResource.getInstance(graph); + if(graph.isInstanceOf(resource, TESTS.STSTest) || graph.isInstanceOf(resource, TESTS.STSSuite)) { + for(Resource module : CommonDBUtils.objectsWithType(graph, resource, L0.ConsistsOf, L0.SCLModule)) { + String uri = graph.getPossibleURI(module); + if(uri != null) + imports.add(uri); + } + Resource parent = graph.getPossibleObject(resource, L0.PartOf); + if(parent != null) + collectTestImports(graph, parent, imports); + } else if(graph.isInstanceOf(resource, L0.IndexRoot)) { + Resource sclMain = CommonDBUtils.getPossibleChild(graph, resource, L0.SCLModule, "SCLMain"); + if(sclMain != null) + imports.add(graph.getURI(sclMain)); + } + } + public static ModelledSTSTest toModelledTest(ReadGraph graph, Resource test) throws DatabaseException { + Layer0 L0 = Layer0.getInstance(graph); TestsResource TESTS = TestsResource.getInstance(graph); String testName = graph.getRelatedValue(test, L0.HasName, Bindings.STRING); @@ -88,14 +111,26 @@ public class STSSuiteTestCollector { String[] actualDeps = dependencies.isEmpty() ? new String[0] : dependencies.split(","); // collect variables - Collection stsVariables = graph.getObjects(test, L0.ConsistsOf); + Collection stsVariables = CommonDBUtils.objectsWithType(graph, test, L0.ConsistsOf, TESTS.STSVariable); Map variables = new HashMap<>(stsVariables.size()); for (Resource stsVariable : stsVariables) { String name = graph.getRelatedValue(stsVariable, L0.HasName, Bindings.STRING); String value = graph.getRelatedValue(stsVariable, TESTS.STSVariable_definition); variables.put(name, value); } - return new ModelledSTSTest(testName, code, priority != null ? priority : -1, ignored != null ? ignored : false, new HashSet<>(Arrays.asList(actualDeps)), variables); + + Set imports = new HashSet<>(); + collectTestImports(graph, test, imports); + + Resource parent = graph.getSingleObject(test, L0.PartOf); + String parentName; + String possibleURI = graph.getPossibleURI(parent); + if (possibleURI != null) + parentName = possibleURI; + else + parentName = graph.getRelatedValue2(parent, L0.HasName, Bindings.STRING); + return new ModelledSTSTest(testName, parentName, code, priority != null ? priority : -1, ignored != null ? ignored : false, imports, new HashSet<>(Arrays.asList(actualDeps)), variables); + } public static ModelledSTSSuite toModelledSuite(ReadGraph graph, Resource suite, List children) throws DatabaseException {