Skip to content

Commit 4b9f291

Browse files
committed
remove test variables and fix asemble deprecation
1 parent 041e9f2 commit 4b9f291

File tree

2 files changed

+26
-22
lines changed

2 files changed

+26
-22
lines changed

src/main/kotlin/com/jaredsburrows/spoon/SpoonPlugin.kt

+12-1
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@ package com.jaredsburrows.spoon
33
import com.android.build.gradle.AppExtension
44
import com.android.build.gradle.LibraryExtension
55
import com.android.build.gradle.api.ApkVariantOutput
6+
import com.android.build.gradle.api.BaseVariant
67
import com.android.build.gradle.api.TestVariant
78
import java.io.File
89
import org.gradle.api.DomainObjectSet
910
import org.gradle.api.Plugin
1011
import org.gradle.api.Project
12+
import org.gradle.api.Task
1113

1214
/** A [Plugin] which wraps the Spoon test runner. */
1315
class SpoonPlugin : Plugin<Project> {
@@ -34,7 +36,7 @@ class SpoonPlugin : Plugin<Project> {
3436
description = "Run instrumentation tests for '${variant.name}' variant."
3537
group = "Verification"
3638
outputs.upToDateWhen { false }
37-
dependsOn(variant.testedVariant.assemble, variant.assemble)
39+
dependsOn(variant.testedVariant.resolveAssemble(), variant.resolveAssemble())
3840
instrumentationApk = variant.outputs.first().outputFile
3941

4042
doFirst {
@@ -76,3 +78,12 @@ class SpoonPlugin : Plugin<Project> {
7678
private const val LIBRARY_PLUGIN = "com.android.library"
7779
}
7880
}
81+
82+
@Suppress("DEPRECATION")
83+
private fun BaseVariant.resolveAssemble(): Task {
84+
return try {
85+
assembleProvider.get()
86+
} catch (t: Throwable) {
87+
assemble
88+
}
89+
}

src/main/kotlin/com/jaredsburrows/spoon/SpoonTask.kt

+14-21
Original file line numberDiff line numberDiff line change
@@ -5,36 +5,29 @@ import com.squareup.spoon.SpoonRunner
55
import java.io.File
66
import java.time.Duration
77
import org.gradle.api.DefaultTask
8-
import org.gradle.api.GradleException
98
import org.gradle.api.Task
109
import org.gradle.api.tasks.TaskAction
1110

1211
/** A [Task] that creates and runs the Spoon test runner. */
1312
open class SpoonTask : DefaultTask() { // tasks can't be final
1413

1514
/** Use our Spoon extension. */
16-
lateinit var extension: SpoonExtension
15+
var extension: SpoonExtension = SpoonExtension()
1716

1817
/** Application APK (eg. app-debug.apk). */
19-
lateinit var applicationApk: File
18+
var applicationApk: File? = null
2019

2120
/** Instrumentation APK (eg. app-debug-androidTest.apk). */
22-
lateinit var instrumentationApk: File
21+
var instrumentationApk: File? = null
2322

2423
/** Results baseOutputDir. */
25-
lateinit var outputDir: File
26-
27-
/** TESTING ONLY */
28-
var testing: Boolean = false
29-
var testValue: Boolean = true
30-
var spoonRenderer: SpoonRunner.Builder? = null
24+
var outputDir: File? = null
3125

3226
@Suppress("unused")
3327
@TaskAction
3428
fun spoonTask() {
35-
if (extension.className.isEmpty() && extension.methodName.isNotEmpty()) {
36-
throw IllegalStateException("'${extension.methodName}' must have a fully qualified class " +
37-
"name.")
29+
check(!(extension.className.isEmpty() and extension.methodName.isNotEmpty())) {
30+
"'${extension.methodName}' must have a fully qualified class name."
3831
}
3932

4033
val builder = SpoonRunner.Builder()
@@ -55,8 +48,10 @@ open class SpoonTask : DefaultTask() { // tasks can't be final
5548
.setClearAppDataBeforeEachTest(extension.clearAppDataBeforeEachTest)
5649

5750
// APKs
58-
if (!testing) {
51+
instrumentationApk?.let {
5952
builder.setTestApk(instrumentationApk)
53+
}
54+
applicationApk?.let {
6055
builder.addOtherApk(applicationApk)
6156
}
6257

@@ -81,8 +76,8 @@ open class SpoonTask : DefaultTask() { // tasks can't be final
8176
if (extension.instrumentationArgs.isNotEmpty()) {
8277
val instrumentationArgs = hashMapOf<String, String>()
8378
extension.instrumentationArgs.forEach { instrumentation ->
84-
if (!(instrumentation.contains(':') or instrumentation.contains('='))) {
85-
throw UnsupportedOperationException("Please use '=' or ':' to separate arguments.")
79+
check(!(instrumentation.contains(':') or instrumentation.contains('='))) {
80+
"Please use '=' or ':' to separate arguments."
8681
}
8782

8883
val keyVal = if (instrumentation.contains(':')) {
@@ -110,12 +105,10 @@ open class SpoonTask : DefaultTask() { // tasks can't be final
110105
builder.addDevice(it)
111106
}
112107

113-
spoonRenderer = builder
108+
builder.build().run()
114109

115-
val success = if (testing) testValue else builder.build().run()
116-
if (!success && !extension.ignoreFailures) {
117-
throw GradleException("Tests failed! " +
118-
"See ${ConsoleRenderer.asClickableFileUrl(File(outputDir, "index.html"))}")
110+
check(!extension.ignoreFailures) {
111+
"Tests failed! See ${ConsoleRenderer.asClickableFileUrl(File(outputDir, "index.html"))}"
119112
}
120113
}
121114

0 commit comments

Comments
 (0)