Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -488,7 +488,7 @@ private fun ApplicationVariant.configureSnapshotsTasks(

// Wire Paparazzi test generation and upload task when the Paparazzi plugin is applied
project.pluginManager.withPlugin("app.cash.paparazzi") {
if (extension.snapshots.generateSnapshotTests.get()) {
if (extension.snapshots.previews.generateTests.get()) {
val android = project.extensions.getByType(BaseExtension::class.java)

project.dependencies.add(
Expand All @@ -508,7 +508,7 @@ private fun ApplicationVariant.configureSnapshotsTasks(
val generateTask =
GenerateSnapshotTestsTask.register(
project,
extension.snapshots,
extension.snapshots.previews,
android,
this@configureSnapshotsTasks,
paparazziMajorVersion,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package io.sentry.android.gradle.extensions

import javax.inject.Inject
import org.gradle.api.model.ObjectFactory
import org.gradle.api.provider.ListProperty
import org.gradle.api.provider.Property
import org.jetbrains.annotations.ApiStatus

@ApiStatus.Experimental
open class SnapshotPreviewsExtension @Inject constructor(objects: ObjectFactory) {

val generateTests: Property<Boolean> = objects.property(Boolean::class.java).convention(true)

val includePrivatePreviews: Property<Boolean> =
objects.property(Boolean::class.java).convention(true)

val packageTrees: ListProperty<String> =
objects.listProperty(String::class.java).convention(emptyList())
Comment thread
runningcode marked this conversation as resolved.

val theme: Property<String> = objects.property(String::class.java)
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package io.sentry.android.gradle.extensions

import javax.inject.Inject
import org.gradle.api.Action
import org.gradle.api.model.ObjectFactory
import org.gradle.api.provider.ListProperty
import org.gradle.api.provider.Property
import org.jetbrains.annotations.ApiStatus

Expand All @@ -11,14 +11,10 @@ open class SnapshotsExtension @Inject constructor(objects: ObjectFactory) {

val enabled: Property<Boolean> = objects.property(Boolean::class.java).convention(false)

val generateSnapshotTests: Property<Boolean> =
objects.property(Boolean::class.java).convention(true)
val previews: SnapshotPreviewsExtension =
objects.newInstance(SnapshotPreviewsExtension::class.java)

val includePrivatePreviews: Property<Boolean> =
objects.property(Boolean::class.java).convention(true)

val packageTrees: ListProperty<String> =
objects.listProperty(String::class.java).convention(emptyList())

val theme: Property<String> = objects.property(String::class.java)
fun previews(action: Action<SnapshotPreviewsExtension>) {
action.execute(previews)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package io.sentry.android.gradle.snapshot
import com.android.build.api.variant.ApplicationVariant
import com.android.build.gradle.BaseExtension
import io.sentry.android.gradle.SentryTasksProvider.capitalized
import io.sentry.android.gradle.extensions.SnapshotsExtension
import io.sentry.android.gradle.extensions.SnapshotPreviewsExtension
import java.io.File
import org.gradle.api.DefaultTask
import org.gradle.api.Project
Expand Down Expand Up @@ -63,7 +63,7 @@ abstract class GenerateSnapshotTestsTask : DefaultTask() {

fun register(
project: Project,
extension: SnapshotsExtension,
extension: SnapshotPreviewsExtension,
android: BaseExtension,
variant: ApplicationVariant,
paparazziMajorVersion: Provider<Int>,
Expand All @@ -76,7 +76,6 @@ abstract class GenerateSnapshotTestsTask : DefaultTask() {
task.theme.set(extension.theme)
task.paparazziMajorVersion.value(paparazziMajorVersion)
// Fall back to the Android namespace when the user doesn't configure packageTrees
// TODO do we actually need this?
task.packageTrees.set(
extension.packageTrees.map { packages ->
packages.ifEmpty { listOf(android.namespace!!) }
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package io.sentry.android.gradle.extensions

import kotlin.test.assertFalse
import kotlin.test.assertNull
import kotlin.test.assertTrue
import org.gradle.testfixtures.ProjectBuilder
import org.junit.Test
Expand All @@ -16,36 +17,62 @@ class SnapshotsExtensionTest {
}

@Test
fun `generateSnapshotTests is true by default`() {
fun `previews generateTests is true by default`() {
val project = ProjectBuilder.builder().build()
val extension = project.objects.newInstance(SnapshotsExtension::class.java)

assertTrue(extension.generateSnapshotTests.get())
assertTrue(extension.previews.generateTests.get())
}

@Test
fun `generateSnapshotTests can be set to false`() {
fun `previews generateTests can be set to false`() {
val project = ProjectBuilder.builder().build()
val extension = project.objects.newInstance(SnapshotsExtension::class.java)

extension.generateSnapshotTests.set(false)
extension.previews.generateTests.set(false)

assertFalse(extension.generateSnapshotTests.get())
assertFalse(extension.previews.generateTests.get())
}

@Test
fun `includePrivatePreviews is true by default`() {
fun `previews includePrivatePreviews is true by default`() {
val project = ProjectBuilder.builder().build()
val extension = project.objects.newInstance(SnapshotsExtension::class.java)

assertTrue(extension.includePrivatePreviews.get())
assertTrue(extension.previews.includePrivatePreviews.get())
}

@Test
fun `packageTrees is empty by default`() {
fun `previews packageTrees is empty by default`() {
val project = ProjectBuilder.builder().build()
val extension = project.objects.newInstance(SnapshotsExtension::class.java)

assertTrue(extension.packageTrees.get().isEmpty())
assertTrue(extension.previews.packageTrees.get().isEmpty())
}

@Test
fun `previews theme has no default`() {
val project = ProjectBuilder.builder().build()
val extension = project.objects.newInstance(SnapshotsExtension::class.java)

assertNull(extension.previews.theme.orNull)
}

@Test
fun `previews block configures sub-extension`() {
val project = ProjectBuilder.builder().build()
val extension = project.objects.newInstance(SnapshotsExtension::class.java)

extension.previews { previews ->
previews.generateTests.set(false)
previews.includePrivatePreviews.set(false)
previews.packageTrees.set(listOf("com.example"))
previews.theme.set("AppTheme")
}

assertFalse(extension.previews.generateTests.get())
assertFalse(extension.previews.includePrivatePreviews.get())
assertTrue(extension.previews.packageTrees.get() == listOf("com.example"))
assertTrue(extension.previews.theme.get() == "AppTheme")
}
}
Loading