]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - tests/org.simantics.scl.compiler.tests/src/org/simantics/scl/compiler/tests/TestBase.java
(refs #7250) CHR bugfixes, cleaning up unit tests
[simantics/platform.git] / tests / org.simantics.scl.compiler.tests / src / org / simantics / scl / compiler / tests / TestBase.java
index 2dfaafee3660907b6b493e86e9ded837379ce17f..fa90f524cb4364386de2d71ff13c64209877702a 100644 (file)
@@ -2,6 +2,7 @@ package org.simantics.scl.compiler.tests;
 
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.StringWriter;
 import java.nio.charset.Charset;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -12,12 +13,16 @@ import org.simantics.scl.compiler.errors.Failable;
 import org.simantics.scl.compiler.errors.Failure;
 import org.simantics.scl.compiler.module.ImportDeclaration;
 import org.simantics.scl.compiler.module.Module;
+import org.simantics.scl.compiler.module.options.ModuleCompilationOptions;
 import org.simantics.scl.compiler.module.repository.ModuleRepository;
 import org.simantics.scl.compiler.module.repository.UpdateListener;
 import org.simantics.scl.compiler.source.ModuleSource;
 import org.simantics.scl.compiler.source.StringModuleSource;
 import org.simantics.scl.compiler.source.repository.MapModuleSourceRepository;
 import org.simantics.scl.compiler.top.ValueNotFound;
+import org.simantics.scl.runtime.SCLContext;
+import org.simantics.scl.runtime.reporting.SCLReportingHandler;
+import org.simantics.scl.runtime.reporting.WriterSCLReportingHandler;
 
 public class TestBase {
     
@@ -93,16 +98,25 @@ public class TestBase {
                     return ImportDeclaration.ONLY_BUILTINS;
                 }
             };
-        ModuleRepository testEnvironment = new ModuleRepository(
+        ModuleRepository testRepository = new ModuleRepository(
                 PRELUDE_MODULE_REPOSITORY,
                 new MapModuleSourceRepository(moduleSources));
+        testRepository.setAdvisor(moduleName -> ModuleCompilationOptions.SILENT);
         int lastId = moduleNames.length-1;
-        Failable<Module> result = testEnvironment.getModule(moduleNames[lastId]);
+        Failable<Module> result = testRepository.getModule(moduleNames[lastId]);
         if(!result.didSucceed())
             return ((Failure)result).toString(moduleTexts[lastId]);
         else {
-            Object main = testEnvironment.getRuntimeModule(moduleNames[lastId]).getResult().getValue("main");
-            return String.valueOf(main);
+            SCLContext context = SCLContext.getCurrent();
+            StringWriter writer = new StringWriter();
+            Object oldReportingHandler = context.put(SCLReportingHandler.REPORTING_HANDLER, new WriterSCLReportingHandler(writer));
+            try {
+                Object main = testRepository.getRuntimeModule(moduleNames[lastId]).getResult().getValue("main");
+                writer.write(String.valueOf(main));
+                return writer.toString();
+            } finally {
+                context.put(SCLReportingHandler.REPORTING_HANDLER, oldReportingHandler);
+            }
         }
     }