]> gerrit.simantics Code Review - simantics/platform.git/blob - 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
1 package org.simantics.scl.osgi.tests;\r
2 \r
3 import java.util.ArrayList;\r
4 import java.util.concurrent.atomic.AtomicInteger;\r
5 \r
6 import org.eclipse.core.runtime.IProgressMonitor;\r
7 import org.eclipse.core.runtime.NullProgressMonitor;\r
8 import org.junit.AfterClass;\r
9 import org.junit.Assert;\r
10 import org.junit.BeforeClass;\r
11 import org.junit.Test;\r
12 import org.simantics.PlatformException;\r
13 import org.simantics.Simantics;\r
14 import org.simantics.application.arguments.Arguments;\r
15 import org.simantics.application.arguments.IArgumentFactory;\r
16 import org.simantics.application.arguments.IArguments;\r
17 import org.simantics.application.arguments.SimanticsArguments;\r
18 import org.simantics.scl.compiler.errors.DoesNotExist;\r
19 import org.simantics.scl.compiler.errors.Failable;\r
20 import org.simantics.scl.compiler.module.Module;\r
21 import org.simantics.scl.osgi.SCLOsgi;\r
22 \r
23 import gnu.trove.procedure.TObjectProcedure;\r
24 \r
25 \r
26 public class TestSCLOsgi {\r
27     private static IProgressMonitor progress = new NullProgressMonitor();\r
28     \r
29     @BeforeClass\r
30     public static void setupDatabase() throws PlatformException {\r
31         String[] args = new String[0];\r
32         IArgumentFactory<?>[] accepted = {\r
33                 SimanticsArguments.RECOVERY_POLICY_FIX_ERRORS,\r
34                 SimanticsArguments.ONTOLOGY_RECOVERY_POLICY_REINSTALL,\r
35                 SimanticsArguments.SERVER,\r
36                 SimanticsArguments.LOCAL_SERVER_PORT,\r
37         };\r
38         IArguments arguments = Arguments.parse(args, accepted);\r
39         Simantics.startUpHeadless(arguments, progress);\r
40     }\r
41     \r
42     @AfterClass\r
43     public static void teardownDatabase() throws PlatformException {\r
44         Simantics.shutdown(progress);\r
45     }\r
46     \r
47     @Test\r
48     public void testDataJsonExists() {\r
49         ArrayList<String> modulesWithErrors = new ArrayList<String>(); \r
50         SCLOsgi.SOURCE_REPOSITORY.forAllModules(new TObjectProcedure<String>() {\r
51             @Override\r
52             public boolean execute(String moduleName) {\r
53                 System.out.print(moduleName);\r
54                 System.out.print(" - ");\r
55                 Failable<Module> module = SCLOsgi.MODULE_REPOSITORY.getModule(moduleName);\r
56                 if(module.didSucceed())\r
57                     System.out.println("succeeded");\r
58                 else if(module == DoesNotExist.INSTANCE)\r
59                     System.out.println("does not exist"); // should not happen\r
60                 else {\r
61                     System.out.println("error");\r
62                     modulesWithErrors.add(moduleName);\r
63                 }\r
64                 return true;\r
65             }\r
66         });\r
67         if(!modulesWithErrors.isEmpty()) {\r
68             StringBuilder b = new StringBuilder();\r
69             b.append("Some SCL modules failed to compile:");\r
70             for(String module : modulesWithErrors)\r
71                 b.append(' ').append(module);\r
72             Assert.fail(b.toString());\r
73         }\r
74     }\r
75 }\r