@@ -25,20 +25,50 @@ import io.kotest.matchers.shouldNotBe
2525import io.kotest.matchers.string.shouldContain
2626import io.kotest.matchers.types.shouldBeInstanceOf
2727import jupyter.kotlin.DependsOn
28+ import kotlinx.serialization.decodeFromString
29+ import kotlinx.serialization.encodeToString
30+ import kotlinx.serialization.json.Json
2831import org.apache.spark.SparkConf
2932import org.apache.spark.api.java.JavaSparkContext
3033import org.intellij.lang.annotations.Language
3134import org.jetbrains.kotlinx.jupyter.EvalRequestData
3235import org.jetbrains.kotlinx.jupyter.ReplForJupyter
36+ import org.jetbrains.kotlinx.jupyter.ReplForJupyterImpl
3337import org.jetbrains.kotlinx.jupyter.api.Code
38+ import org.jetbrains.kotlinx.jupyter.api.KotlinKernelHost
3439import org.jetbrains.kotlinx.jupyter.api.MimeTypedResult
40+ import org.jetbrains.kotlinx.jupyter.api.libraries.*
41+ import org.jetbrains.kotlinx.jupyter.dependencies.ResolverConfig
42+ import org.jetbrains.kotlinx.jupyter.libraries.EmptyResolutionInfoProvider
43+ import org.jetbrains.kotlinx.jupyter.libraries.LibrariesScanner
44+ import org.jetbrains.kotlinx.jupyter.libraries.LibraryResolver
3545import org.jetbrains.kotlinx.jupyter.libraries.buildDependenciesInitCode
3646import org.jetbrains.kotlinx.jupyter.repl.EvalResultEx
3747import org.jetbrains.kotlinx.jupyter.testkit.ReplProvider
48+ import org.jetbrains.kotlinx.jupyter.util.NameAcceptanceRule
49+ import org.jetbrains.kotlinx.jupyter.util.PatternNameAcceptanceRule
3850import kotlin.script.experimental.jvm.util.classpathFromClassloader
3951
4052class JupyterTests : ShouldSpec ({
41- val replProvider : ReplProvider = ReplProvider .withoutLibraryResolution
53+ val replProvider = ReplProvider { classpath ->
54+ ReplForJupyterImpl (
55+ resolutionInfoProvider = EmptyResolutionInfoProvider ,
56+ scriptClasspath = classpath,
57+ isEmbedded = true,
58+ ).apply {
59+ eval {
60+ librariesScanner.addLibrariesFromClassLoader(
61+ classLoader = currentClassLoader,
62+ host = this,
63+ integrationTypeNameRules = listOf(
64+ PatternNameAcceptanceRule (false, "org.jetbrains.kotlinx.spark.api.jupyter.**"),
65+ PatternNameAcceptanceRule (true, "org.jetbrains.kotlinx.spark.api.jupyter.SparkIntegration "),
66+ ),
67+ )
68+ }
69+ }
70+ }
71+
4272 val currentClassLoader = DependsOn : :class.java.classLoader
4373 val scriptClasspath = classpathFromClassloader(currentClassLoader).orEmpty()
4474
0 commit comments