Skip to content

Commit

Permalink
Split integration and unit Gradle plugin tests
Browse files Browse the repository at this point in the history
Previously some tests (e.g. FileHashTest) were executed
multiple times in each test task.
This change splits tests in the following way:
* `testGradle-<VERSION>` task only runs `org.jetbrains.compose.gradle.*` tests
with the corresponding Gradle version;
* `test` runs all other tests once;
* `check` runs all tests and checks;
  • Loading branch information
AlexeyTsvetkov committed Mar 22, 2021
1 parent 14ee86f commit 4e67323
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 15 deletions.
34 changes: 21 additions & 13 deletions gradle-plugins/compose/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,9 @@ val jar = tasks.named<Jar>("jar") {
}

// __SUPPORTED_GRADLE_VERSIONS__
val minGradleVersionForTests = "6.4"
val maxGradleVersionForTests = "6.8.3"
testGradleVersion("6.4")
testGradleVersion("6.8.3")

val javaHomeForTests: String? = when {
// __COMPOSE_NATIVE_DISTRIBUTIONS_MIN_JAVA_VERSION__
JavaVersion.current() >= JavaVersion.VERSION_15 -> System.getProperty("java.home")
Expand All @@ -69,37 +70,44 @@ val javaHomeForTests: String? = when {
}
val isWindows = getCurrentOperatingSystem().isWindows

val gradleTestsPattern = "org.jetbrains.compose.gradle.*"
tasks.test {
configureTest(maxGradleVersionForTests)
filter {
excludeTestsMatching(gradleTestsPattern)
}
}

val testMinGradleVersion by tasks.registering(Test::class) {
tasks.test.get().let { defaultTest ->
classpath = defaultTest.classpath
fun testGradleVersion(gradleVersion: String) {
val taskProvider = tasks.register("testGradle-$gradleVersion", Test::class) {
tasks.test.get().let { defaultTest ->
classpath = defaultTest.classpath
}
systemProperty("gradle.version.for.tests", gradleVersion)
filter {
includeTestsMatching(gradleTestsPattern)
}
dependsOn("validateTaskProperties")
}
tasks.named("check") {
dependsOn(taskProvider)
}
configureTest(minGradleVersionForTests)
}

fun Test.configureTest(gradleVersion: String) {
tasks.withType<Test>().configureEach {
useJUnitPlatform()
testLogging {
events("passed", "skipped", "failed")
}

dependsOn("publishToMavenLocal")
systemProperty("compose.plugin.version", BuildProperties.deployVersion(project))
systemProperty("gradle.version.for.tests", gradleVersion)

if (javaHomeForTests != null) {
val executableFileName = if (isWindows) "java.exe" else "java"
executable = File(javaHomeForTests).resolve("bin/$executableFileName").absolutePath
} else {
doFirst { error("Use JDK 15+ to run tests or set up JDK_15/JDK_FOR_GRADLE_TESTS env. var") }
}
}

tasks.named("check") {
dependsOn(testMinGradleVersion)
}

task("printAllAndroidxReplacements") {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.jetbrains.compose
package org.jetbrains.compose.gradle

import org.gradle.internal.impldep.org.testng.Assert
import org.gradle.testkit.runner.TaskOutcome
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.jetbrains.compose
package org.jetbrains.compose.gradle

import org.gradle.testkit.runner.TaskOutcome
import org.jetbrains.compose.test.GradlePluginTestBase
Expand Down

0 comments on commit 4e67323

Please sign in to comment.