From 1e66e8d14294b9675a2ce9361b486a307e4ff67d Mon Sep 17 00:00:00 2001 From: Marcel Date: Fri, 26 Apr 2019 16:41:33 +0200 Subject: [PATCH 01/11] Update internal AGP version to 3.4.0 stable --- buildSrc/src/main/kotlin/Versions.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index ae4dba19..adb3c7d1 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -15,7 +15,7 @@ object Versions { const val aapt2: String = "3.2.1-4818971" - const val com_android_tools_build_gradle: String = "3.4.0-rc03" + const val com_android_tools_build_gradle: String = "3.4.0" 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-rc03" From 7d7bd2ff87b3354a3858c83853578110d6b05be3 Mon Sep 17 00:00:00 2001 From: Marcel Date: Fri, 26 Apr 2019 16:44:45 +0200 Subject: [PATCH 02/11] Update to Gradle 5.4 --- gradle/wrapper/gradle-wrapper.jar | Bin 55190 -> 55616 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- plugin/gradlew | 18 +++++++++++++++++- plugin/gradlew.bat | 18 +++++++++++++++++- 4 files changed, 35 insertions(+), 3 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 87b738cbd051603d91cc39de6cb000dd98fe6b02..5c2d1cf016b3885f6930543d57b744ea8c220a1a 100644 GIT binary patch delta 3320 zcmai0c|2768`iN!wwN(!Oxeo5?`tVU3{m#%jC~noTx!q_nHtNnR`zAgWC@krB#b55 znJk4YA);()+(!K-w|npJuix)IpYu7-^SqzuJ>T~|?;j_-ma(;-@!<_I_B>B@4FVej z11CRtM@$8afpkN^v*te{ycR9yTldxXJbmio?@}x{9}zaw&=aQt(a^ZXN9S3i8a+Z% zGc@&(5}jplZjJKk2wNlTp(mbeKL5J9Gjo==yT{-eVKj?*rT1%bQ@%#Xce~~1f{19^ zoD75QEoSzDVh@!9qG4yl`;9=Ysp?rRX=(8$VDRz=R+oA3>jLxjW-H!-2biNSYuy)U z7-B-qC5l;>qjMTg!DbWPY}h7qxi6xp)_T)_O2+*&NDg?v;RyY@5XtWHx%(ImQ_3E% zA%$s3xrxE0Fk>DhG!pG)4}I!pWJl~QtV_3Jl2W4PuWWssMq^UpGatK+4CING9pB#5 z_NDc)aonVrZuXsr5!RcE#?aXFZQjt2VMd)-p00K$EheT?H!m_D2Mdqq;0moaO=C&y zgJnvzgUn!wkx^{r049pU#gsIMhl`%{MDNl;}JRbneC zSTB=5f;o9=2Rt24_lt&%%f~m{Ts)zu8H9j`INrgMp>l-|k%Kj%U`OXL1J2e+CJHJxreHLD_#o*ZeuXE4uGDQAJS_PpEGt7hmd7psmLEBL^h zD#JbHiklZEXkk9(6uF$ErsUu^jg7c~1oRS&CuTq*Xg_cOvGw~FZ&1#p(6|jz9lJnP zSIJ)sX_W2$PSksX&}*_ejz+t*X)xK|JcakaMRGd%c*R)cQcT|?sM^#{fdjh5_I$iK zBX_d;wz+cf>b}r!i3yo6eaua)d`|Mi_|Q3mAz5Qn?#~xgE9In<;TwYN^~mtaYy#WU z*ffWtxwlk&!e@UfqQ$bn23RDFV3o-H_WM}44yQpYw;JuRf$at#XX-qmuVnKqg-Bo# zJjZE39)!{i$qJh?oJzVzWFDlSW;{Wf`Z)33Y$Fh^+qasrsEJsfy9yhyTFe?Lej&3n zEAS(D8WCt(ew(SGD z-J#7@l?KI*ZbS)AVQ23qV&{c=$@zUp0@6=kZp+5by+gnAWdB||7e=!yJ|WTpG0OC7 zKlKWFv6#(>nrEq@d1i-#L9SVxTDNb1DaY%2$=@)`k&3s8wz$M*;THa&!2Isj%6CQS zY>A4HtmWY3@9e@F)mCHJQzBz~Lt(wcJE{!CAr=wxn4|5n(jslTy)~IF?tNK zD^2#hTM0d6MDg>`9;s5*(4W1V8y}F8OT6Xap{`=h1XVKO3zrBh=;JnIs*RB>@7t5T zwV=G^T)L=(9P7tS={6`tEBBBm^u~_!-#m75G*h}y_Jj7|STtiY_LDR5UUHI@awWmB zDn6q9{2M-EHaTm53ln%ENJ$HpLwRcL>7^hUrM=}&`qmWTgtr{Ul*Lqcd_9S0xZ1s>F2dVd(s)3&$`gxFAu6jXYIS ze#M~w@=X@lm)sFI4EEiqKh7JxN=_?+}D=iHCc&S2<^VPZ6 zYKXZgvi(Yne9}k6o=ezgquABVB77}x$nKXh`@LjH&lQPqm_;MTL>4RGO|E#_7AS4@43rz=ij?gcMZalnd-JK4ILhL)Ee(3G zN}g99HmhxoBjHR~y@b>-7{f+`p zIZ<^8%d;wCA#xfwSc6$DNVPjAX6FCkb|MQ|6hFyz9UhoLF0^xUd#*^2Ofn zOJgmwDyb1=Z8T)ArRy|VQOM+BrhZ>W_ELJ6u(d^JTu|j%*6g8JKZ-ewoj)sXJCdS= zHOo?HscL;Z`H18}%WnE1&o42KZ+=fg(*VN>t>kRkcd{mP9NF6;MnzH&m2WsD)sX~h zbhv|Ux$w2avQwoI`IKiGMLrL;Z>R}Y_0K*L=63V z)ut+5tM74Glzb?92kbu5@3M#1Hi7K3$c)?TL$}`aKf0hC3`r!>Xy3!f{ z`}Y#@$`|mG1JlKzVE!vD04aX}x#hV*+AC>bQ|%XJ1<&;=0?uX!RM?CIB=+!tgkB-w zu*HF--^U4#nG1mXz0v^0@|UCs1lt}!1zTaTwoe+k?sPym`pyB-F25ivXx)#1|1%|e zJ7Vpujkk#Lu%U{v6xiQ5LW2`~QXrR`ja@*L=b0ejT977v%C)0WAik0gV7U z6a-7##p#p>>>3a{^Z}e3Z~?A|foBFU12bqaEE*0vqdCCVLFq%{;F%$Dkb6i8;Qo!C z&;zkU(!i5zbSMd)zQzg8(kU^HPQ^flVIzR)<^jwbwget09YD?zV*rx+mx@0IN{#S< zsB|8Ve>>sJI7sHE!@=(((ttqL0ks%C4M^r5!0H?rJ;MV|jtT)1cMl{|9xo_Okp@Ka ze^CzbCPf?IDFWLlE`V1FDDpZ0C@7~VMZt%!6%SFtxz{!Tb1UfBDEg~49x!4|2#_L! zX=6UXeh28_?VY*suC^Sy!?XXp?9-G{ zEbF`ELqycMcTK-$-pw|Jox9S^<_NX$7{PI7aX1p5N>aOyj&D01H#;3?=q^!=_mq@k zUHheWO_|CDYA~8r<-%q8&Gm$uPSx4S`reKPnv?Nif4kS)^smTg&m@kLYT87txGxGxw+Qc zTAi=`vzavOlyLrgf2A~;1~Gx$jcb|fkhfctRt6CjRooL|#wr)(*8D4n;2cBe>p9_T zCeJf!IgCH0h1m)UPLk3hZz120oe5YH$oXjSMHcPv@#wX;OP5bBSJMavm2}5Q8(V&# zXGA!+dAwOiXuQ)|+XwF2HW1@_MPm3*v{M86V_~+xk1K7cI7mxBKU5#bofCjZqqjs$ z(sipv#Ul%KJ)h?ua}a3Dg(6yaxeJ(HD-&`AT9kZJVLJTz?WIfgao$bYwEhXh+&GA= zkpI03HVxtWc*H!~z~9%DC;;Qej=WppOD!i1$MO1`&8LW%IWd2sbnS7j+<0b`v1%qx!owUU+ZIHJFp1yH9BFvUYI^up=ZYX$K_YM|Bn2fCG3sq#(EpRB$|A9~9*^M%Sq)EAjr0&W`hHyz96Z9h*odHK|Ju$JQ0c zO9oayZQv;2b{pLJo`T)C%yS@sAKO*WC%22XDmrdRTd;uFr*sb_{GDl=*Y`l*;>lNWh=XCbn#V}C&jmw3>t zNH(fnG%j@AI$TSggf(e3DxrpHjnpeKExsb|hC`kxjD4HUSmu)&aJNt&DtCWh#51*} zS!qfplP(f0`hJ)VHrXFD_uB7ia4#%U)3S8lGY9^(T1)M8xQxP*3w4&QJr~O`$A&N5 z_taom$34zt+reJDV?oZ*qr5ERUH7#~xm7)D(u#q#m`~~-F+TZ6Q*L)s_#T3GZUuZM zhCH9!{qXnD)9jln$|GDeDPqo=+D6#vQkAjdHtT>{VxU#AQJW-je=UWN5*R>v5vWF6 zK_6z?#thq>&%@fu5epvO$rfx`v9GojdOLGFaQ2V8?Ri z(?L2JBK(;G)bIF7r5T6Ahzst5k4j#hvhl3a`@Ksfyj3^Cx}zGE)vm$ecB$?~2`S&e zE)Nx6TiDO*JO6UmWWc+zLDmnII+)ROEvW3_{*%Fjs8Q^k4+Z&cJ0lp=@p*N!fw0>L zPSWrxar=HPDCwZnmN%orA-K2142{bJ0el>N{KM(xoHJu_HWSQihq^y%SEmj>CsBjl zj6)jxqm7NwiVHh-xQ`ex^02-y_ZO`A`P(1UwLK5G_T8=uI8@e%Kh31Xay z>H$7OG8cQ%>c_RjXhRA|Yh=93MnM)V0JlD#yP-1YNx}5`sg}-vE%slfve&}e$*L>+ zSAq_CMc5SYx6N)5h%-)?JOAhiVM5`TWT7?<9 zKKxMMb9GXHpQ1ajAr?!hxcauobJLf{IpvJ=9ny}FwdGCYmwgj?0qhIG{5zbTTVc2b zo+3h|{F_Yg96k{?rVn`m`%d??#avI-eh^XnTH2r*o>5n>`UuIsuCIeN5Br62W!Yy#8)0uWcVG%-QnMHczpWoe zftoSf-WJq~x8`|ws<-9{Va9@s#SoH3uw`>4!~uyB-(lV)SD9f(TPNa!o7JLL%!a)@gUmedno%~}$ z#zZLYah$5mf@Z2}a(oDDM^$qq>*nb;?aVn?D`($Om=?j+T%S?eSgR1t=zzwGw|kvM zt~WiOO&UVW=7N=8ERxM<4?Wbj4bPIP4z3=hjp(uuT}ne*E9ct0)Lsk?bG=1nNo=oB z0JEoKzAw45q-lB!IbJKsY=Lpru48qY6ql!Z#J13ywC&7??l&AtxiowZ|Cg(k*UE#@ zrJm|m^EV_6jz}f($PrOb`S;imdEwtu`#cCu3aMXBgUUH4t2j_qu=KmOO645(v(_DL z^G5PF%RR0@X5D{(V%x5L{xD1Sa>^wR+$0j(DeVfwk;tp3<@i$~qOsvx^uUy!zV8G0~0`$f?VV=?vm zOwYnZB>UV_b#sh6ibtN`5I+l%mTE9T%*J!xaz}cWisUNLg@>nEiKv4hgmv`5C)GIDbBOgq{?5K-!=>z{CLJ$wIBkL-~yV{}~e*^#eZ1f%)RR;DgcM zfOqnA#42!t$D;@!QT3n50ve1d0$Zl^m}ABc){bz2HDhq#o&{ZLlQ=*lO9Alv7y_uW z`bTL2KkVsP<{%6$`1yeL}DmCZuxPZRJp*( z*Kk1M23@g@UjhQ6PEZ{58CL@Aqv>cB0|#ltT;SR`95{}ptMe0@zz&v<>j{GNDt-bE zn5EFw?u0e)Ee+J0^aq@C>E_j>A%MyU^@?Rcohe{^TCd{d<=ub5$bWAh Date: Fri, 26 Apr 2019 16:51:05 +0200 Subject: [PATCH 03/11] Use 3.4.0 stable for the Functional Tests --- buildSrc/src/main/kotlin/Versions.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index adb3c7d1..a7fdf5c1 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -18,7 +18,7 @@ object Versions { const val com_android_tools_build_gradle: String = "3.4.0" 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-rc03" + const val com_android_tools_build_gradle_34x: String = "3.4.0" const val com_android_tools_build_gradle_35x: String = "3.5.0-alpha07" const val lint_gradle: String = "26.2.1" From 5317f02fced2b395dce7e5d3fee8c08452e7a1fc Mon Sep 17 00:00:00 2001 From: Marcel Date: Fri, 26 Apr 2019 17:09:14 +0200 Subject: [PATCH 04/11] Remove outdated interop workarounds for Java artifact files This will achieve compatibility with AGP versions past 3.5.0-alpha12 --- .../plugins/junit5/GroovyInterop.groovy | 35 +++++-------------- .../gradle/plugins/junit5/Interop.kt | 4 +-- .../gradle/plugins/junit5/providers/Java.kt | 4 +-- 3 files changed, 13 insertions(+), 30 deletions(-) diff --git a/plugin/android-junit5/src/main/groovy/de/mannodermaus/gradle/plugins/junit5/GroovyInterop.groovy b/plugin/android-junit5/src/main/groovy/de/mannodermaus/gradle/plugins/junit5/GroovyInterop.groovy index 867559a6..e6eed445 100644 --- a/plugin/android-junit5/src/main/groovy/de/mannodermaus/gradle/plugins/junit5/GroovyInterop.groovy +++ b/plugin/android-junit5/src/main/groovy/de/mannodermaus/gradle/plugins/junit5/GroovyInterop.groovy @@ -2,6 +2,7 @@ package de.mannodermaus.gradle.plugins.junit5 import com.android.annotations.NonNull import com.android.build.gradle.api.BaseVariant +import com.android.build.gradle.internal.scope.InternalArtifactType import com.android.build.gradle.internal.scope.VariantScope import com.android.build.gradle.internal.variant.BaseVariantData import com.android.build.gradle.tasks.factory.AndroidUnitTest @@ -23,9 +24,6 @@ class GroovyInterop { private static final def VariantType = reflectiveClass("com.android.builder.core.VariantTypeImpl") .or { reflectiveClass("com.android.builder.core.VariantType") } - // Java outputs are accessed through this enum in AGP 3.2.0-alpha02 - private static final def InternalArtifactType = - reflectiveClass("com.android.build.gradle.internal.scope.InternalArtifactType") // No instances private GroovyInterop() { throw new AssertionError() } @@ -56,34 +54,19 @@ class GroovyInterop { } /** - * Obtains the Java output directory of the provided VariantScope in a safe manner. - * TODO Clean this mess up once the Android Gradle Plugin 3.2.0 finally decides on something. :| + * Obtains the Java artifact files of the provided VariantScope in a safe manner. * - * @because In Android Gradle Plugin 3.2.0-alpha02, the original method was removed - * @param variant VariantScope to retrieve the Java output directory from + * @because Some scopes, especially for Jacoco, don't have the files at hand through this API + * @param variant VariantScope to retrieve the Java artifact files from * @return That file */ @NonNull - static Set variantScope_javaOutputDirs(VariantScope scope) { - if (scope.hasProperty("buildArtifactsHolder") && InternalArtifactType.isPresent()) { - def artifactType = InternalArtifactType - .map { it.getDeclaredField("JAVAC").get(null) } - .get() - if (scope.buildArtifactsHolder.hasArtifact(artifactType)) { - // 3.2.0-alpha04 and above: - // Java outputs are moved into a subdirectory exposed by the compilation BuildArtifact - return scope.buildArtifactsHolder.getArtifactFiles(artifactType).files - } else { - // 3.2.0-alpha02 and above: - // Java outputs are still inside the "intermediates/classes" directory, - // but there is no public API for that, so construct the path yourself - return [new File(scope.globalScope.intermediatesDir, - "/classes/" + scope.variantConfiguration.dirName)] - } + static Set variantScope_getJavacArtifactFiles(VariantScope scope) { + if (scope.artifacts.hasArtifact(InternalArtifactType.JAVAC)) { + return scope.artifacts.getArtifactFiles(InternalArtifactType.JAVAC).files } else { - // Below 3.2.0-alpha02: - // Java outputs are expressed through the javaOutputDir property - return [scope.javaOutputDir] + return [new File(scope.globalScope.intermediatesDir, + "/classes/" + scope.variantConfiguration.dirName)] } } diff --git a/plugin/android-junit5/src/main/kotlin/de/mannodermaus/gradle/plugins/junit5/Interop.kt b/plugin/android-junit5/src/main/kotlin/de/mannodermaus/gradle/plugins/junit5/Interop.kt index af1ba57a..f7d149a8 100644 --- a/plugin/android-junit5/src/main/kotlin/de/mannodermaus/gradle/plugins/junit5/Interop.kt +++ b/plugin/android-junit5/src/main/kotlin/de/mannodermaus/gradle/plugins/junit5/Interop.kt @@ -18,8 +18,8 @@ import java.io.File val BaseVariant.variantData: BaseVariantData get() = GroovyInterop.baseVariant_variantData(this) -val VariantScope.safeJavaOutputDirs: Set - get() = GroovyInterop.variantScope_javaOutputDirs(this) +val VariantScope.safeJavacArtifactFiles: Set + get() = GroovyInterop.variantScope_getJavacArtifactFiles(this) val AndroidUnitTest.safeResCollection: Set? get() = GroovyInterop.androidUnitTest_resCollection(this) diff --git a/plugin/android-junit5/src/main/kotlin/de/mannodermaus/gradle/plugins/junit5/providers/Java.kt b/plugin/android-junit5/src/main/kotlin/de/mannodermaus/gradle/plugins/junit5/providers/Java.kt index 1382970b..9828a786 100644 --- a/plugin/android-junit5/src/main/kotlin/de/mannodermaus/gradle/plugins/junit5/providers/Java.kt +++ b/plugin/android-junit5/src/main/kotlin/de/mannodermaus/gradle/plugins/junit5/providers/Java.kt @@ -2,7 +2,7 @@ package de.mannodermaus.gradle.plugins.junit5.providers import com.android.build.gradle.api.BaseVariant import de.mannodermaus.gradle.plugins.junit5.internal.unitTestVariant -import de.mannodermaus.gradle.plugins.junit5.safeJavaOutputDirs +import de.mannodermaus.gradle.plugins.junit5.safeJavacArtifactFiles import de.mannodermaus.gradle.plugins.junit5.variantData /** @@ -25,5 +25,5 @@ class JavaDirectoryProvider(private val variant: BaseVariant) : DirectoryProvide .toSet() private fun classFoldersOf(variant: BaseVariant) = - variant.variantData.scope.safeJavaOutputDirs + variant.variantData.scope.safeJavacArtifactFiles } From 65e56e865008dd26261aa171b1cd327292d4501f Mon Sep 17 00:00:00 2001 From: Marcel Date: Fri, 26 Apr 2019 17:10:50 +0200 Subject: [PATCH 05/11] Remove more outdated interop workarounds --- .../plugins/junit5/GroovyInterop.groovy | 42 ------------------- .../gradle/plugins/junit5/Interop.kt | 10 ----- 2 files changed, 52 deletions(-) diff --git a/plugin/android-junit5/src/main/groovy/de/mannodermaus/gradle/plugins/junit5/GroovyInterop.groovy b/plugin/android-junit5/src/main/groovy/de/mannodermaus/gradle/plugins/junit5/GroovyInterop.groovy index e6eed445..dcac9720 100644 --- a/plugin/android-junit5/src/main/groovy/de/mannodermaus/gradle/plugins/junit5/GroovyInterop.groovy +++ b/plugin/android-junit5/src/main/groovy/de/mannodermaus/gradle/plugins/junit5/GroovyInterop.groovy @@ -5,14 +5,11 @@ import com.android.build.gradle.api.BaseVariant import com.android.build.gradle.internal.scope.InternalArtifactType import com.android.build.gradle.internal.scope.VariantScope import com.android.build.gradle.internal.variant.BaseVariantData -import com.android.build.gradle.tasks.factory.AndroidUnitTest import com.annimon.stream.Optional import org.gradle.api.Project import org.gradle.api.file.ConfigurableFileCollection import org.gradle.testing.jacoco.tasks.JacocoReportBase -import javax.annotation.Nullable - /** * Utility functions exposed to Kotlin consumers * that can't safely access Groovy members otherwise, @@ -70,45 +67,6 @@ class GroovyInterop { } } - /** - * Obtains the Assets Collection of the given AndroidUnitTest. - * - * @because 'assetsCollection' type changed from FileCollection to BuildArtifact in Android Gradle Plugin 3.2.0-alpha07 - * @param test The Android JUnit 4 test to access - * @return Its assets collection - */ - @Nullable - static Set androidUnitTest_assetsCollection(AndroidUnitTest test) { - def collection = test.assetsCollection - return collection == null ? null : collection.files - } - - /** - * Obtains the Res Collection of the given AndroidUnitTest. - * - * @because 'resCollection' type changed from FileCollection to BuildArtifact in Android Gradle Plugin 3.2.0-alpha11 - * @param test The Android JUnit 4 test to access - * @return Its assets collection - */ - @Nullable - static Set androidUnitTest_resCollection(AndroidUnitTest test) { - def collection = test.resCollection - return collection == null ? null : collection.files - } - - /** - * Obtains the Merged Manifest of the given AndroidUnitTest. - * - * @because 'mergedManifest' type changed from FileCollection to BuildArtifact in Android Gradle Plugin 3.2.0-alpha07 - * @param test The Android JUnit 4 test to access - * @return Its merged manifest - */ - @Nullable - static Set androidUnitTest_mergedManifest(AndroidUnitTest test) { - def collection = test.mergedManifest - return collection == null ? null : collection.files - } - /** * Obtains the task name prefix for Unit Test variants. * diff --git a/plugin/android-junit5/src/main/kotlin/de/mannodermaus/gradle/plugins/junit5/Interop.kt b/plugin/android-junit5/src/main/kotlin/de/mannodermaus/gradle/plugins/junit5/Interop.kt index f7d149a8..a6bc0dfb 100644 --- a/plugin/android-junit5/src/main/kotlin/de/mannodermaus/gradle/plugins/junit5/Interop.kt +++ b/plugin/android-junit5/src/main/kotlin/de/mannodermaus/gradle/plugins/junit5/Interop.kt @@ -3,7 +3,6 @@ package de.mannodermaus.gradle.plugins.junit5 import com.android.build.gradle.api.BaseVariant import com.android.build.gradle.internal.scope.VariantScope import com.android.build.gradle.internal.variant.BaseVariantData -import com.android.build.gradle.tasks.factory.AndroidUnitTest import org.gradle.api.Project import org.gradle.testing.jacoco.tasks.JacocoReportBase import java.io.File @@ -21,15 +20,6 @@ val BaseVariant.variantData: BaseVariantData val VariantScope.safeJavacArtifactFiles: Set get() = GroovyInterop.variantScope_getJavacArtifactFiles(this) -val AndroidUnitTest.safeResCollection: Set? - get() = GroovyInterop.androidUnitTest_resCollection(this) - -val AndroidUnitTest.safeAssetsCollection: Set? - get() = GroovyInterop.androidUnitTest_assetsCollection(this) - -val AndroidUnitTest.safeMergedManifest: Set? - get() = GroovyInterop.androidUnitTest_mergedManifest(this) - /* * Compatibility methods for multiple Gradle versions. */ From efbc549e77cae4988ed42ffc54b87150c4ef1fb0 Mon Sep 17 00:00:00 2001 From: Marcel Date: Fri, 26 Apr 2019 17:16:03 +0200 Subject: [PATCH 06/11] =?UTF-8?q?Remove=20more=20interop=20workarounds=20t?= =?UTF-8?q?hat=20don=E2=80=99t=20need=20to=20be=20there=20any=20longer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugins/junit5/GroovyInterop.groovy | 38 ++++--------------- 1 file changed, 7 insertions(+), 31 deletions(-) diff --git a/plugin/android-junit5/src/main/groovy/de/mannodermaus/gradle/plugins/junit5/GroovyInterop.groovy b/plugin/android-junit5/src/main/groovy/de/mannodermaus/gradle/plugins/junit5/GroovyInterop.groovy index dcac9720..4777f721 100644 --- a/plugin/android-junit5/src/main/groovy/de/mannodermaus/gradle/plugins/junit5/GroovyInterop.groovy +++ b/plugin/android-junit5/src/main/groovy/de/mannodermaus/gradle/plugins/junit5/GroovyInterop.groovy @@ -5,7 +5,7 @@ import com.android.build.gradle.api.BaseVariant import com.android.build.gradle.internal.scope.InternalArtifactType import com.android.build.gradle.internal.scope.VariantScope import com.android.build.gradle.internal.variant.BaseVariantData -import com.annimon.stream.Optional +import com.android.builder.core.VariantTypeImpl import org.gradle.api.Project import org.gradle.api.file.ConfigurableFileCollection import org.gradle.testing.jacoco.tasks.JacocoReportBase @@ -17,27 +17,9 @@ import org.gradle.testing.jacoco.tasks.JacocoReportBase * across all supported versions of the Android Gradle Plugin.*/ class GroovyInterop { - // Access to UNIT_TEST was moved from VariantType to VariantTypeImpl in AGP 3.2.0-alpha06 - private static final def VariantType = - reflectiveClass("com.android.builder.core.VariantTypeImpl") - .or { reflectiveClass("com.android.builder.core.VariantType") } - // No instances private GroovyInterop() { throw new AssertionError() } - /** - * Attempts to look up a Class based on its FQCN, returns an empty Optional if this fails - * @param fqcn Fully qualified class name - * @return The class, or an empty Optional - */ - private static Optional reflectiveClass(String fqcn) { - try { - return Optional.of(Class.forName(fqcn)) - } catch (ignored) { - return Optional.empty() - } - } - /** * Obtains the VariantData of the provided Variant. * @@ -70,29 +52,23 @@ class GroovyInterop { /** * Obtains the task name prefix for Unit Test variants. * - * @because In Android Gradle Plugin 3.2.0-alpha06, the underlying constants on VariantType were renamed - * @return The unit test prefix + * @because Kotlin cannot see the VariantTypeImpl class + * @return The unit test task prefix */ @NonNull static String variantType_unitTestPrefix() { - return VariantType - .map { it.getDeclaredField("UNIT_TEST").get(null) } - .map { it.prefix } - .orElseThrow { new IllegalArgumentException("can't get VariantType.UNIT_TEST.prefix") } + return VariantTypeImpl.UNIT_TEST.prefix } /** * Obtains the task name suffix for Unit Test variants. * - * @because In Android Gradle Plugin 3.2.0-alpha06, the underlying constants on VariantType were renamed - * @return The unit test prefix + * @because Kotlin cannot see the VariantTypeImpl class + * @return The unit test task prefix */ @NonNull static String variantType_unitTestSuffix() { - return VariantType - .map { it.getDeclaredField("UNIT_TEST").get(null) } - .map { it.suffix } - .orElseThrow { new IllegalArgumentException("can't get VariantType.UNIT_TEST.suffix") } + return VariantTypeImpl.UNIT_TEST.suffix } /** From 926598f2fed1e68cb575051c70b5bac20d11dd71 Mon Sep 17 00:00:00 2001 From: Marcel Date: Fri, 26 Apr 2019 17:32:45 +0200 Subject: [PATCH 07/11] Remove workarounds for old AGP versions in unit tests --- .../gradle/plugins/junit5/PluginSpec.kt | 42 +++++-------------- 1 file changed, 10 insertions(+), 32 deletions(-) diff --git a/plugin/android-junit5/src/test/kotlin/de/mannodermaus/gradle/plugins/junit5/PluginSpec.kt b/plugin/android-junit5/src/test/kotlin/de/mannodermaus/gradle/plugins/junit5/PluginSpec.kt index a4a1addb..cf71dbe5 100644 --- a/plugin/android-junit5/src/test/kotlin/de/mannodermaus/gradle/plugins/junit5/PluginSpec.kt +++ b/plugin/android-junit5/src/test/kotlin/de/mannodermaus/gradle/plugins/junit5/PluginSpec.kt @@ -333,38 +333,16 @@ class PluginSpec : Spek({ // Create some fake files to verify the Jacoco tree beforeEachTest { - // Since the location of intermediate class files changed in different - // versions of the Android Gradle Plugin, - // create each class file in multiple directories to remain compatible with all approaches - // TODO Clean this mess up once the Android Gradle Plugin 3.2.0 finally decides on something. :| - listOf( - // AGP 3.2.0-alpha07 and above - "build/intermediates/javac/debug/compileDebugJavaWithJavac/classes", - // AGP 3.2.0-alpha06 - "build/intermediates/artifact_transform/compileDebugJavaWithJavac/classes", - // AGP 3.2.0-alpha04 and above - "build/intermediates/artifact_transform/javac/debug/classes", - // Everything below - "build/intermediates/classes/debug").forEach { folder -> - project.file(folder).mkdirs() - project.file("$folder/R.class").createNewFile() - project.file("$folder/FirstFile.class").createNewFile() - project.file("$folder/SecondFile.class").createNewFile() - } - - listOf( - // AGP 3.2.0-alpha07 and above - "build/intermediates/javac/release/compileReleaseJavaWithJavac/classes", - // AGP 3.2.0-alpha06 - "build/intermediates/artifact_transform/compileReleaseJavaWithJavac/classes", - // AGP 3.2.0-alpha04 and above - "build/intermediates/artifact_transform/javac/release/classes", - // Everything below - "build/intermediates/classes/release").forEach { folder -> - project.file(folder).mkdirs() - project.file("$folder/R.class").createNewFile() - project.file("$folder/SecondFile.class").createNewFile() - } + val debugFolder = "build/intermediates/classes/debug" + project.file(debugFolder).mkdirs() + project.file("$debugFolder/R.class").createNewFile() + project.file("$debugFolder/FirstFile.class").createNewFile() + project.file("$debugFolder/SecondFile.class").createNewFile() + + val releaseFolder = "build/intermediates/classes/release" + project.file(releaseFolder).mkdirs() + project.file("$releaseFolder/R.class").createNewFile() + project.file("$releaseFolder/SecondFile.class").createNewFile() project.file("src/main/java").mkdirs() project.file("src/main/java/OkFile.java").createNewFile() From ec3ff38e9ab7a3a0f6bddfabccf752e4bd9936b1 Mon Sep 17 00:00:00 2001 From: Marcel Date: Fri, 26 Apr 2019 17:35:12 +0200 Subject: [PATCH 08/11] Bump Functional Tests for AGP 3.5.x to the latest alpha --- buildSrc/src/main/kotlin/Versions.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index a7fdf5c1..3aa66807 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -19,7 +19,7 @@ object Versions { 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-alpha07" + const val com_android_tools_build_gradle_35x: String = "3.5.0-alpha13" const val lint_gradle: String = "26.2.1" From 1429861742366a98620ce1e8f77120a78bfd604c Mon Sep 17 00:00:00 2001 From: Marcel Date: Fri, 26 Apr 2019 17:40:51 +0200 Subject: [PATCH 09/11] Revert "Remove workarounds for old AGP versions in unit tests" This reverts commit 926598f2fed1e68cb575051c70b5bac20d11dd71. --- .../gradle/plugins/junit5/PluginSpec.kt | 42 ++++++++++++++----- 1 file changed, 32 insertions(+), 10 deletions(-) diff --git a/plugin/android-junit5/src/test/kotlin/de/mannodermaus/gradle/plugins/junit5/PluginSpec.kt b/plugin/android-junit5/src/test/kotlin/de/mannodermaus/gradle/plugins/junit5/PluginSpec.kt index cf71dbe5..a4a1addb 100644 --- a/plugin/android-junit5/src/test/kotlin/de/mannodermaus/gradle/plugins/junit5/PluginSpec.kt +++ b/plugin/android-junit5/src/test/kotlin/de/mannodermaus/gradle/plugins/junit5/PluginSpec.kt @@ -333,16 +333,38 @@ class PluginSpec : Spek({ // Create some fake files to verify the Jacoco tree beforeEachTest { - val debugFolder = "build/intermediates/classes/debug" - project.file(debugFolder).mkdirs() - project.file("$debugFolder/R.class").createNewFile() - project.file("$debugFolder/FirstFile.class").createNewFile() - project.file("$debugFolder/SecondFile.class").createNewFile() - - val releaseFolder = "build/intermediates/classes/release" - project.file(releaseFolder).mkdirs() - project.file("$releaseFolder/R.class").createNewFile() - project.file("$releaseFolder/SecondFile.class").createNewFile() + // Since the location of intermediate class files changed in different + // versions of the Android Gradle Plugin, + // create each class file in multiple directories to remain compatible with all approaches + // TODO Clean this mess up once the Android Gradle Plugin 3.2.0 finally decides on something. :| + listOf( + // AGP 3.2.0-alpha07 and above + "build/intermediates/javac/debug/compileDebugJavaWithJavac/classes", + // AGP 3.2.0-alpha06 + "build/intermediates/artifact_transform/compileDebugJavaWithJavac/classes", + // AGP 3.2.0-alpha04 and above + "build/intermediates/artifact_transform/javac/debug/classes", + // Everything below + "build/intermediates/classes/debug").forEach { folder -> + project.file(folder).mkdirs() + project.file("$folder/R.class").createNewFile() + project.file("$folder/FirstFile.class").createNewFile() + project.file("$folder/SecondFile.class").createNewFile() + } + + listOf( + // AGP 3.2.0-alpha07 and above + "build/intermediates/javac/release/compileReleaseJavaWithJavac/classes", + // AGP 3.2.0-alpha06 + "build/intermediates/artifact_transform/compileReleaseJavaWithJavac/classes", + // AGP 3.2.0-alpha04 and above + "build/intermediates/artifact_transform/javac/release/classes", + // Everything below + "build/intermediates/classes/release").forEach { folder -> + project.file(folder).mkdirs() + project.file("$folder/R.class").createNewFile() + project.file("$folder/SecondFile.class").createNewFile() + } project.file("src/main/java").mkdirs() project.file("src/main/java/OkFile.java").createNewFile() From dc6a3f7793ec91eb1a9a5e0ff28e4c6bdae7a671 Mon Sep 17 00:00:00 2001 From: Marcel Date: Fri, 26 Apr 2019 17:54:03 +0200 Subject: [PATCH 10/11] Apply Jacoco plugin to the base AGP Functional Tests This can catch incompatibilities in the future, just like the one related to javaOutputDir --- .../mannodermaus/gradle/plugins/junit5/PluginSpec.kt | 12 ------------ .../src/test/projects/agp32x/build.gradle | 1 + .../src/test/projects/agp33x/build.gradle | 1 + .../src/test/projects/agp34x/build.gradle | 1 + .../src/test/projects/agp35x/build.gradle | 1 + 5 files changed, 4 insertions(+), 12 deletions(-) diff --git a/plugin/android-junit5/src/test/kotlin/de/mannodermaus/gradle/plugins/junit5/PluginSpec.kt b/plugin/android-junit5/src/test/kotlin/de/mannodermaus/gradle/plugins/junit5/PluginSpec.kt index a4a1addb..42eca729 100644 --- a/plugin/android-junit5/src/test/kotlin/de/mannodermaus/gradle/plugins/junit5/PluginSpec.kt +++ b/plugin/android-junit5/src/test/kotlin/de/mannodermaus/gradle/plugins/junit5/PluginSpec.kt @@ -338,13 +338,7 @@ class PluginSpec : Spek({ // create each class file in multiple directories to remain compatible with all approaches // TODO Clean this mess up once the Android Gradle Plugin 3.2.0 finally decides on something. :| listOf( - // AGP 3.2.0-alpha07 and above "build/intermediates/javac/debug/compileDebugJavaWithJavac/classes", - // AGP 3.2.0-alpha06 - "build/intermediates/artifact_transform/compileDebugJavaWithJavac/classes", - // AGP 3.2.0-alpha04 and above - "build/intermediates/artifact_transform/javac/debug/classes", - // Everything below "build/intermediates/classes/debug").forEach { folder -> project.file(folder).mkdirs() project.file("$folder/R.class").createNewFile() @@ -353,13 +347,7 @@ class PluginSpec : Spek({ } listOf( - // AGP 3.2.0-alpha07 and above "build/intermediates/javac/release/compileReleaseJavaWithJavac/classes", - // AGP 3.2.0-alpha06 - "build/intermediates/artifact_transform/compileReleaseJavaWithJavac/classes", - // AGP 3.2.0-alpha04 and above - "build/intermediates/artifact_transform/javac/release/classes", - // Everything below "build/intermediates/classes/release").forEach { folder -> project.file(folder).mkdirs() project.file("$folder/R.class").createNewFile() diff --git a/plugin/android-junit5/src/test/projects/agp32x/build.gradle b/plugin/android-junit5/src/test/projects/agp32x/build.gradle index da5a5e90..d64d00b2 100644 --- a/plugin/android-junit5/src/test/projects/agp32x/build.gradle +++ b/plugin/android-junit5/src/test/projects/agp32x/build.gradle @@ -9,6 +9,7 @@ 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 diff --git a/plugin/android-junit5/src/test/projects/agp33x/build.gradle b/plugin/android-junit5/src/test/projects/agp33x/build.gradle index 6e297b5c..3062fc7f 100644 --- a/plugin/android-junit5/src/test/projects/agp33x/build.gradle +++ b/plugin/android-junit5/src/test/projects/agp33x/build.gradle @@ -8,6 +8,7 @@ buildscript { plugins { id "com.android.application" id "de.mannodermaus.android-junit5" + id "jacoco" } def version = com.android.builder.model.Version.ANDROID_GRADLE_PLUGIN_VERSION diff --git a/plugin/android-junit5/src/test/projects/agp34x/build.gradle b/plugin/android-junit5/src/test/projects/agp34x/build.gradle index 71c39358..9101a670 100644 --- a/plugin/android-junit5/src/test/projects/agp34x/build.gradle +++ b/plugin/android-junit5/src/test/projects/agp34x/build.gradle @@ -9,6 +9,7 @@ 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 diff --git a/plugin/android-junit5/src/test/projects/agp35x/build.gradle b/plugin/android-junit5/src/test/projects/agp35x/build.gradle index e888965a..dcd14659 100644 --- a/plugin/android-junit5/src/test/projects/agp35x/build.gradle +++ b/plugin/android-junit5/src/test/projects/agp35x/build.gradle @@ -9,6 +9,7 @@ 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 From c7783a801b811a3235dbb659dc79ad4c29f79d7a Mon Sep 17 00:00:00 2001 From: Marcel Date: Fri, 26 Apr 2019 17:57:00 +0200 Subject: [PATCH 11/11] Bump minimal supported AGP version to 3.2.0 --- .../de/mannodermaus/gradle/plugins/junit5/Constants.kt | 2 +- .../mannodermaus/gradle/plugins/junit5/VersionCheckerSpec.kt | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/plugin/android-junit5/src/main/kotlin/de/mannodermaus/gradle/plugins/junit5/Constants.kt b/plugin/android-junit5/src/main/kotlin/de/mannodermaus/gradle/plugins/junit5/Constants.kt index 095433c2..8cf9cf52 100644 --- a/plugin/android-junit5/src/main/kotlin/de/mannodermaus/gradle/plugins/junit5/Constants.kt +++ b/plugin/android-junit5/src/main/kotlin/de/mannodermaus/gradle/plugins/junit5/Constants.kt @@ -1,7 +1,7 @@ package de.mannodermaus.gradle.plugins.junit5 const val MIN_REQUIRED_GRADLE_VERSION = "4.7" -const val MIN_REQUIRED_AGP_VERSION = "3.2.0-alpha18" +const val MIN_REQUIRED_AGP_VERSION = "3.2.0" const val EXTENSION_NAME = "junitPlatform" const val FILTERS_EXTENSION_NAME = "filters" diff --git a/plugin/android-junit5/src/test/kotlin/de/mannodermaus/gradle/plugins/junit5/VersionCheckerSpec.kt b/plugin/android-junit5/src/test/kotlin/de/mannodermaus/gradle/plugins/junit5/VersionCheckerSpec.kt index 6dcfef8a..056b0088 100644 --- a/plugin/android-junit5/src/test/kotlin/de/mannodermaus/gradle/plugins/junit5/VersionCheckerSpec.kt +++ b/plugin/android-junit5/src/test/kotlin/de/mannodermaus/gradle/plugins/junit5/VersionCheckerSpec.kt @@ -20,8 +20,9 @@ class VersionCheckerSpec : Spek({ "3.2.0-alpha01" to false, "3.2.0-alpha14" to false, MIN_REQUIRED_AGP_VERSION to true, - "3.2.0-beta01" to true, - "3.2.0" to true, + "3.3.0" to true, + "3.4.0" to true, + "3.5.0-alpha13" to true, "3.3.0" to true, "4.0.0-alpha01" to true ).forEach { (actual, expected) ->