]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - tests/org.simantics.scl.osgi.tests/src/org/simantics/scl/osgi/tests/TestSCLOsgi.java
Automatic execution of SCL tests in Maven
[simantics/platform.git] / tests / org.simantics.scl.osgi.tests / src / org / simantics / scl / osgi / tests / TestSCLOsgi.java
diff --git a/tests/org.simantics.scl.osgi.tests/src/org/simantics/scl/osgi/tests/TestSCLOsgi.java b/tests/org.simantics.scl.osgi.tests/src/org/simantics/scl/osgi/tests/TestSCLOsgi.java
new file mode 100644 (file)
index 0000000..35a74c4
--- /dev/null
@@ -0,0 +1,75 @@
+package org.simantics.scl.osgi.tests;\r
+\r
+import java.util.ArrayList;\r
+import java.util.concurrent.atomic.AtomicInteger;\r
+\r
+import org.eclipse.core.runtime.IProgressMonitor;\r
+import org.eclipse.core.runtime.NullProgressMonitor;\r
+import org.junit.AfterClass;\r
+import org.junit.Assert;\r
+import org.junit.BeforeClass;\r
+import org.junit.Test;\r
+import org.simantics.PlatformException;\r
+import org.simantics.Simantics;\r
+import org.simantics.application.arguments.Arguments;\r
+import org.simantics.application.arguments.IArgumentFactory;\r
+import org.simantics.application.arguments.IArguments;\r
+import org.simantics.application.arguments.SimanticsArguments;\r
+import org.simantics.scl.compiler.errors.DoesNotExist;\r
+import org.simantics.scl.compiler.errors.Failable;\r
+import org.simantics.scl.compiler.module.Module;\r
+import org.simantics.scl.osgi.SCLOsgi;\r
+\r
+import gnu.trove.procedure.TObjectProcedure;\r
+\r
+\r
+public class TestSCLOsgi {\r
+    private static IProgressMonitor progress = new NullProgressMonitor();\r
+    \r
+    @BeforeClass\r
+    public static void setupDatabase() throws PlatformException {\r
+        String[] args = new String[0];\r
+        IArgumentFactory<?>[] accepted = {\r
+                SimanticsArguments.RECOVERY_POLICY_FIX_ERRORS,\r
+                SimanticsArguments.ONTOLOGY_RECOVERY_POLICY_REINSTALL,\r
+                SimanticsArguments.SERVER,\r
+                SimanticsArguments.LOCAL_SERVER_PORT,\r
+        };\r
+        IArguments arguments = Arguments.parse(args, accepted);\r
+        Simantics.startUpHeadless(arguments, progress);\r
+    }\r
+    \r
+    @AfterClass\r
+    public static void teardownDatabase() throws PlatformException {\r
+        Simantics.shutdown(progress);\r
+    }\r
+    \r
+    @Test\r
+    public void testDataJsonExists() {\r
+        ArrayList<String> modulesWithErrors = new ArrayList<String>(); \r
+        SCLOsgi.SOURCE_REPOSITORY.forAllModules(new TObjectProcedure<String>() {\r
+            @Override\r
+            public boolean execute(String moduleName) {\r
+                System.out.print(moduleName);\r
+                System.out.print(" - ");\r
+                Failable<Module> module = SCLOsgi.MODULE_REPOSITORY.getModule(moduleName);\r
+                if(module.didSucceed())\r
+                    System.out.println("succeeded");\r
+                else if(module == DoesNotExist.INSTANCE)\r
+                    System.out.println("does not exist"); // should not happen\r
+                else {\r
+                    System.out.println("error");\r
+                    modulesWithErrors.add(moduleName);\r
+                }\r
+                return true;\r
+            }\r
+        });\r
+        if(!modulesWithErrors.isEmpty()) {\r
+            StringBuilder b = new StringBuilder();\r
+            b.append("Some SCL modules failed to compile:");\r
+            for(String module : modulesWithErrors)\r
+                b.append(' ').append(module);\r
+            Assert.fail(b.toString());\r
+        }\r
+    }\r
+}\r