From b490a79d95d19ef692c0c5034e61f8cf5cdc2b90 Mon Sep 17 00:00:00 2001 From: Ilya Chernikov Date: Wed, 8 Nov 2017 14:33:37 +0100 Subject: [PATCH] Replace direct usages of ideaSdk in tests with property passed from build scripts --- idea/build.gradle.kts | 4 ++++ .../org/jetbrains/kotlin/psi/KotlinLibInjectionTest.kt | 9 +++++---- .../jetbrains/android/parcel/AbstractParcelBoxTest.kt | 9 +++++++-- .../android/parcel/AbstractParcelBytecodeListingTest.kt | 4 +++- 4 files changed, 19 insertions(+), 7 deletions(-) diff --git a/idea/build.gradle.kts b/idea/build.gradle.kts index feb7d086f6d..af42f8d0d5c 100644 --- a/idea/build.gradle.kts +++ b/idea/build.gradle.kts @@ -1,4 +1,5 @@ import org.gradle.jvm.tasks.Jar +import org.jetbrains.intellij.IntelliJPluginExtension apply { plugin("kotlin") } @@ -127,6 +128,9 @@ sourceSets { projectTest { dependsOnTaskIfExistsRec("dist", project = rootProject) workingDir = rootDir + afterEvaluate { + systemProperty("ideaSdk.path", the().ideaDependency.classes.canonicalPath) + } } testsJar {} diff --git a/idea/tests/org/jetbrains/kotlin/psi/KotlinLibInjectionTest.kt b/idea/tests/org/jetbrains/kotlin/psi/KotlinLibInjectionTest.kt index 08db26a818a..9ba2900fae8 100644 --- a/idea/tests/org/jetbrains/kotlin/psi/KotlinLibInjectionTest.kt +++ b/idea/tests/org/jetbrains/kotlin/psi/KotlinLibInjectionTest.kt @@ -22,7 +22,7 @@ import org.intellij.lang.annotations.Language import org.intellij.lang.regexp.RegExpLanguage import org.jetbrains.kotlin.idea.test.SdkAndMockLibraryProjectDescriptor import org.jetbrains.kotlin.idea.test.PluginTestCaseBase -import org.jetbrains.kotlin.test.KotlinTestUtils +import java.io.File class KotlinLibInjectionTest : AbstractInjectionTest() { override fun setUp() { @@ -55,9 +55,10 @@ class KotlinLibInjectionTest : AbstractInjectionTest() { override fun getProjectDescriptor(): LightProjectDescriptor { + val ideaSdkPath = System.getProperty("ideaSdk.path")?.takeIf { File(it).isDirectory } + ?: throw RuntimeException("Unable to get a valid path from 'ideaSdk.path' property, please point it to the Idea SDK location") return SdkAndMockLibraryProjectDescriptor( - PluginTestCaseBase.getTestDataPathBase() + "/injection/lib/", false, false, false, true, - listOf(KotlinTestUtils.getHomeDirectory() + "/ideaSDK/lib/annotations.jar") - ) + PluginTestCaseBase.getTestDataPathBase() + "/injection/lib/", false, false, false, true, + listOf(File(ideaSdkPath, "lib/annotations.jar").absolutePath)) } } diff --git a/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/android/parcel/AbstractParcelBoxTest.kt b/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/android/parcel/AbstractParcelBoxTest.kt index d693d3c02de..cf46ab268f0 100644 --- a/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/android/parcel/AbstractParcelBoxTest.kt +++ b/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/android/parcel/AbstractParcelBoxTest.kt @@ -106,9 +106,14 @@ abstract class AbstractParcelBoxTest : CodegenTestCase() { super.doTest(File(BASE_DIR, filePath + ".kt").absolutePath) } + private val androidPluginPath: String by lazy { + System.getProperty("ideaSdk.androidPlugin.path")?.takeIf { File(it).isDirectory } + ?: throw RuntimeException("Unable to get a valid path from 'ideaSdk.androidPlugin.path' property, please point it to the Idea android plugin location") + } + private fun getClasspathForTest(): List { val kotlinRuntimeJar = PathUtil.kotlinPathsForIdeaPlugin.stdlibPath - val layoutLibJars = listOf(File("ideaSDK/plugins/android/lib/layoutlib.jar"), File("ideaSDK/plugins/android/lib/layoutlib-api.jar")) + val layoutLibJars = listOf(File(androidPluginPath, "layoutlib.jar"), File(androidPluginPath, "layoutlib-api.jar")) val robolectricJars = File("dependencies/robolectric") .listFiles { f: File -> f.extension == "jar" } @@ -167,6 +172,6 @@ abstract class AbstractParcelBoxTest : CodegenTestCase() { override fun setupEnvironment(environment: KotlinCoreEnvironment) { AndroidComponentRegistrar.registerParcelExtensions(environment.project) addAndroidExtensionsRuntimeLibrary(environment) - environment.updateClasspath(listOf(JvmClasspathRoot(File("ideaSDK/plugins/android/lib/layoutlib.jar")))) + environment.updateClasspath(listOf(JvmClasspathRoot(File(androidPluginPath, "layoutlib.jar")))) } } \ No newline at end of file diff --git a/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/android/parcel/AbstractParcelBytecodeListingTest.kt b/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/android/parcel/AbstractParcelBytecodeListingTest.kt index b48e5b9ca83..e5538b6e4d7 100644 --- a/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/android/parcel/AbstractParcelBytecodeListingTest.kt +++ b/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/android/parcel/AbstractParcelBytecodeListingTest.kt @@ -27,6 +27,8 @@ abstract class AbstractParcelBytecodeListingTest : AbstractAsmLikeInstructionLis override fun setupEnvironment(environment: KotlinCoreEnvironment) { AndroidComponentRegistrar.registerParcelExtensions(environment.project) addAndroidExtensionsRuntimeLibrary(environment) - environment.updateClasspath(listOf(JvmClasspathRoot(File("ideaSDK/plugins/android/lib/layoutlib.jar")))) + val androidPluginPath = System.getProperty("ideaSdk.androidPlugin.path")?.takeIf { File(it).isDirectory } + ?: throw RuntimeException("Unable to get a valid path from 'ideaSdk.androidPlugin.path' property, please point it to the Idea android plugin location") + environment.updateClasspath(listOf(JvmClasspathRoot(File(androidPluginPath, "layoutlib.jar")))) } } \ No newline at end of file