diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index 46b13cbc1c2..ff16cedbf1d 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -4775,16 +4775,10 @@ - - - - - - - - - - + + + + diff --git a/plugins/android-extensions/android-extensions-compiler/build.gradle.kts b/plugins/android-extensions/android-extensions-compiler/build.gradle.kts index 79cace3035d..1b14dddb1b1 100644 --- a/plugins/android-extensions/android-extensions-compiler/build.gradle.kts +++ b/plugins/android-extensions/android-extensions-compiler/build.gradle.kts @@ -7,6 +7,8 @@ plugins { } val robolectricClasspath by configurations.creating +val robolectricDependency by configurations.creating + val androidExtensionsRuntimeForTests by configurations.creating val layoutLib by configurations.creating val layoutLibApi by configurations.creating @@ -37,8 +39,9 @@ dependencies { testApi(project(":kotlin-test:kotlin-test-jvm")) testApi(commonDependency("junit:junit")) + robolectricDependency("org.robolectric:android-all:5.0.2_r3-robolectric-r0") + robolectricClasspath(commonDependency("org.robolectric", "robolectric")) - robolectricClasspath("org.robolectric:android-all:4.4_r1-robolectric-1") robolectricClasspath(project(":kotlin-android-extensions-runtime")) { isTransitive = false } embedded(project(":kotlin-android-extensions-runtime")) { isTransitive = false } @@ -65,10 +68,19 @@ javadocJar() testsJar() +val robolectricDependencyDir = "$buildDir/robolectricDependencies" +val prepareRobolectricDependencies by tasks.registering(Copy::class) { + from(robolectricDependency) + into(robolectricDependencyDir) +} + projectTest { dependsOn(androidExtensionsRuntimeForTests) dependsOn(robolectricClasspath) + + dependsOn(prepareRobolectricDependencies) dependsOn(":dist") + workingDir = rootDir useAndroidJar() @@ -86,6 +98,10 @@ projectTest { doFirst { systemProperty("androidExtensionsRuntime.classpath", androidExtensionsRuntimeProvider.get()) systemProperty("robolectric.classpath", robolectricClasspathProvider.get()) + + systemProperty("robolectric.offline", "true") + systemProperty("robolectric.dependency.dir", robolectricDependencyDir) + systemProperty("layoutLib.path", layoutLibConf.singleFile.canonicalPath) systemProperty("layoutLibApi.path", layoutLibApiConf.singleFile.canonicalPath) } diff --git a/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/parcel/AbstractParcelBoxTest.kt b/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/parcel/AbstractParcelBoxTest.kt index f30042bc7d2..e7217a2acef 100644 --- a/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/parcel/AbstractParcelBoxTest.kt +++ b/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/parcel/AbstractParcelBoxTest.kt @@ -144,13 +144,20 @@ abstract class AbstractParcelBoxTest : CodegenTestCase() { classFileFactory.getClassFiles().forEach { writeClass(it.relativePath, it.asByteArray()) } javaClassesOutputDirectory?.listFiles()?.forEach { writeClass(it.name, it.readBytes()) } + val robolectricProperties = System.getProperties().propertyNames().asSequence() + .map { it.toString() }.filter { it.startsWith("robolectric") } + .map { "-D$it=${System.getProperty(it)}" } + .toList() + .toTypedArray() + val process = ProcessBuilder( javaExe.absolutePath, "-ea", "-classpath", (libraryClasspath + dirForTestClasses).joinToString(File.pathSeparator), + *robolectricProperties, JUnitCore::class.java.name, - JUNIT_GENERATED_TEST_CLASS_FQNAME + JUNIT_GENERATED_TEST_CLASS_FQNAME, ).start() val out = process.inputStream.bufferedReader().lineSequence().joinToString("\n") diff --git a/plugins/parcelize/parcelize-compiler/build.gradle.kts b/plugins/parcelize/parcelize-compiler/build.gradle.kts index cb13f4c5f33..d0736a88efc 100644 --- a/plugins/parcelize/parcelize-compiler/build.gradle.kts +++ b/plugins/parcelize/parcelize-compiler/build.gradle.kts @@ -6,6 +6,8 @@ plugins { } val robolectricClasspath by configurations.creating +val robolectricDependency by configurations.creating + val parcelizeRuntimeForTests by configurations.creating val layoutLib by configurations.creating val layoutLibApi by configurations.creating @@ -53,8 +55,9 @@ dependencies { testApi(commonDependency("junit:junit")) + robolectricDependency("org.robolectric:android-all:5.0.2_r3-robolectric-r0") + robolectricClasspath(commonDependency("org.robolectric", "robolectric")) - robolectricClasspath("org.robolectric:android-all:4.4_r1-robolectric-r2") robolectricClasspath(project(":plugins:parcelize:parcelize-runtime")) { isTransitive = false } robolectricClasspath(project(":kotlin-android-extensions-runtime")) { isTransitive = false } @@ -81,10 +84,19 @@ sourcesJar() javadocJar() testsJar() +val robolectricDependencyDir = "$buildDir/robolectricDependencies" +val prepareRobolectricDependencies by tasks.registering(Copy::class) { + from(robolectricDependency) + into(robolectricDependencyDir) +} + projectTest(jUnitMode = JUnitMode.JUnit5) { useJUnitPlatform() dependsOn(parcelizeRuntimeForTests) dependsOn(robolectricClasspath) + dependsOn(robolectricDependency) + + dependsOn(prepareRobolectricDependencies) dependsOn(":dist") workingDir = rootDir useAndroidJar() @@ -96,6 +108,10 @@ projectTest(jUnitMode = JUnitMode.JUnit5) { doFirst { systemProperty("parcelizeRuntime.classpath", parcelizeRuntimeForTestsConf.asPath) systemProperty("robolectric.classpath", robolectricClasspathConf.asPath) + + systemProperty("robolectric.offline", "true") + systemProperty("robolectric.dependency.dir", robolectricDependencyDir) + systemProperty("layoutLib.path", layoutLibConf.singleFile.canonicalPath) systemProperty("layoutLibApi.path", layoutLibApiConf.singleFile.canonicalPath) } diff --git a/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/services/ParcelizeMainClassProvider.kt b/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/services/ParcelizeMainClassProvider.kt index 714f2fa9cde..f7115b0818a 100644 --- a/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/services/ParcelizeMainClassProvider.kt +++ b/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/services/ParcelizeMainClassProvider.kt @@ -8,13 +8,19 @@ package org.jetbrains.kotlin.parcelize.test.services import org.jetbrains.kotlin.parcelize.test.services.ParcelizeRuntimeClasspathProvider.Companion.JUNIT_GENERATED_TEST_CLASS_FQNAME import org.jetbrains.kotlin.test.services.TestServices import org.jetbrains.kotlin.test.services.jvm.JvmBoxMainClassProvider +import org.jetbrains.kotlin.utils.addToStdlib.cast import org.junit.runner.JUnitCore class ParcelizeMainClassProvider(testServices: TestServices) : JvmBoxMainClassProvider(testServices) { override fun getMainClassNameAndAdditionalArguments(): List { + val robolectricProperties = System.getProperties().propertyNames().asSequence() + .map { it.toString() }.filter { it.startsWith("robolectric") } + .map { "-D$it=${System.getProperty(it)}" } + .toList() + .toTypedArray() + return listOfNotNull( - "-Drobolectric.dependency.repo.url=https://cache-redirector.jetbrains.com/maven-central" - .takeIf { "true" == System.getProperty("cacheRedirectorEnabled") }, + *robolectricProperties, JUnitCore::class.java.name, JUNIT_GENERATED_TEST_CLASS_FQNAME )