From 15e963de254b6919e3af9bc998bacdf2c33b6a69 Mon Sep 17 00:00:00 2001 From: Alexey Tsvetkov Date: Wed, 13 Aug 2014 17:43:15 +0400 Subject: [PATCH] JS test: turn rhino optimization off for stdlib tests --- .../jetbrains/k2js/test/rhino/RhinoUtils.java | 23 ++++++++++++++++++- .../k2js/test/semantics/JsUnitTestBase.java | 11 +++++---- 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/js/js.tests/test/org/jetbrains/k2js/test/rhino/RhinoUtils.java b/js/js.tests/test/org/jetbrains/k2js/test/rhino/RhinoUtils.java index c38665be933..ce131bc26d5 100644 --- a/js/js.tests/test/org/jetbrains/k2js/test/rhino/RhinoUtils.java +++ b/js/js.tests/test/org/jetbrains/k2js/test/rhino/RhinoUtils.java @@ -41,7 +41,13 @@ public final class RhinoUtils { private static final Set IGNORED_JSHINT_WARNINGS = Sets.newHashSet(); private static final NativeObject JSHINT_OPTIONS = new NativeObject(); - + + public static final String OPTIMIZATION_LEVEL_TEST_VARIABLE = "rhinoOptimizationLevel"; + + public static final int OPTIMIZATION_OFF = -1; + + public static final int OPTIMIZATION_DEFAULT = 0; + @NotNull private static final Map versionToScope = ContainerUtil.newHashMap(); @@ -127,6 +133,11 @@ public final class RhinoUtils { @NotNull EcmaVersion ecmaVersion, @NotNull List jsLibraries) throws Exception { Context context = createContext(ecmaVersion); + + if (variables != null) { + context.setOptimizationLevel(getOptimizationLevel(variables)); + } + try { ScriptableObject scope = getScope(ecmaVersion, context, jsLibraries); putGlobalVariablesIntoScope(scope, variables); @@ -268,4 +279,14 @@ public final class RhinoUtils { } return -1; } + + private static int getOptimizationLevel(@NotNull Map testVariables) { + Object optimizationLevel = testVariables.get(OPTIMIZATION_LEVEL_TEST_VARIABLE); + + if (optimizationLevel instanceof Integer) { + return (Integer) optimizationLevel; + } + + return OPTIMIZATION_DEFAULT; + } } \ No newline at end of file diff --git a/js/js.tests/test/org/jetbrains/k2js/test/semantics/JsUnitTestBase.java b/js/js.tests/test/org/jetbrains/k2js/test/semantics/JsUnitTestBase.java index 44170cedf44..88f646cf266 100644 --- a/js/js.tests/test/org/jetbrains/k2js/test/semantics/JsUnitTestBase.java +++ b/js/js.tests/test/org/jetbrains/k2js/test/semantics/JsUnitTestBase.java @@ -26,11 +26,9 @@ import org.jetbrains.k2js.test.MultipleFilesTranslationTest; import org.jetbrains.k2js.test.config.JsUnitTestReporter; import org.jetbrains.k2js.test.config.TestConfigWithUnitTests; import org.jetbrains.k2js.test.rhino.RhinoSystemOutputChecker; +import org.jetbrains.k2js.test.rhino.RhinoUtils; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map; +import java.util.*; import static org.jetbrains.k2js.test.utils.LibraryFilePathsUtil.getAdditionalLibraryFiles; @@ -103,6 +101,9 @@ public abstract class JsUnitTestBase extends MultipleFilesTranslationTest { @Override protected Map getRhinoTestVariables() throws Exception { - return Collections.singletonMap("jsTestReporter", JS_UNIT_TEST_REPORTER); + Map testVariables = new HashMap(); + testVariables.put(RhinoUtils.OPTIMIZATION_LEVEL_TEST_VARIABLE, RhinoUtils.OPTIMIZATION_OFF); + testVariables.put("jsTestReporter", JS_UNIT_TEST_REPORTER); + return testVariables; } }