Skip to content

Commit 715344a

Browse files
committed
Remove more Groovy code by migrating Task interface to Kotlin
1 parent c0c8d52 commit 715344a

File tree

9 files changed

+79
-142
lines changed

9 files changed

+79
-142
lines changed

android-junit5/src/main/groovy/de/mannodermaus/gradle/plugins/junit5/JUnit5UnitTest.groovy

Lines changed: 0 additions & 66 deletions
This file was deleted.

android-junit5/src/main/groovy/de/mannodermaus/gradle/plugins/junit5/LogUtils.groovy

Lines changed: 0 additions & 30 deletions
This file was deleted.

android-junit5/src/main/kotlin/de/mannodermaus/gradle/plugins/junit5/Dependencies.kt

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,17 @@
11
package de.mannodermaus.gradle.plugins.junit5
22

3-
import de.mannodermaus.gradle.plugins.junit5.LogUtils.Level
4-
import de.mannodermaus.gradle.plugins.junit5.internal.agpStyleLog
53
import de.mannodermaus.gradle.plugins.junit5.internal.android
64
import de.mannodermaus.gradle.plugins.junit5.internal.ext
7-
import groovy.lang.Closure
85
import org.gradle.api.Project
96
import org.gradle.api.ProjectConfigurationException
107
import org.gradle.api.artifacts.Dependency
11-
import org.gradle.api.logging.Logger
128
import java.util.Properties
139

1410
/*
1511
* Model classes holding information about the transitive dependencies of the plugin,
1612
* exposed to consumers through the custom dependency handler.
1713
*/
1814

19-
/* Extensions */
20-
21-
private fun Logger.replacementWarning(oldName: String, newName: String) {
22-
this.agpStyleLog(
23-
message = "The JUnit 5 dependency on '$oldName' " +
24-
"is deprecated and will be removed in a future version. Please use '$newName' instead!",
25-
level = Level.WARNING)
26-
}
27-
2815
/* Types */
2916

3017
/**

android-junit5/src/main/kotlin/de/mannodermaus/gradle/plugins/junit5/Dsl.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package de.mannodermaus.gradle.plugins.junit5
33
import de.mannodermaus.gradle.plugins.junit5.internal.android
44
import de.mannodermaus.gradle.plugins.junit5.internal.extend
55
import de.mannodermaus.gradle.plugins.junit5.internal.extensionByName
6+
import de.mannodermaus.gradle.plugins.junit5.tasks.JUnit5UnitTest
67
import groovy.lang.Closure
78
import org.gradle.api.Action
89
import org.gradle.api.Project

android-junit5/src/main/kotlin/de/mannodermaus/gradle/plugins/junit5/internal/Extensions.kt

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,16 @@ import com.android.build.gradle.api.UnitTestVariant
66
import com.android.build.gradle.internal.api.TestedVariant
77
import com.android.builder.model.Version
88
import de.mannodermaus.gradle.plugins.junit5.AndroidJUnitPlatformPlugin
9-
import de.mannodermaus.gradle.plugins.junit5.LogUtils
10-
import de.mannodermaus.gradle.plugins.junit5.LogUtils.Level
11-
import de.mannodermaus.gradle.plugins.junit5.LogUtils.Level.INFO
129
import de.mannodermaus.gradle.plugins.junit5.internal.ConfigurationKind.APP
1310
import org.gradle.api.GradleException
1411
import org.gradle.api.Project
1512
import org.gradle.api.Task
1613
import org.gradle.api.artifacts.Configuration
1714
import org.gradle.api.artifacts.dsl.DependencyHandler
15+
import org.gradle.api.logging.LogLevel
16+
import org.gradle.api.logging.LogLevel.ERROR
17+
import org.gradle.api.logging.LogLevel.INFO
18+
import org.gradle.api.logging.LogLevel.WARN
1819
import org.gradle.api.logging.Logger
1920
import org.gradle.api.plugins.ExtensionAware
2021
import org.gradle.api.plugins.ExtraPropertiesExtension
@@ -70,8 +71,19 @@ fun MutableMap<String, String>.append(
7071

7172
/* Extensions for Gradle */
7273

73-
fun Logger.agpStyleLog(message: String, level: Level = INFO) {
74-
LogUtils.agpStyleLog(this, level, message)
74+
/**
75+
* Log a message with the Android Gradle Plugin style syntax,
76+
* which will cause Android Studio to pick it up & display it inside the Messages window.
77+
*/
78+
fun Logger.agpLog(level: LogLevel, message: String) {
79+
val pair: Pair<String, (String) -> Unit> = when (level) {
80+
ERROR -> "error" to { s -> error(s) }
81+
WARN -> "warning" to { s -> warn(s) }
82+
INFO -> "info" to { s -> info(s) }
83+
else -> "debug" to { s -> debug(s) }
84+
}
85+
val (kind, log) = pair
86+
log("""AGBPI: {"kind": "$kind","text":"$message"}""")
7587
}
7688

7789
/* Interoperability layer for Gradle */

android-junit5/src/main/kotlin/de/mannodermaus/gradle/plugins/junit5/tasks/Base.kt

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,56 @@ import com.android.build.gradle.internal.scope.VariantScope
66
import de.mannodermaus.gradle.plugins.junit5.variantData
77
import org.gradle.api.Project
88
import org.gradle.api.Task
9+
import org.gradle.process.JavaForkOptions
10+
import org.gradle.process.ProcessForkOptions
11+
12+
/**
13+
* Base for tasks added by plugin, shared between
14+
* the "Run All" task and its individual variant-aware ones.
15+
*/
16+
interface JUnit5UnitTest : Task {
17+
/**
18+
* Whether or not this is the "Run All" JUnit 5 task. It doesn't over the entire JavaForkOptions API,
19+
* and instead will only be a facade.
20+
* @return True if "Run All" task, false if individual test task
21+
*/
22+
val isRunAllTask: Boolean
23+
24+
/**
25+
* Access the underlying JavaForkOptions, if present on this task.
26+
* @return The task's JavaForkOptions, if any
27+
*/
28+
val javaForkOptions: JavaForkOptions?
29+
30+
/*
31+
* Subset of JavaForkOptions API, shared between Unit Tests and "Run All" task,
32+
* so they can be configured together using unitTests.all {}.
33+
*
34+
* If a user needs to find out whether or not the "Run All" task is being processed or not,
35+
* use the "isRunAllTask" API.
36+
*/
37+
38+
/**
39+
* Adds the provided arguments to the Java process executing the tests.
40+
* Does nothing if specified on the "Run All" task.
41+
* @return Self
42+
*/
43+
fun jvmArgs(vararg args: Any): JavaForkOptions
44+
45+
/**
46+
* Adds the provided system property to the Java process executing the tests.
47+
* Does nothing if specified on the "Run All" task.
48+
* @return Self
49+
*/
50+
fun systemProperty(key: String, value: Any?): JavaForkOptions
51+
52+
/**
53+
* Adds the provided environment variable to the Java process executing the tests.
54+
* Does nothing if specified on the "Run All" task.
55+
* @return Self
56+
*/
57+
fun environment(key: String, value: Any?): ProcessForkOptions
58+
}
959

1060
/**
1161
* Base for ConfigActions related to custom plugin tasks

android-junit5/src/main/kotlin/de/mannodermaus/gradle/plugins/junit5/tasks/UnitTest.kt

Lines changed: 9 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import com.android.build.gradle.internal.scope.TaskConfigAction
55
import com.android.build.gradle.internal.scope.VariantScope
66
import com.android.build.gradle.tasks.factory.AndroidUnitTest
77
import de.mannodermaus.gradle.plugins.junit5.AndroidJUnitPlatformExtension
8-
import de.mannodermaus.gradle.plugins.junit5.JUnit5UnitTest
98
import de.mannodermaus.gradle.plugins.junit5.VariantTypeCompat
109
import de.mannodermaus.gradle.plugins.junit5.internal.android
1110
import de.mannodermaus.gradle.plugins.junit5.internal.junit5Info
@@ -23,7 +22,6 @@ import org.gradle.api.tasks.InputFiles
2322
import org.gradle.api.tasks.JavaExec
2423
import org.gradle.api.tasks.Optional
2524
import org.gradle.process.JavaForkOptions
26-
import org.gradle.process.ProcessForkOptions
2725
import org.gradle.process.internal.DefaultJavaForkOptions
2826
import org.junit.platform.console.ConsoleLauncher
2927
import java.io.File
@@ -61,9 +59,10 @@ open class AndroidJUnit5UnitTest : JavaExec(), JUnit5UnitTest {
6159
@Optional
6260
var assetsCollection: FileCollection? = null
6361

64-
override fun isRunAllTask() = false
62+
override val isRunAllTask = false
6563

66-
override fun javaForkOptions() = java.util.Optional.of<JavaForkOptions>(this)
64+
@Suppress("LeakingThis")
65+
override val javaForkOptions = this as JavaForkOptions
6766

6867
/**
6968
* Configuration closure for an Android JUnit5 test task.
@@ -271,36 +270,18 @@ open class AndroidJUnit5UnitTest : JavaExec(), JUnit5UnitTest {
271270
* Allows the default task to also be configured by unitTests.all.
272271
*/
273272
open class JUnit5UnitTestRunAll : DefaultTask(), JUnit5UnitTest {
273+
274274
private val emptyJavaForkOptions = DefaultJavaForkOptions(IdentityFileResolver())
275275

276-
override fun isRunAllTask() = true
276+
override val isRunAllTask = true
277277

278-
override fun javaForkOptions() = java.util.Optional.empty<JavaForkOptions>()
278+
override val javaForkOptions: JavaForkOptions? = null
279279

280280
/* JavaForkOptions facade */
281281

282-
override fun getJvmArgs() = emptyList<String>()
283-
override fun setJvmArgs(var1: MutableList<String>?) {
284-
}
285-
286-
override fun setJvmArgs(var1: MutableIterable<*>?) {
287-
}
288-
289-
override fun jvmArgs(var1: MutableIterable<*>?): JavaForkOptions = emptyJavaForkOptions
290-
override fun jvmArgs(vararg var1: Any?): JavaForkOptions = emptyJavaForkOptions
282+
override fun jvmArgs(vararg args: Any) = emptyJavaForkOptions
291283

292-
override fun getSystemProperties() = mutableMapOf<String, Any>()
293-
override fun setSystemProperties(var1: MutableMap<String, *>?) {
294-
}
295-
296-
override fun systemProperties(
297-
var1: MutableMap<String, *>?): JavaForkOptions = emptyJavaForkOptions
298-
299-
override fun systemProperty(var1: String?, var2: Any?): JavaForkOptions = emptyJavaForkOptions
300-
override fun getEnvironment() = mutableMapOf<String, Any>()
301-
override fun setEnvironment(var1: MutableMap<String, *>?) {
302-
}
284+
override fun systemProperty(key: String, value: Any?) = emptyJavaForkOptions
303285

304-
override fun environment(var1: MutableMap<String, *>?): ProcessForkOptions = emptyJavaForkOptions
305-
override fun environment(var1: String?, var2: Any?): ProcessForkOptions = emptyJavaForkOptions
286+
override fun environment(key: String, value: Any?) = emptyJavaForkOptions
306287
}

instrumentation-runner/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ buildscript {
55
repositories {
66
google()
77
jcenter()
8+
maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
89
}
910

1011
dependencies {

sample/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ buildscript {
22
repositories {
33
google()
44
jcenter()
5+
maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
56
}
67

78
dependencies {

0 commit comments

Comments
 (0)