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,45 +488,47 @@ private fun ApplicationVariant.configureSnapshotsTasks(

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

project.dependencies.add(
"testImplementation",
"io.github.sergio-sastre.ComposablePreviewScanner:android:0.8.1",
)

val paparazziMajorVersion =
project.provider {
val dep =
project.configurations.findByName("testImplementation")?.allDependencies?.find {
it.group == "app.cash.paparazzi" && it.name == "paparazzi"
}
parseMajorVersion(dep?.version)
}

val generateTask =
GenerateSnapshotTestsTask.register(
project,
extension.snapshots,
android,
this@configureSnapshotsTasks,
paparazziMajorVersion,
project.dependencies.add(
"testImplementation",
"io.github.sergio-sastre.ComposablePreviewScanner:android:0.8.1",
)

if (AgpVersions.isAGP90(AgpVersions.CURRENT)) {
hostTests[UNIT_TEST_TYPE]?.apply {
sources.java?.addGeneratedSourceDirectory(
generateTask,
GenerateSnapshotTestsTask::outputDir,
)
}
} else {
@Suppress("DEPRECATION_ERROR")
unitTest?.apply {
sources.java?.addGeneratedSourceDirectory(
generateTask,
GenerateSnapshotTestsTask::outputDir,
val paparazziMajorVersion =
project.provider {
val dep =
project.configurations.findByName("testImplementation")?.allDependencies?.find {
it.group == "app.cash.paparazzi" && it.name == "paparazzi"
}
parseMajorVersion(dep?.version)
}

val generateTask =
GenerateSnapshotTestsTask.register(
project,
extension.snapshots,
android,
this@configureSnapshotsTasks,
paparazziMajorVersion,
)

if (AgpVersions.isAGP90(AgpVersions.CURRENT)) {
hostTests[UNIT_TEST_TYPE]?.apply {
sources.java?.addGeneratedSourceDirectory(
generateTask,
GenerateSnapshotTestsTask::outputDir,
)
}
} else {
@Suppress("DEPRECATION_ERROR")
unitTest?.apply {
sources.java?.addGeneratedSourceDirectory(
generateTask,
GenerateSnapshotTestsTask::outputDir,
)
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ open class SnapshotsExtension @Inject constructor(objects: ObjectFactory) {

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

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

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

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package io.sentry.android.gradle.extensions

import kotlin.test.assertFalse
import kotlin.test.assertTrue
import org.gradle.testfixtures.ProjectBuilder
import org.junit.Test

class SnapshotsExtensionTest {

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

assertFalse(extension.enabled.get())
}

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

assertTrue(extension.generateTests.get())
}

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

extension.generateTests.set(false)

assertFalse(extension.generateTests.get())
}

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

assertTrue(extension.includePrivatePreviews.get())
}

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

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