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
)