Skip to content

Commit c896c48

Browse files
committed
Allow default "junitPlatformTest" to also be configurable via unitTests.all
1 parent f7f5409 commit c896c48

File tree

3 files changed

+152
-13
lines changed

3 files changed

+152
-13
lines changed

android-junit5-tests/testCommon/src/test/groovy/de/mannodermaus/gradle/plugins/junit5/BasePluginSpec.groovy

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,7 @@ abstract class BasePluginSpec extends Specification {
279279
.asAndroidApplication()
280280
.build()
281281

282+
def onlyDefaultTask = project.task("onlyDefaultTask")
282283
def otherTask = project.task("someOtherTask")
283284

284285
project.android {
@@ -288,24 +289,33 @@ abstract class BasePluginSpec extends Specification {
288289
systemProperty "some.prop", "0815"
289290
environment "MY_ENV_VAR", "MegaShark.bin"
290291
dependsOn otherTask
292+
293+
if (it.name == "junitPlatformTest") {
294+
it.dependsOn onlyDefaultTask
295+
}
291296
}
292297
}
293298
}
294299

295300
project.evaluate()
296301

297302
then:
303+
def runAll = project.tasks.getByName("junitPlatformTest")
298304
def runDebug = project.tasks.getByName("junitPlatformTestDebug") as AndroidJUnit5UnitTest
299305
def runRelease = project.tasks.getByName("junitPlatformTestRelease") as AndroidJUnit5UnitTest
300306

307+
assert runAll.getDependsOn().contains(otherTask)
308+
assert runAll.getDependsOn().contains(onlyDefaultTask)
301309
assert runDebug.jvmArgs.contains("-noverify")
302310
assert runDebug.systemProperties.containsKey("some.prop")
303311
assert runDebug.environment.containsKey("MY_ENV_VAR")
304312
assert runDebug.getDependsOn().contains(otherTask)
313+
assert !runDebug.getDependsOn().contains(onlyDefaultTask)
305314
assert runRelease.jvmArgs.contains("-noverify")
306315
assert runRelease.systemProperties.containsKey("some.prop")
307316
assert runRelease.environment.containsKey("MY_ENV_VAR")
308317
assert runRelease.getDependsOn().contains(otherTask)
318+
assert !runRelease.getDependsOn().contains(onlyDefaultTask)
309319
}
310320

311321
def "android.testOptions: Can be disabled for JUnit 5 tasks via the extension"() {

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

Lines changed: 141 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,19 @@ import de.mannodermaus.gradle.plugins.junit5.safeProperty
2121
import de.mannodermaus.gradle.plugins.junit5.selectors
2222
import de.mannodermaus.gradle.plugins.junit5.tags
2323
import de.mannodermaus.gradle.plugins.junit5.variantData
24+
import org.gradle.api.DefaultTask
2425
import org.gradle.api.Project
26+
import org.gradle.api.Task
2527
import org.gradle.api.file.FileCollection
28+
import org.gradle.api.internal.file.IdentityFileResolver
2629
import org.gradle.api.plugins.JavaBasePlugin
2730
import org.gradle.api.tasks.InputFiles
2831
import org.gradle.api.tasks.JavaExec
2932
import org.gradle.api.tasks.Optional
33+
import org.gradle.process.JavaForkOptions
34+
import org.gradle.process.ProcessForkOptions
35+
import org.gradle.process.internal.DefaultJavaForkOptions
36+
import org.gradle.process.internal.DefaultProcessForkOptions
3037
import org.junit.platform.console.ConsoleLauncher
3138
import java.io.File
3239

@@ -98,8 +105,8 @@ open class AndroidJUnit5UnitTest : JavaExec(), JUnit5UnitTest {
98105
// instrumented by Clover in JUnit's build will be shadowed by JARs pulled in
99106
// via the junitPlatform configuration... leading to zero code coverage for
100107
// the respective modules.
101-
val defaultTestTask = getDefaultUnitTestTask()
102-
val taskClasspath = defaultTestTask.classpath +
108+
val defaultJUnit4Task = getDefaultJUnit4Task()
109+
val taskClasspath = defaultJUnit4Task.classpath +
103110
project.configurations.getByName("junitPlatform")
104111

105112
// Aggregate test root directories from the given providers
@@ -115,9 +122,9 @@ open class AndroidJUnit5UnitTest : JavaExec(), JUnit5UnitTest {
115122
// Apply other arguments and properties from the default test task, unless disabled
116123
// (these are most likely provided by the AGP's testOptions closure)
117124
if (junit5.unitTests.applyDefaultTestOptions) {
118-
task.jvmArgs(defaultTestTask.jvmArgs)
119-
task.systemProperties(defaultTestTask.systemProperties)
120-
task.environment(defaultTestTask.environment)
125+
task.jvmArgs(defaultJUnit4Task.jvmArgs)
126+
task.systemProperties(defaultJUnit4Task.systemProperties)
127+
task.environment(defaultJUnit4Task.environment)
121128
}
122129

123130
// Build the task arguments
@@ -126,7 +133,7 @@ open class AndroidJUnit5UnitTest : JavaExec(), JUnit5UnitTest {
126133
project.logger.junit5Info("JVM Arguments: ${task.jvmArgs.joinToString()}")
127134

128135
// Hook into the main JUnit 5 task
129-
val defaultJUnit5Task = project.tasks.maybeCreate(TASK_NAME_DEFAULT)
136+
val defaultJUnit5Task = getDefaultJUnit5Task()
130137
defaultJUnit5Task.dependsOn(task)
131138

132139
// Apply additional user configuration
@@ -135,6 +142,20 @@ open class AndroidJUnit5UnitTest : JavaExec(), JUnit5UnitTest {
135142

136143
/* Private */
137144

145+
private fun getDefaultJUnit4Task(): AndroidUnitTest {
146+
val name = scope.getTaskName(VariantType.UNIT_TEST.prefix, VariantType.UNIT_TEST.suffix)
147+
return project.tasks.getByName(name) as AndroidUnitTest
148+
}
149+
150+
private fun getDefaultJUnit5Task(): Task {
151+
var defaultTask = project.tasks.findByName(TASK_NAME_DEFAULT)
152+
if (defaultTask == null) {
153+
defaultTask = project.tasks.create(TASK_NAME_DEFAULT, JUnit5UnitTestRunAll::class.java)
154+
project.junit5.unitTests.applyConfiguration(defaultTask)
155+
}
156+
return defaultTask!!
157+
}
158+
138159
private fun configureTaskInputs(
139160
task: AndroidJUnit5UnitTest,
140161
junit5: AndroidJUnitPlatformExtension) {
@@ -165,7 +186,7 @@ open class AndroidJUnit5UnitTest : JavaExec(), JUnit5UnitTest {
165186
task: AndroidJUnit5UnitTest,
166187
junit5: AndroidJUnitPlatformExtension) {
167188
// Connect to the default unit test task
168-
val variantUnitTestTask = this.getDefaultUnitTestTask()
189+
val variantUnitTestTask = this.getDefaultJUnit4Task()
169190
try {
170191
// Android Gradle Plugin 3.x provides additional input parameters
171192
task.resCollection = variantUnitTestTask.resCollection
@@ -185,11 +206,6 @@ open class AndroidJUnit5UnitTest : JavaExec(), JUnit5UnitTest {
185206
mainTestTask.dependsOn(task)
186207
}
187208

188-
private fun getDefaultUnitTestTask(): AndroidUnitTest {
189-
val name = scope.getTaskName(VariantType.UNIT_TEST.prefix, VariantType.UNIT_TEST.suffix)
190-
return project.tasks.getByName(name) as AndroidUnitTest
191-
}
192-
193209
private fun configureTaskOutputs(
194210
task: AndroidJUnit5UnitTest,
195211
junit5: AndroidJUnitPlatformExtension): File {
@@ -254,3 +270,116 @@ open class AndroidJUnit5UnitTest : JavaExec(), JUnit5UnitTest {
254270
}
255271
}
256272
}
273+
274+
/**
275+
* Facade for the main JUnit 5 Unit Test task.
276+
* Allows the default task to also be configured by unitTests.all.
277+
*/
278+
open class JUnit5UnitTestRunAll : DefaultTask(), JUnit5UnitTest {
279+
280+
private val emptyJavaForkOptions = DefaultJavaForkOptions(IdentityFileResolver())
281+
private val emptyProcessForkOptions = DefaultProcessForkOptions(IdentityFileResolver())
282+
private val emptyFileCollection = project.files()
283+
284+
override fun setSystemProperties(p0: MutableMap<String, *>?) {
285+
}
286+
287+
override fun getExecutable() = ""
288+
289+
override fun setDefaultCharacterEncoding(p0: String?) {
290+
}
291+
292+
override fun jvmArgs(p0: MutableIterable<*>?) = emptyJavaForkOptions
293+
294+
override fun jvmArgs(vararg p0: Any?) = emptyJavaForkOptions
295+
296+
override fun environment(p0: MutableMap<String, *>?) = emptyProcessForkOptions
297+
298+
override fun environment(p0: String?, p1: Any?) = emptyProcessForkOptions
299+
300+
override fun setMinHeapSize(p0: String?) {
301+
}
302+
303+
override fun systemProperties(p0: MutableMap<String, *>?) = emptyJavaForkOptions
304+
305+
override fun setExecutable(p0: String?) {
306+
}
307+
308+
override fun setExecutable(p0: Any?) {
309+
}
310+
311+
override fun executable(p0: Any?) = emptyProcessForkOptions
312+
313+
override fun setJvmArgs(p0: MutableList<String>?) {
314+
}
315+
316+
override fun setJvmArgs(p0: MutableIterable<*>?) {
317+
}
318+
319+
override fun setAllJvmArgs(p0: MutableList<String>?) {
320+
}
321+
322+
override fun setAllJvmArgs(p0: MutableIterable<*>?) {
323+
}
324+
325+
override fun setDebug(p0: Boolean) {
326+
}
327+
328+
override fun getWorkingDir() = project.file("")
329+
330+
override fun setBootstrapClasspath(p0: FileCollection?) {
331+
}
332+
333+
override fun getDefaultCharacterEncoding() = ""
334+
335+
override fun setMaxHeapSize(p0: String?) {
336+
}
337+
338+
override fun systemProperty(p0: String?, p1: Any?) = emptyJavaForkOptions
339+
340+
override fun getBootstrapClasspath() = emptyFileCollection
341+
342+
override fun workingDir(p0: Any?) = emptyProcessForkOptions
343+
344+
override fun setWorkingDir(p0: File?) {
345+
}
346+
347+
override fun setWorkingDir(p0: Any?) {
348+
}
349+
350+
override fun setEnvironment(p0: MutableMap<String, *>?) {
351+
}
352+
353+
override fun getEnableAssertions() = false
354+
355+
override fun setEnableAssertions(p0: Boolean) {
356+
}
357+
358+
override fun getMaxHeapSize() = ""
359+
360+
override fun copyTo(p0: JavaForkOptions?) = emptyJavaForkOptions
361+
362+
override fun copyTo(p0: ProcessForkOptions?) = emptyProcessForkOptions
363+
364+
override fun getJvmArgs(): MutableList<String> {
365+
return mutableListOf()
366+
}
367+
368+
override fun getSystemProperties(): MutableMap<String, Any> {
369+
return mutableMapOf()
370+
}
371+
372+
override fun getMinHeapSize() = ""
373+
374+
override fun getEnvironment(): MutableMap<String, Any> {
375+
return mutableMapOf()
376+
}
377+
378+
override fun getAllJvmArgs(): MutableList<String> {
379+
return mutableListOf()
380+
}
381+
382+
override fun getDebug() = false
383+
384+
override fun bootstrapClasspath(vararg p0: Any?) = emptyJavaForkOptions
385+
}

scripts/deploy_snapshot.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,6 @@ elif [ "$TRAVIS_BRANCH" != "$BRANCH" ]; then
2121
echo "Skipping snapshot deployment: wrong branch. Expected '$BRANCH' but was '$TRAVIS_BRANCH'."
2222
else
2323
echo "Deploying snapshot..."
24-
./gradlew publishLibraryPublicationToSnapshotRepository --info --stacktrace
24+
./gradlew publishLibraryPublicationToSnapshotRepository --stacktrace
2525
echo "Snapshot deployed!"
2626
fi

0 commit comments

Comments
 (0)