Skip to content

Commit df1c010

Browse files
igorwojdavanniktech
authored andcommitted
Add support for Android "dynamic-feature" module type (#158)
* Add support for Android "dynamic-feature" module type * Added tesst * fix tests * Fixed tests * Fix typo * Fix typo * Reverted bad code
1 parent 3496604 commit df1c010

File tree

4 files changed

+28
-3
lines changed

4 files changed

+28
-3
lines changed

src/main/groovy/com/vanniktech/android/junit/jacoco/GenerationPlugin.groovy

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ class GenerationPlugin implements Plugin<Project> {
115115
Collection<BaseVariant> variants = []
116116
if (isAndroidApplication(subProject)) {
117117
variants = subProject.android.applicationVariants
118-
} else if (isAndroidLibrary(subProject) || isAndroidFeature(subProject)) {
118+
} else if (isAndroidLibrary(subProject) || isAndroidFeature(subProject) || isAndroidDynamicFeature(subProject)) {
119119
// FeatureExtension extends LibraryExtension
120120
variants = subProject.android.libraryVariants
121121
} else {
@@ -342,8 +342,9 @@ class GenerationPlugin implements Plugin<Project> {
342342
final boolean isAndroidApp = project.plugins.hasPlugin('com.android.application')
343343
final boolean isAndroidTest = project.plugins.hasPlugin('com.android.test')
344344
final boolean isAndroidFeature = project.plugins.hasPlugin('com.android.feature')
345+
final boolean isAndroidDynamicFeature = project.plugins.hasPlugin('com.android.dynamic-feature')
345346
final boolean isAndroidInstantApp = project.plugins.hasPlugin('com.android.instantapp')
346-
return isAndroidLibrary || isAndroidApp || isAndroidTest || isAndroidFeature || isAndroidInstantApp
347+
return isAndroidLibrary || isAndroidApp || isAndroidTest || isAndroidFeature || isAndroidDynamicFeature || isAndroidInstantApp
347348
}
348349

349350
private static boolean isJavaProject(final Project project) {
@@ -372,6 +373,10 @@ class GenerationPlugin implements Plugin<Project> {
372373
protected static boolean isAndroidFeature(final Project project) {
373374
return project.plugins.hasPlugin('com.android.feature')
374375
}
376+
377+
protected static boolean isAndroidDynamicFeature(final Project project) {
378+
return project.plugins.hasPlugin('com.android.dynamic-feature')
379+
}
375380

376381
private static boolean shouldIgnore(final Project project, final JunitJacocoExtension extension) {
377382
if (extension.ignoreProjects?.contains(project.name) || extension.ignoreProjects?.contains(project.path)) {

src/test/groovy/com/vanniktech/android/junit/jacoco/GenerationPluginSpec.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import spock.lang.Specification
55
import spock.lang.Unroll
66

77
final class GenerationPluginSpec extends Specification {
8-
final static ANDROID_PLUGINS = ["com.android.application", "com.android.library", "com.android.test", "com.android.feature"]
8+
final static ANDROID_PLUGINS = ["com.android.application", "com.android.library", "com.android.test", "com.android.feature", "com.android.dynamic-feature"]
99
final static COMPILE_SDK_VERSION = 28
1010
final static BUILD_TOOLS_VERSION = "28.0.3"
1111
final static APPLICATION_ID = "com.example"

src/test/groovy/com/vanniktech/android/junit/jacoco/GenerationTest.groovy

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,14 @@ class GenerationTest {
5353
assertJacocoAndroidWithoutFlavors(androidLibraryProject, true)
5454
}
5555

56+
@Test void addJacocoAndroidDynamicFeature() {
57+
def androidLibraryProject = ProjectHelper.prepare(ANDROID_DYNAMIC_FEATURE).get()
58+
59+
GenerationPlugin.addJacoco(androidLibraryProject, new JunitJacocoExtension())
60+
61+
assertJacocoAndroidWithoutFlavors(androidLibraryProject, true)
62+
}
63+
5664
@Test void addJacocoAndroidAppWithoutInstrumentationCoverage() {
5765
def androidAppProject = ProjectHelper.prepare(ANDROID_APPLICATION).get()
5866
androidAppProject.android.buildTypes.each { it.testCoverageEnabled = false }
@@ -80,6 +88,15 @@ class GenerationTest {
8088
assertJacocoAndroidWithoutFlavors(androidLibraryProject, false)
8189
}
8290

91+
@Test void addJacocoAndroidDynamicFeatureWithoutInstrumentationCoverage() {
92+
def androidLibraryProject = ProjectHelper.prepare(ANDROID_DYNAMIC_FEATURE).get()
93+
androidLibraryProject.android.buildTypes.each { it.testCoverageEnabled = false }
94+
95+
GenerationPlugin.addJacoco(androidLibraryProject, new JunitJacocoExtension())
96+
97+
assertJacocoAndroidWithoutFlavors(androidLibraryProject, false)
98+
}
99+
83100
@Test void addJacocoAndroidTest() {
84101
def androidTestProject = ProjectHelper.prepare(ANDROID_TEST).get()
85102
assert !GenerationPlugin.addJacoco(androidTestProject, new JunitJacocoExtension())

src/test/groovy/com/vanniktech/android/junit/jacoco/ProjectHelper.groovy

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ final class ProjectHelper {
6363
break
6464
case ProjectType.ANDROID_LIBRARY:
6565
case ProjectType.ANDROID_FEATURE:
66+
case ProjectType.ANDROID_DYNAMIC_FEATURE:
6667
case ProjectType.ANDROID_KOTLIN_MULTIPLATFORM:
6768
project = builder.withName('android library').build()
6869
def androidMock = new MockFor(LibraryExtension)
@@ -144,6 +145,7 @@ final class ProjectHelper {
144145
break
145146
case ProjectType.ANDROID_LIBRARY:
146147
case ProjectType.ANDROID_FEATURE:
148+
case ProjectType.ANDROID_DYNAMIC_FEATURE:
147149
project.android.metaClass.libraryVariants = variants
148150
// mock .all{ } function from android gradle lib with standard groovy .each{ }
149151
project.android.libraryVariants.metaClass.all = { delegate.each(it) }
@@ -163,6 +165,7 @@ final class ProjectHelper {
163165
ANDROID_KOTLIN_MULTIPLATFORM('com.android.library', 'org.jetbrains.kotlin.multiplatform'),
164166
ANDROID_LIBRARY('com.android.library'),
165167
ANDROID_FEATURE('com.android.feature'),
168+
ANDROID_DYNAMIC_FEATURE('com.android.dynamic-feature'),
166169
ANDROID_TEST('com.android.test'),
167170
JAVA('java'),
168171
ROOT(null)

0 commit comments

Comments
 (0)