From eb91033081f387ac7d853c632f0a3937f9230893 Mon Sep 17 00:00:00 2001 From: Marcel Date: Mon, 10 Jun 2019 13:39:40 +0200 Subject: [PATCH] Gradle 5.4.1 & tests for Android Gradle Plugin 3.6 --- buildSrc/src/main/kotlin/Libs.kt | 2 + buildSrc/src/main/kotlin/Versions.kt | 7 +-- gradle/wrapper/gradle-wrapper.properties | 2 +- plugin/android-junit5/build.gradle.kts | 4 +- .../gradle/plugins/junit5/FunctionalTests.kt | 34 ++++++++++++++ .../gradle/plugins/junit5/util/AgpVersion.kt | 3 +- .../src/test/projects/agp36x/build.gradle | 46 +++++++++++++++++++ .../src/test/projects/agp36x/settings.gradle | 15 ++++++ .../agp36x/src/main/AndroidManifest.xml | 1 + .../main/java/de/mannodermaus/app/Adder.java | 7 +++ .../java/de/mannodermaus/app/JavaTest.java | 13 ++++++ .../mannodermaus/app/JavaFreeReleaseTest.java | 13 ++++++ .../mannodermaus/app/KotlinPaidDebugTest.kt | 12 +++++ .../de/mannodermaus/app/KotlinReleaseTest.kt | 12 +++++ 14 files changed, 165 insertions(+), 6 deletions(-) create mode 100644 plugin/android-junit5/src/test/projects/agp36x/build.gradle create mode 100644 plugin/android-junit5/src/test/projects/agp36x/settings.gradle create mode 100644 plugin/android-junit5/src/test/projects/agp36x/src/main/AndroidManifest.xml create mode 100644 plugin/android-junit5/src/test/projects/agp36x/src/main/java/de/mannodermaus/app/Adder.java create mode 100644 plugin/android-junit5/src/test/projects/agp36x/src/test/java/de/mannodermaus/app/JavaTest.java create mode 100644 plugin/android-junit5/src/test/projects/agp36x/src/testFreeRelease/java/de/mannodermaus/app/JavaFreeReleaseTest.java create mode 100644 plugin/android-junit5/src/test/projects/agp36x/src/testPaidDebug/java/de/mannodermaus/app/KotlinPaidDebugTest.kt create mode 100644 plugin/android-junit5/src/test/projects/agp36x/src/testRelease/java/de/mannodermaus/app/KotlinReleaseTest.kt diff --git a/buildSrc/src/main/kotlin/Libs.kt b/buildSrc/src/main/kotlin/Libs.kt index 90c9cb12..90b4f6d6 100644 --- a/buildSrc/src/main/kotlin/Libs.kt +++ b/buildSrc/src/main/kotlin/Libs.kt @@ -37,6 +37,8 @@ object Libs { Versions.com_android_tools_build_gradle_34x const val com_android_tools_build_gradle_35x: String = "com.android.tools.build:gradle:" + Versions.com_android_tools_build_gradle_35x + const val com_android_tools_build_gradle_36x: String = "com.android.tools.build:gradle:" + + Versions.com_android_tools_build_gradle_36x /** * https://developer.android.com/studio */ diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index 3aa66807..68deba95 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -15,11 +15,12 @@ object Versions { const val aapt2: String = "3.2.1-4818971" - const val com_android_tools_build_gradle: String = "3.4.0" + const val com_android_tools_build_gradle: String = "3.4.1" const val com_android_tools_build_gradle_32x: String = "3.2.1" const val com_android_tools_build_gradle_33x: String = "3.3.2" - const val com_android_tools_build_gradle_34x: String = "3.4.0" - const val com_android_tools_build_gradle_35x: String = "3.5.0-alpha13" + const val com_android_tools_build_gradle_34x: String = "3.4.1" + const val com_android_tools_build_gradle_35x: String = "3.5.0-beta03" + const val com_android_tools_build_gradle_36x: String = "3.6.0-alpha02" const val lint_gradle: String = "26.2.1" diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 5f1b1201..f4d7b2bf 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.4-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/plugin/android-junit5/build.gradle.kts b/plugin/android-junit5/build.gradle.kts index 9c1a423a..87f38b68 100644 --- a/plugin/android-junit5/build.gradle.kts +++ b/plugin/android-junit5/build.gradle.kts @@ -71,6 +71,7 @@ tasks.named("processTestResources", Copy::class.java).configure { "AGP_33X" to Versions.com_android_tools_build_gradle_33x, "AGP_34X" to Versions.com_android_tools_build_gradle_34x, "AGP_35X" to Versions.com_android_tools_build_gradle_35x, + "AGP_36X" to Versions.com_android_tools_build_gradle_36x, "KOTLIN" to Versions.org_jetbrains_kotlin, "JUPITER_API" to Libs.junit_jupiter_api, @@ -116,7 +117,8 @@ private val agpConfigurations = listOf( AgpConfiguration("3.2", Libs.com_android_tools_build_gradle_32x), AgpConfiguration("3.3", Libs.com_android_tools_build_gradle_33x), AgpConfiguration("3.4", Libs.com_android_tools_build_gradle_34x), - AgpConfiguration("3.5", Libs.com_android_tools_build_gradle_35x) + AgpConfiguration("3.5", Libs.com_android_tools_build_gradle_35x), + AgpConfiguration("3.6", Libs.com_android_tools_build_gradle_36x) ) configurations { diff --git a/plugin/android-junit5/src/test/kotlin/de/mannodermaus/gradle/plugins/junit5/FunctionalTests.kt b/plugin/android-junit5/src/test/kotlin/de/mannodermaus/gradle/plugins/junit5/FunctionalTests.kt index 8c9495a6..94ec123e 100644 --- a/plugin/android-junit5/src/test/kotlin/de/mannodermaus/gradle/plugins/junit5/FunctionalTests.kt +++ b/plugin/android-junit5/src/test/kotlin/de/mannodermaus/gradle/plugins/junit5/FunctionalTests.kt @@ -124,6 +124,40 @@ class FunctionalTests { } } + @Test + @DisplayName("Android Gradle Plugin 3.6.x, with Flavors and Build Types") + fun agp36x() { + val fixtureRoot = File("src/test/projects/agp36x") + File(fixtureRoot, "build").deleteRecursively() + + val result = runGradle(AgpVersion.AGP_36X) + .withProjectDir(fixtureRoot) + .build() + + assertThat(result).task(":test") + .hasOutcome(TaskOutcome.SUCCESS) + assertThat(result).output().ofTask(":testFreeDebugUnitTest").apply { + contains("de.mannodermaus.app.JavaTest > test() PASSED") + executedTestCount().isEqualTo(1) + } + assertThat(result).output().ofTask(":testFreeReleaseUnitTest").apply { + contains("de.mannodermaus.app.JavaTest > test() PASSED") + contains("de.mannodermaus.app.KotlinReleaseTest > test() PASSED") + contains("de.mannodermaus.app.JavaFreeReleaseTest > test() PASSED") + executedTestCount().isEqualTo(3) + } + assertThat(result).output().ofTask(":testPaidDebugUnitTest").apply { + contains("de.mannodermaus.app.JavaTest > test() PASSED") + contains("de.mannodermaus.app.KotlinPaidDebugTest > test() PASSED") + executedTestCount().isEqualTo(2) + } + assertThat(result).output().ofTask(":testPaidReleaseUnitTest").apply { + contains("de.mannodermaus.app.JavaTest > test() PASSED") + contains("de.mannodermaus.app.KotlinReleaseTest > test() PASSED") + executedTestCount().isEqualTo(2) + } + } + @Test @DisplayName("Return Android default values") fun androidDefaultValues() { diff --git a/plugin/android-junit5/src/test/kotlin/de/mannodermaus/gradle/plugins/junit5/util/AgpVersion.kt b/plugin/android-junit5/src/test/kotlin/de/mannodermaus/gradle/plugins/junit5/util/AgpVersion.kt index d66696e3..23e191c8 100644 --- a/plugin/android-junit5/src/test/kotlin/de/mannodermaus/gradle/plugins/junit5/util/AgpVersion.kt +++ b/plugin/android-junit5/src/test/kotlin/de/mannodermaus/gradle/plugins/junit5/util/AgpVersion.kt @@ -4,7 +4,8 @@ enum class AgpVersion(val fileKey: String) { AGP_32X("agp32x"), AGP_33X("agp33x"), AGP_34X("agp34x"), - AGP_35X("agp35x"); + AGP_35X("agp35x"), + AGP_36X("agp36x"); companion object { fun latest() = AGP_34X diff --git a/plugin/android-junit5/src/test/projects/agp36x/build.gradle b/plugin/android-junit5/src/test/projects/agp36x/build.gradle new file mode 100644 index 00000000..9e3d1994 --- /dev/null +++ b/plugin/android-junit5/src/test/projects/agp36x/build.gradle @@ -0,0 +1,46 @@ +buildscript { + repositories { + google() + jcenter() + } +} + +plugins { + id "com.android.application" + id "org.jetbrains.kotlin.android" + id "de.mannodermaus.android-junit5" + id "jacoco" +} + +def version = com.android.builder.model.Version.ANDROID_GRADLE_PLUGIN_VERSION +if (version != AGP_36X) { + throw new IllegalStateException("Incorrect AGP version. Expected $AGP_36X, got $version") +} + +repositories { + google() + jcenter() +} + +android { + compileSdkVersion COMPILE_SDK_VERSION + + flavorDimensions "environment" + productFlavors { + free { + dimension "environment" + } + paid { + dimension "environment" + } + } + + testOptions.unitTests.all { + testLogging.events = ["passed", "skipped", "failed"] + } +} + +dependencies { + testImplementation JUPITER_API + testRuntimeOnly JUPITER_ENGINE +} diff --git a/plugin/android-junit5/src/test/projects/agp36x/settings.gradle b/plugin/android-junit5/src/test/projects/agp36x/settings.gradle new file mode 100644 index 00000000..3ae97621 --- /dev/null +++ b/plugin/android-junit5/src/test/projects/agp36x/settings.gradle @@ -0,0 +1,15 @@ +pluginManagement { + repositories { + google() + } + resolutionStrategy { + eachPlugin { + if (requested.id.id == "com.android.application") { + useModule("com.android.tools.build:gradle:$AGP_36X") + } + if (requested.id.id == "org.jetbrains.kotlin.android") { + useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:$KOTLIN") + } + } + } +} diff --git a/plugin/android-junit5/src/test/projects/agp36x/src/main/AndroidManifest.xml b/plugin/android-junit5/src/test/projects/agp36x/src/main/AndroidManifest.xml new file mode 100644 index 00000000..426c240f --- /dev/null +++ b/plugin/android-junit5/src/test/projects/agp36x/src/main/AndroidManifest.xml @@ -0,0 +1 @@ + diff --git a/plugin/android-junit5/src/test/projects/agp36x/src/main/java/de/mannodermaus/app/Adder.java b/plugin/android-junit5/src/test/projects/agp36x/src/main/java/de/mannodermaus/app/Adder.java new file mode 100644 index 00000000..d21fca3d --- /dev/null +++ b/plugin/android-junit5/src/test/projects/agp36x/src/main/java/de/mannodermaus/app/Adder.java @@ -0,0 +1,7 @@ +package de.mannodermaus.app; + +public class Adder { + public int add(int a, int b) { + return a + b; + } +} diff --git a/plugin/android-junit5/src/test/projects/agp36x/src/test/java/de/mannodermaus/app/JavaTest.java b/plugin/android-junit5/src/test/projects/agp36x/src/test/java/de/mannodermaus/app/JavaTest.java new file mode 100644 index 00000000..08c59a97 --- /dev/null +++ b/plugin/android-junit5/src/test/projects/agp36x/src/test/java/de/mannodermaus/app/JavaTest.java @@ -0,0 +1,13 @@ +package de.mannodermaus.app; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + +class JavaTest { + @Test + void test() { + Adder adder = new Adder(); + assertEquals(4, adder.add(2, 2), "This should succeed!"); + } +} diff --git a/plugin/android-junit5/src/test/projects/agp36x/src/testFreeRelease/java/de/mannodermaus/app/JavaFreeReleaseTest.java b/plugin/android-junit5/src/test/projects/agp36x/src/testFreeRelease/java/de/mannodermaus/app/JavaFreeReleaseTest.java new file mode 100644 index 00000000..6631487c --- /dev/null +++ b/plugin/android-junit5/src/test/projects/agp36x/src/testFreeRelease/java/de/mannodermaus/app/JavaFreeReleaseTest.java @@ -0,0 +1,13 @@ +package de.mannodermaus.app; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + +class JavaFreeReleaseTest { + @Test + void test() { + Adder adder = new Adder(); + assertEquals(4, adder.add(2, 2), "This should succeed!"); + } +} diff --git a/plugin/android-junit5/src/test/projects/agp36x/src/testPaidDebug/java/de/mannodermaus/app/KotlinPaidDebugTest.kt b/plugin/android-junit5/src/test/projects/agp36x/src/testPaidDebug/java/de/mannodermaus/app/KotlinPaidDebugTest.kt new file mode 100644 index 00000000..8fb6cadd --- /dev/null +++ b/plugin/android-junit5/src/test/projects/agp36x/src/testPaidDebug/java/de/mannodermaus/app/KotlinPaidDebugTest.kt @@ -0,0 +1,12 @@ +package de.mannodermaus.app + +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Test + +class KotlinPaidDebugTest { + @Test + fun test() { + val adder = Adder() + assertEquals(4, adder.add(2, 2), "This should succeed!") + } +} diff --git a/plugin/android-junit5/src/test/projects/agp36x/src/testRelease/java/de/mannodermaus/app/KotlinReleaseTest.kt b/plugin/android-junit5/src/test/projects/agp36x/src/testRelease/java/de/mannodermaus/app/KotlinReleaseTest.kt new file mode 100644 index 00000000..cd36ba26 --- /dev/null +++ b/plugin/android-junit5/src/test/projects/agp36x/src/testRelease/java/de/mannodermaus/app/KotlinReleaseTest.kt @@ -0,0 +1,12 @@ +package de.mannodermaus.app + +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Test + +class KotlinReleaseTest { + @Test + fun test() { + val adder = Adder() + assertEquals(4, adder.add(2, 2), "This should succeed!") + } +}