Skip to content

Commit

Permalink
Add preview runtime module and source
Browse files Browse the repository at this point in the history
  • Loading branch information
geoff-powell committed Jan 7, 2025
1 parent 5724148 commit 96210a4
Show file tree
Hide file tree
Showing 6 changed files with 38 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ internal class PaparazziPoet(
FileSpec.scriptBuilder(fileName, namespace)
.addCode(
buildCodeBlock {
addStatement("internal val %L = listOf<%L.PaparazziPreviewData>(", propertyName, PACKAGE_NAME)
addStatement("internal val %L = listOf<%L.PaparazziPreviewData>(", propertyName, PREVIEW_RUNTIME_PACKAGE_NAME)
indent()

functions.process { func, previewParam ->
Expand Down Expand Up @@ -77,7 +77,7 @@ internal class PaparazziPoet(
}

private fun CodeBlock.Builder.addDefault(function: KSFunctionDeclaration, snapshotName: String) {
addStatement("%L.PaparazziPreviewData(", PACKAGE_NAME)
addStatement("%L.PaparazziPreviewData(", PREVIEW_RUNTIME_PACKAGE_NAME)
indent()
addStatement("snapshotName = %S,", snapshotName)
addStatement("composable = { %L() },", function.qualifiedName?.asString())
Expand All @@ -98,7 +98,7 @@ internal class PaparazziPoet(
}.joinToString("_")
}

private const val PACKAGE_NAME = "app.cash.paparazzi.annotations"
private const val PREVIEW_RUNTIME_PACKAGE_NAME = "app.cash.paparazzi.preview.runtime"

internal fun KSAnnotation.isPreview() = qualifiedName() == "androidx.compose.ui.tooling.preview.Preview"
internal fun KSAnnotation.isPreviewParameter() =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,8 @@ class PreviewProcessorProviderTest {
"""
package test
internal val paparazziPreviews = listOf<app.cash.paparazzi.annotations.PaparazziPreviewData>(
app.cash.paparazzi.annotations.PaparazziPreviewData(
internal val paparazziPreviews = listOf<app.cash.paparazzi.preview.runtime.PaparazziPreviewData>(
app.cash.paparazzi.preview.runtime.PaparazziPreviewData(
snapshotName = "SamplePreview_SamplePreview",
composable = { test.SamplePreview() },
),
Expand Down Expand Up @@ -182,12 +182,12 @@ class PreviewProcessorProviderTest {
"""
package test
internal val paparazziPreviews = listOf<app.cash.paparazzi.annotations.PaparazziPreviewData>(
app.cash.paparazzi.annotations.PaparazziPreviewData(
internal val paparazziPreviews = listOf<app.cash.paparazzi.preview.runtime.PaparazziPreviewData>(
app.cash.paparazzi.preview.runtime.PaparazziPreviewData(
snapshotName = "SamplePreview_SamplePreview",
composable = { test.SamplePreview() },
),
app.cash.paparazzi.annotations.PaparazziPreviewData(
app.cash.paparazzi.preview.runtime.PaparazziPreviewData(
snapshotName = "SamplePreview_SamplePreview",
composable = { test.SamplePreview() },
),
Expand All @@ -201,7 +201,7 @@ class PreviewProcessorProviderTest {
.apply {
workingDir = File(temporaryFolder.root, "debug")
inheritClassPath = true
sources = sourceFiles.asList() + COMPOSE_SOURCES + PAPARAZZI_ANNOTATION_SOURCE
sources = sourceFiles.asList() + COMPOSE_SOURCES + PAPARAZZI_ANNOTATION_SOURCE + PAPARAZZI_PREVIEW_DATA_RUNTIME_SOURCE
verbose = false

kspAllWarningsAsErrors = true
Expand Down Expand Up @@ -289,5 +289,17 @@ class PreviewProcessorProviderTest {
annotation class Paparazzi
""".trimIndent()
)

private val PAPARAZZI_PREVIEW_DATA_RUNTIME_SOURCE = SourceFile.kotlin(
"PaparazziPreviewData.kt",
"""
package app.cash.paparazzi.annotations
import androidx.compose.runtime.Composable
data class PaparazziPreviewData(
val snapshotName: String,
val composable: @Composable () -> Unit
)
""".trimIndent()
)
}
}
2 changes: 2 additions & 0 deletions paparazzi-preview-runtime/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
apply plugin: 'org.jetbrains.kotlin.jvm'
apply plugin: 'com.vanniktech.maven.publish'
4 changes: 4 additions & 0 deletions paparazzi-preview-runtime/gradle.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
POM_ARTIFACT_ID=paparazzi-preview-runtime
POM_NAME=Paparazzi Preview Runtime
POM_DESCRIPTION=Runtime classes used for generating Composable @Previews annotated with @Paparazzi manifest to use in snapshot tests via Paparazzi
POM_PACKAGING=jar
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package app.cash.paparazzi.annotations

import androidx.compose.runtime.Composable

data class PaparazziPreviewData(
val snapshotName: String,
val composable: @Composable () -> Unit
)
5 changes: 3 additions & 2 deletions settings.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,10 @@ rootProject.name = 'paparazzi-root'

include ':paparazzi'
include ':paparazzi-annotations'
include ':paparazzi-preview-processor'
include ':paparazzi-preview-lints'
include ':paparazzi-gradle-plugin'
include ':paparazzi-preview-lints'
include ':paparazzi-preview-processor'
include ':paparazzi-preview-runtime'

include ':sample'

Expand Down

0 comments on commit 96210a4

Please sign in to comment.