[JS SCRIPTING] moved the javascript engines to a separate module
This commit is contained in:
committed by
romanart
parent
bf0b4f6878
commit
f13e05de7d
@@ -0,0 +1,30 @@
|
|||||||
|
import org.gradle.internal.os.OperatingSystem
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
kotlin("jvm")
|
||||||
|
id("jps-compatible")
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
compile(project(":compiler:util"))
|
||||||
|
compile(project(":js:js.ast"))
|
||||||
|
compile(project(":js:js.translator"))
|
||||||
|
compileOnly(intellijCoreDep()) { includeJars("intellij-core") }
|
||||||
|
|
||||||
|
val currentOs = OperatingSystem.current()
|
||||||
|
|
||||||
|
when {
|
||||||
|
currentOs.isWindows -> {
|
||||||
|
val suffix = if (currentOs.toString().endsWith("64")) "_64" else ""
|
||||||
|
compileOnly("com.eclipsesource.j2v8:j2v8_win32_x86$suffix:4.6.0")
|
||||||
|
}
|
||||||
|
currentOs.isMacOsX -> compileOnly("com.eclipsesource.j2v8:j2v8_macosx_x86_64:4.6.0")
|
||||||
|
currentOs.run { isLinux || isUnix } -> compileOnly("com.eclipsesource.j2v8:j2v8_linux_x86_64:4.8.0")
|
||||||
|
else -> logger.error("unsupported platform $currentOs - can not compile com.eclipsesource.j2v8 dependency")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sourceSets {
|
||||||
|
"main" { projectDefault() }
|
||||||
|
"test" {}
|
||||||
|
}
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.jetbrains.kotlin.js.test.interop
|
package org.jetbrains.kotlin.js.engine
|
||||||
|
|
||||||
interface ScriptEngine {
|
interface ScriptEngine {
|
||||||
fun <T> eval(script: String): T
|
fun <T> eval(script: String): T
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.jetbrains.kotlin.js.test.interop
|
package org.jetbrains.kotlin.js.engine
|
||||||
|
|
||||||
import jdk.nashorn.api.scripting.NashornScriptEngineFactory
|
import jdk.nashorn.api.scripting.NashornScriptEngineFactory
|
||||||
import jdk.nashorn.internal.runtime.ScriptRuntime
|
import jdk.nashorn.internal.runtime.ScriptRuntime
|
||||||
+4
-9
@@ -3,20 +3,15 @@
|
|||||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.jetbrains.kotlin.js.test.interop
|
package org.jetbrains.kotlin.js.engine
|
||||||
|
|
||||||
import com.eclipsesource.v8.V8
|
import com.eclipsesource.v8.V8
|
||||||
import com.eclipsesource.v8.V8Array
|
import com.eclipsesource.v8.V8Array
|
||||||
import com.eclipsesource.v8.V8Object
|
import com.eclipsesource.v8.V8Object
|
||||||
import com.eclipsesource.v8.utils.V8ObjectUtils
|
import com.eclipsesource.v8.utils.V8ObjectUtils
|
||||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
class ScriptEngineV8 : ScriptEngine {
|
class ScriptEngineV8(LIBRARY_PATH_BASE: String) : ScriptEngine {
|
||||||
companion object {
|
|
||||||
// It's important that this is not created per test, but rather per process.
|
|
||||||
val LIBRARY_PATH_BASE = KotlinTestUtils.tmpDirForReusableFolder("j2v8_library_path").path
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun <T> releaseObject(t: T) {
|
override fun <T> releaseObject(t: T) {
|
||||||
(t as? V8Object)?.release()
|
(t as? V8Object)?.release()
|
||||||
@@ -82,7 +77,7 @@ class ScriptEngineV8 : ScriptEngine {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class ScriptEngineV8Lazy : ScriptEngine {
|
class ScriptEngineV8Lazy(LIBRARY_PATH_BASE: String) : ScriptEngine {
|
||||||
override fun <T> eval(script: String) = engine.eval<T>(script)
|
override fun <T> eval(script: String) = engine.eval<T>(script)
|
||||||
|
|
||||||
override fun saveState() = engine.saveState()
|
override fun saveState() = engine.saveState()
|
||||||
@@ -99,5 +94,5 @@ class ScriptEngineV8Lazy : ScriptEngine {
|
|||||||
|
|
||||||
override fun restoreState() = engine.restoreState()
|
override fun restoreState() = engine.restoreState()
|
||||||
|
|
||||||
private val engine by lazy { ScriptEngineV8() }
|
private val engine by lazy { ScriptEngineV8(LIBRARY_PATH_BASE) }
|
||||||
}
|
}
|
||||||
@@ -35,10 +35,28 @@ dependencies {
|
|||||||
testCompile(project(":js:js.translator"))
|
testCompile(project(":js:js.translator"))
|
||||||
testCompile(project(":js:js.serializer"))
|
testCompile(project(":js:js.serializer"))
|
||||||
testCompile(project(":js:js.dce"))
|
testCompile(project(":js:js.dce"))
|
||||||
|
testCompile(project(":js:js.engines"))
|
||||||
testCompile(commonDep("junit:junit"))
|
testCompile(commonDep("junit:junit"))
|
||||||
testCompile(projectTests(":kotlin-build-common"))
|
testCompile(projectTests(":kotlin-build-common"))
|
||||||
testCompile(projectTests(":generators:test-generator"))
|
testCompile(projectTests(":generators:test-generator"))
|
||||||
|
|
||||||
|
val currentOs = OperatingSystem.current()
|
||||||
|
|
||||||
|
val j2v8idString = when {
|
||||||
|
currentOs.isWindows -> {
|
||||||
|
val suffix = if (currentOs.toString().endsWith("64")) "_64" else ""
|
||||||
|
"com.eclipsesource.j2v8:j2v8_win32_x86$suffix:4.6.0"
|
||||||
|
}
|
||||||
|
currentOs.isMacOsX -> "com.eclipsesource.j2v8:j2v8_macosx_x86_64:4.6.0"
|
||||||
|
currentOs.run { isLinux || isUnix } -> "com.eclipsesource.j2v8:j2v8_linux_x86_64:4.8.0"
|
||||||
|
else -> {
|
||||||
|
logger.error("unsupported platform $currentOs - can not compile com.eclipsesource.j2v8 dependency")
|
||||||
|
"j2v8:$currentOs"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
testCompile(j2v8idString)
|
||||||
|
|
||||||
testRuntime(kotlinStdlib())
|
testRuntime(kotlinStdlib())
|
||||||
testJsRuntime(kotlinStdlib("js"))
|
testJsRuntime(kotlinStdlib("js"))
|
||||||
testJsRuntime(project(":kotlin-test:kotlin-test-js")) // to be sure that kotlin-test-js built before tests runned
|
testJsRuntime(project(":kotlin-test:kotlin-test-js")) // to be sure that kotlin-test-js built before tests runned
|
||||||
@@ -46,18 +64,6 @@ dependencies {
|
|||||||
testRuntime(project(":kotlin-preloader")) // it's required for ant tests
|
testRuntime(project(":kotlin-preloader")) // it's required for ant tests
|
||||||
testRuntime(project(":compiler:backend-common"))
|
testRuntime(project(":compiler:backend-common"))
|
||||||
testRuntime(commonDep("org.fusesource.jansi", "jansi"))
|
testRuntime(commonDep("org.fusesource.jansi", "jansi"))
|
||||||
|
|
||||||
val currentOs = OperatingSystem.current()
|
|
||||||
|
|
||||||
when {
|
|
||||||
currentOs.isWindows -> {
|
|
||||||
val suffix = if (currentOs.toString().endsWith("64")) "_64" else ""
|
|
||||||
testCompile("com.eclipsesource.j2v8:j2v8_win32_x86$suffix:4.6.0")
|
|
||||||
}
|
|
||||||
currentOs.isMacOsX -> testCompile("com.eclipsesource.j2v8:j2v8_macosx_x86_64:4.6.0")
|
|
||||||
currentOs.run { isLinux || isUnix } -> testCompile("com.eclipsesource.j2v8:j2v8_linux_x86_64:4.8.0")
|
|
||||||
else -> logger.error("unsupported platform $currentOs - can not compile com.eclipsesource.j2v8 dependency")
|
|
||||||
}
|
|
||||||
|
|
||||||
antLauncherJar(commonDep("org.apache.ant", "ant"))
|
antLauncherJar(commonDep("org.apache.ant", "ant"))
|
||||||
antLauncherJar(toolsJar())
|
antLauncherJar(toolsJar())
|
||||||
|
|||||||
@@ -35,6 +35,8 @@ import org.jetbrains.kotlin.js.config.SourceMapSourceEmbedding
|
|||||||
import org.jetbrains.kotlin.js.dce.DeadCodeElimination
|
import org.jetbrains.kotlin.js.dce.DeadCodeElimination
|
||||||
import org.jetbrains.kotlin.js.dce.InputFile
|
import org.jetbrains.kotlin.js.dce.InputFile
|
||||||
import org.jetbrains.kotlin.js.dce.InputResource
|
import org.jetbrains.kotlin.js.dce.InputResource
|
||||||
|
import org.jetbrains.kotlin.js.engine.ScriptEngineNashorn
|
||||||
|
import org.jetbrains.kotlin.js.engine.ScriptEngineV8Lazy
|
||||||
import org.jetbrains.kotlin.js.facade.*
|
import org.jetbrains.kotlin.js.facade.*
|
||||||
import org.jetbrains.kotlin.js.parser.parse
|
import org.jetbrains.kotlin.js.parser.parse
|
||||||
import org.jetbrains.kotlin.js.parser.sourcemaps.SourceMapError
|
import org.jetbrains.kotlin.js.parser.sourcemaps.SourceMapError
|
||||||
@@ -43,8 +45,6 @@ import org.jetbrains.kotlin.js.parser.sourcemaps.SourceMapParser
|
|||||||
import org.jetbrains.kotlin.js.parser.sourcemaps.SourceMapSuccess
|
import org.jetbrains.kotlin.js.parser.sourcemaps.SourceMapSuccess
|
||||||
import org.jetbrains.kotlin.js.sourceMap.SourceFilePathResolver
|
import org.jetbrains.kotlin.js.sourceMap.SourceFilePathResolver
|
||||||
import org.jetbrains.kotlin.js.sourceMap.SourceMap3Builder
|
import org.jetbrains.kotlin.js.sourceMap.SourceMap3Builder
|
||||||
import org.jetbrains.kotlin.js.test.interop.ScriptEngineNashorn
|
|
||||||
import org.jetbrains.kotlin.js.test.interop.ScriptEngineV8Lazy
|
|
||||||
import org.jetbrains.kotlin.js.test.utils.*
|
import org.jetbrains.kotlin.js.test.utils.*
|
||||||
import org.jetbrains.kotlin.js.util.TextOutputImpl
|
import org.jetbrains.kotlin.js.util.TextOutputImpl
|
||||||
import org.jetbrains.kotlin.metadata.DebugProtoBuf
|
import org.jetbrains.kotlin.metadata.DebugProtoBuf
|
||||||
@@ -869,6 +869,8 @@ abstract class BasicBoxTest(
|
|||||||
private val OLD_MODULE_SUFFIX = "-old"
|
private val OLD_MODULE_SUFFIX = "-old"
|
||||||
|
|
||||||
const val KOTLIN_TEST_INTERNAL = "\$kotlin_test_internal\$"
|
const val KOTLIN_TEST_INTERNAL = "\$kotlin_test_internal\$"
|
||||||
private val engineForMinifier = if (runTestInNashorn) ScriptEngineNashorn() else ScriptEngineV8Lazy()
|
private val engineForMinifier =
|
||||||
|
if (runTestInNashorn) ScriptEngineNashorn()
|
||||||
|
else ScriptEngineV8Lazy(KotlinTestUtils.tmpDirForReusableFolder("j2v8_library_path").path)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,9 +5,10 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.js.test
|
package org.jetbrains.kotlin.js.test
|
||||||
|
|
||||||
import org.jetbrains.kotlin.js.test.interop.ScriptEngine
|
import org.jetbrains.kotlin.js.engine.ScriptEngine
|
||||||
import org.jetbrains.kotlin.js.test.interop.ScriptEngineNashorn
|
import org.jetbrains.kotlin.js.engine.ScriptEngineNashorn
|
||||||
import org.jetbrains.kotlin.js.test.interop.ScriptEngineV8
|
import org.jetbrains.kotlin.js.engine.ScriptEngineV8
|
||||||
|
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||||
import org.junit.Assert
|
import org.junit.Assert
|
||||||
|
|
||||||
fun createScriptEngine(): ScriptEngine {
|
fun createScriptEngine(): ScriptEngine {
|
||||||
@@ -180,7 +181,7 @@ object V8JsTestChecker : AbstractV8JsTestChecker() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun createV8Engine(): ScriptEngineV8 {
|
private fun createV8Engine(): ScriptEngineV8 {
|
||||||
val v8 = ScriptEngineV8()
|
val v8 = ScriptEngineV8(KotlinTestUtils.tmpDirForReusableFolder("j2v8_library_path").path)
|
||||||
|
|
||||||
listOf(
|
listOf(
|
||||||
BasicBoxTest.DIST_DIR_JS_PATH + "kotlin.js",
|
BasicBoxTest.DIST_DIR_JS_PATH + "kotlin.js",
|
||||||
@@ -202,7 +203,7 @@ object V8JsTestChecker : AbstractV8JsTestChecker() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
object V8IrJsTestChecker : AbstractV8JsTestChecker() {
|
object V8IrJsTestChecker : AbstractV8JsTestChecker() {
|
||||||
override val engine get() = ScriptEngineV8()
|
override val engine get() = ScriptEngineV8(KotlinTestUtils.tmpDirForReusableFolder("j2v8_library_path").path)
|
||||||
|
|
||||||
override fun run(files: List<String>, f: ScriptEngine.() -> Any?): Any? {
|
override fun run(files: List<String>, f: ScriptEngine.() -> Any?): Any? {
|
||||||
|
|
||||||
|
|||||||
@@ -78,6 +78,7 @@ include ":kotlin-build-common",
|
|||||||
":js:js.ast",
|
":js:js.ast",
|
||||||
":js:js.serializer",
|
":js:js.serializer",
|
||||||
":js:js.parser",
|
":js:js.parser",
|
||||||
|
":js:js.engines",
|
||||||
":js:js.frontend",
|
":js:js.frontend",
|
||||||
":js:js.translator",
|
":js:js.translator",
|
||||||
":js:js.dce",
|
":js:js.dce",
|
||||||
@@ -196,6 +197,8 @@ include ":kotlin-build-common",
|
|||||||
":kotlin-annotations-jvm",
|
":kotlin-annotations-jvm",
|
||||||
":kotlin-annotations-android",
|
":kotlin-annotations-android",
|
||||||
":kotlin-scripting-common",
|
":kotlin-scripting-common",
|
||||||
|
':kotlin-scripting-js',
|
||||||
|
':kotlin-scripting-js-test',
|
||||||
":kotlin-scripting-jvm",
|
":kotlin-scripting-jvm",
|
||||||
":kotlin-scripting-jvm-host",
|
":kotlin-scripting-jvm-host",
|
||||||
":kotlin-scripting-jvm-host-test",
|
":kotlin-scripting-jvm-host-test",
|
||||||
@@ -384,6 +387,8 @@ project(':examples:kotlin-jsr223-daemon-local-eval-example').projectDir = "$root
|
|||||||
project(':kotlin-annotations-jvm').projectDir = "$rootDir/libraries/tools/kotlin-annotations-jvm" as File
|
project(':kotlin-annotations-jvm').projectDir = "$rootDir/libraries/tools/kotlin-annotations-jvm" as File
|
||||||
project(':kotlin-annotations-android').projectDir = "$rootDir/libraries/tools/kotlin-annotations-android" as File
|
project(':kotlin-annotations-android').projectDir = "$rootDir/libraries/tools/kotlin-annotations-android" as File
|
||||||
project(':kotlin-scripting-common').projectDir = "$rootDir/libraries/scripting/common" as File
|
project(':kotlin-scripting-common').projectDir = "$rootDir/libraries/scripting/common" as File
|
||||||
|
project(':kotlin-scripting-js').projectDir = "$rootDir/libraries/scripting/js" as File
|
||||||
|
project(':kotlin-scripting-js-test').projectDir = "$rootDir/libraries/scripting/js-test" as File
|
||||||
project(':kotlin-scripting-jvm').projectDir = "$rootDir/libraries/scripting/jvm" as File
|
project(':kotlin-scripting-jvm').projectDir = "$rootDir/libraries/scripting/jvm" as File
|
||||||
project(':kotlin-scripting-jvm-host').projectDir = "$rootDir/libraries/scripting/jvm-host" as File
|
project(':kotlin-scripting-jvm-host').projectDir = "$rootDir/libraries/scripting/jvm-host" as File
|
||||||
project(':kotlin-scripting-jvm-host-test').projectDir = "$rootDir/libraries/scripting/jvm-host-test" as File
|
project(':kotlin-scripting-jvm-host-test').projectDir = "$rootDir/libraries/scripting/jvm-host-test" as File
|
||||||
@@ -410,6 +415,9 @@ project(':libraries:kotlin-prepush-hook').projectDir = "$rootDir/libraries/tools
|
|||||||
project(':plugins:jvm-abi-gen').projectDir = "$rootDir/plugins/jvm-abi-gen" as File
|
project(':plugins:jvm-abi-gen').projectDir = "$rootDir/plugins/jvm-abi-gen" as File
|
||||||
project(':plugins:jvm-abi-gen-embeddable').projectDir = "$rootDir/plugins/jvm-abi-gen/embeddable" as File
|
project(':plugins:jvm-abi-gen-embeddable').projectDir = "$rootDir/plugins/jvm-abi-gen/embeddable" as File
|
||||||
|
|
||||||
|
project(':js:js.tests').projectDir = "$rootDir/js/js.tests" as File
|
||||||
|
project(':js:js.engines').projectDir = "$rootDir/js/js.engines" as File
|
||||||
|
|
||||||
// plugin markers:
|
// plugin markers:
|
||||||
project(':kotlin-gradle-plugin:plugin-marker').projectDir = file("$rootDir/libraries/tools/kotlin-gradle-plugin/plugin-marker")
|
project(':kotlin-gradle-plugin:plugin-marker').projectDir = file("$rootDir/libraries/tools/kotlin-gradle-plugin/plugin-marker")
|
||||||
project(':kotlin-allopen:plugin-marker').projectDir = file("$rootDir/libraries/tools/kotlin-allopen/plugin-marker")
|
project(':kotlin-allopen:plugin-marker').projectDir = file("$rootDir/libraries/tools/kotlin-allopen/plugin-marker")
|
||||||
|
|||||||
Reference in New Issue
Block a user