From a5c530257370dfe9408aa7f1b13ea8c5e6d632a6 Mon Sep 17 00:00:00 2001 From: Philipp Hanslovsky Date: Sat, 10 Apr 2021 13:02:55 -0400 Subject: [PATCH 1/3] Remove dependency on scijava-common test jar --- pom.xml | 6 ------ .../scijava/plugins/scripting/kotlin/KotlinTest.kt | 14 +++++++++++--- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/pom.xml b/pom.xml index 7881e7e..6df6b97 100644 --- a/pom.xml +++ b/pom.xml @@ -137,12 +137,6 @@ Wisconsin-Madison. junit test - - org.scijava - scijava-common - tests - test - diff --git a/src/test/kotlin/org/scijava/plugins/scripting/kotlin/KotlinTest.kt b/src/test/kotlin/org/scijava/plugins/scripting/kotlin/KotlinTest.kt index 08b6c5c..3efb6e5 100644 --- a/src/test/kotlin/org/scijava/plugins/scripting/kotlin/KotlinTest.kt +++ b/src/test/kotlin/org/scijava/plugins/scripting/kotlin/KotlinTest.kt @@ -33,26 +33,27 @@ import org.junit.Assert import org.junit.BeforeClass import org.junit.Test import org.scijava.Context -import org.scijava.script.AbstractScriptLanguageTest import org.scijava.script.ScriptLanguage import org.scijava.script.ScriptService import java.io.IOException import java.util.concurrent.ExecutionException import javax.script.ScriptContext import javax.script.ScriptEngine +import javax.script.ScriptEngineManager import javax.script.ScriptException import kotlin.math.E + /** * Kotlin unit tests. * * @author Curtis Rueden * @author Philipp Hanslovsky */ -class KotlinTest : AbstractScriptLanguageTest() { +class KotlinTest { @Test - fun testDiscovery() = assertDiscovered(KotlinScriptLanguage::class.java) + fun testDiscovery() = KotlinScriptLanguage::class.java.assertDiscovered() @Test @Throws(InterruptedException::class, ExecutionException::class, IOException::class, ScriptException::class) @@ -90,4 +91,11 @@ class KotlinTest : AbstractScriptLanguageTest() { private lateinit var _engine: ScriptEngine val engine get() = _engine } +} + +fun Class.assertDiscovered() { + ScriptEngineManager() + .engineFactories + .firstOrNull { isInstance(it) } + ?: Assert.fail("$name not discovered by JSR-223 framework") } \ No newline at end of file From 035ced4d082aed80566fb8d14c9714b03373425b Mon Sep 17 00:00:00 2001 From: Philipp Hanslovsky Date: Sat, 10 Apr 2021 13:04:07 -0400 Subject: [PATCH 2/3] Exclude org.jetbrains.kotlin:kotlin-script-runtime from shaded jar kotlin-script-runtime would be installed alongside shaded jar into Fiji.app/jars directory and cause duplicate classes issue. --- pom.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/pom.xml b/pom.xml index 6df6b97..e4c4763 100644 --- a/pom.xml +++ b/pom.xml @@ -170,7 +170,6 @@ Wisconsin-Madison. org.jetbrains.intellij.deps:trove4j org.jetbrains.kotlin:kotlin-compiler-embeddable - org.jetbrains.kotlin:kotlin-script-runtime org.jetbrains.kotlin:kotlin-reflect org.jetbrains.kotlin:kotlin-daemon-embeddable From 14f81b561f851ca786c001508cf85442836e9b88 Mon Sep 17 00:00:00 2001 From: Philipp Hanslovsky Date: Sat, 10 Apr 2021 22:02:37 -0400 Subject: [PATCH 3/3] Include kotlin-scripting-jsr223 in shaded jar --- pom.xml | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index e4c4763..53071bb 100644 --- a/pom.xml +++ b/pom.xml @@ -95,7 +95,7 @@ Wisconsin-Madison. 3.2.4 - false + false 2.1.0 @@ -118,7 +118,7 @@ Wisconsin-Madison. org.jetbrains.kotlin kotlin-compiler-embeddable ${kotlin.version} - ${kotlin-compiler-embeddable.optional} + ${shaded-jars.optional} org.jetbrains.kotlin @@ -129,6 +129,7 @@ Wisconsin-Madison. org.jetbrains.kotlin kotlin-scripting-jsr223 ${kotlin.version} + ${shaded-jars.optional} @@ -150,7 +151,7 @@ Wisconsin-Madison. - true + true true @@ -172,6 +173,14 @@ Wisconsin-Madison. org.jetbrains.kotlin:kotlin-compiler-embeddable org.jetbrains.kotlin:kotlin-reflect org.jetbrains.kotlin:kotlin-daemon-embeddable + org.jetbrains.kotlin:kotlin-script-runtime + org.jetbrains.kotlin:kotlin-scripting-jsr223 + org.jetbrains.kotlin:kotlin-scripting-common + org.jetbrains.kotlinx:kotlinx-coroutines-core + org.jetbrains.kotlin:kotlin-scripting-jvm + org.jetbrains.kotlin:kotlin-scripting-jvm-host + org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable + org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable