Skip to content

Commit 8fc5c7f

Browse files
committed
Test code vendors under a different package.
1 parent fd62375 commit 8fc5c7f

File tree

1 file changed

+18
-21
lines changed

1 file changed

+18
-21
lines changed

buildSrc/src/main/java/com/google/firebase/gradle/plugins/VendorPlugin.kt

Lines changed: 18 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ import java.io.FileOutputStream
2828
import java.util.zip.ZipEntry
2929
import java.util.zip.ZipFile
3030
import java.util.zip.ZipOutputStream
31-
import org.gradle.api.Action
3231
import org.gradle.api.GradleException
3332
import org.gradle.api.Plugin
3433
import org.gradle.api.Project
@@ -37,13 +36,11 @@ import org.gradle.api.logging.Logger
3736

3837
class VendorPlugin : Plugin<Project> {
3938
override fun apply(project: Project) {
40-
project.plugins.all(object : Action<Plugin<Any>> {
41-
override fun execute(plugin: Plugin<Any>) {
42-
when (plugin) {
43-
is LibraryPlugin -> configureAndroid(project)
44-
}
39+
project.plugins.all {
40+
when (this) {
41+
is LibraryPlugin -> configureAndroid(project)
4542
}
46-
})
43+
}
4744
}
4845

4946
fun configureAndroid(project: Project) {
@@ -63,8 +60,13 @@ class VendorPlugin : Plugin<Project> {
6360
android.registerTransform(VendorTransform(
6461
vendor,
6562
JarJarTransformer(
66-
parentPackageProvider = {
67-
android.libraryVariants.find { it.name == "release" }!!.applicationId
63+
parentPackageProvider = { variantName ->
64+
val packageName = android.libraryVariants.find {
65+
it.name == "release"
66+
}!!.applicationId
67+
if (variantName.endsWith("AndroidTest"))
68+
"$packageName.$variantName"
69+
else packageName
6870
},
6971
jarJarProvider = { jarJar.resolve() },
7072
project = project,
@@ -78,13 +80,13 @@ interface JarTransformer {
7880
}
7981

8082
class JarJarTransformer(
81-
private val parentPackageProvider: () -> String,
83+
private val parentPackageProvider: (String) -> String,
8284
private val jarJarProvider: () -> Collection<File>,
8385
private val project: Project,
8486
private val logger: Logger
8587
) : JarTransformer {
8688
override fun transform(variantName: String, input: File, output: File, ownPackageNames: Set<String>, externalPackageNames: Set<String>) {
87-
val parentPackage = parentPackageProvider()
89+
val parentPackage = parentPackageProvider(variantName)
8890
val rulesFile = File.createTempFile("$parentPackage-$variantName", ".jarjar")
8991
rulesFile.printWriter().use {
9092
for (packageName in ownPackageNames) {
@@ -125,6 +127,7 @@ class VendorTransform(
125127
}
126128

127129
override fun transform(transformInvocation: TransformInvocation) {
130+
transformInvocation.javaClass.typeParameters
128131
if (configuration.resolve().isEmpty()) {
129132
logger.info("Nothing to vendor. " +
130133
"If you don't need vendor functionality please disable 'firebase-vendor' plugin. " +
@@ -162,13 +165,7 @@ class VendorTransform(
162165
private fun process(workDir: File, transformInvocation: TransformInvocation): File {
163166
transformInvocation.context.variantName
164167
val unzippedDir = File(workDir, "unzipped")
165-
val unzippedExcludedDir = File(workDir, "unzipped-excluded")
166168
unzippedDir.mkdirs()
167-
unzippedExcludedDir.mkdirs()
168-
169-
val externalCodeDir = if (
170-
transformInvocation.context.variantName.toLowerCase().contains("test"))
171-
unzippedExcludedDir else unzippedDir
172169

173170
for (input in transformInvocation.inputs) {
174171
for (directoryInput in input.directoryInputs) {
@@ -179,11 +176,11 @@ class VendorTransform(
179176
val ownPackageNames = inferPackages(unzippedDir)
180177

181178
for (jar in configuration.resolve()) {
182-
unzipJar(jar, externalCodeDir)
179+
unzipJar(jar, unzippedDir)
183180
}
184-
val externalPackageNames = inferPackages(externalCodeDir) subtract ownPackageNames
185-
val java = File(externalCodeDir, "java")
186-
val javax = File(externalCodeDir, "javax")
181+
val externalPackageNames = inferPackages(unzippedDir) subtract ownPackageNames
182+
val java = File(unzippedDir, "java")
183+
val javax = File(unzippedDir, "javax")
187184
if (java.exists() || javax.exists()) {
188185
// JarJar unconditionally skips any classes whose package name starts with "java" or "javax".
189186
throw GradleException("Vendoring java or javax packages is not supported. " +

0 commit comments

Comments
 (0)