From 5439780834df0ee3dfe843aa5d862771841f6d1c Mon Sep 17 00:00:00 2001 From: Kevin Zheng <93887688+kevinzheng-ap@users.noreply.github.com> Date: Thu, 29 Feb 2024 03:46:56 +1100 Subject: [PATCH] Fixes Issue About Generated Strings Rendering (#1307) Co-authored-by: John Rodriguez --- .../java/app/cash/paparazzi/gradle/PaparazziPlugin.kt | 8 +++++++- .../java/app/cash/paparazzi/gradle/PaparazziPluginTest.kt | 8 ++++---- sample/build.gradle | 1 + .../main/java/app/cash/paparazzi/sample/ResourcesDemo.kt | 4 ++++ .../java/app/cash/paparazzi/sample/ResourcesDemoView.kt | 1 + 5 files changed, 17 insertions(+), 5 deletions(-) diff --git a/paparazzi-gradle-plugin/src/main/java/app/cash/paparazzi/gradle/PaparazziPlugin.kt b/paparazzi-gradle-plugin/src/main/java/app/cash/paparazzi/gradle/PaparazziPlugin.kt index d586006411..e854f5bf51 100644 --- a/paparazzi-gradle-plugin/src/main/java/app/cash/paparazzi/gradle/PaparazziPlugin.kt +++ b/paparazzi-gradle-plugin/src/main/java/app/cash/paparazzi/gradle/PaparazziPlugin.kt @@ -26,6 +26,7 @@ import com.android.build.gradle.internal.api.TestedVariant import com.android.build.gradle.internal.dsl.BaseAppModuleExtension import com.android.build.gradle.internal.dsl.DynamicFeatureExtension import com.android.build.gradle.internal.publishing.AndroidArtifacts.ArtifactType +import com.android.build.gradle.tasks.GenerateResValues import org.gradle.api.DefaultTask import org.gradle.api.DomainObjectSet import org.gradle.api.Plugin @@ -140,7 +141,12 @@ public class PaparazziPlugin : Plugin { task.nonTransitiveRClassEnabled.set(nonTransitiveRClassEnabled) task.targetSdkVersion.set(android.targetSdkVersion()) task.compileSdkVersion.set(android.compileSdkVersion()) - task.projectResourceDirs.set(project.provider { localResourceDirs.relativize(projectDirectory) }) + task.projectResourceDirs.set( + project.provider { + val generateResValuesDirs = project.tasks.withType(GenerateResValues::class.java).filter { it.variantName == variant.name }.map { it.resOutputDir } + localResourceDirs.relativize(projectDirectory) + generateResValuesDirs.map(projectDirectory::relativize) + } + ) task.moduleResourceDirs.set(project.provider { moduleResourceDirs.relativize(projectDirectory) }) task.aarExplodedDirs.from(aarExplodedDirs) task.projectAssetDirs.set(project.provider { localAssetDirs.plus(moduleAssetDirs).relativize(projectDirectory) }) diff --git a/paparazzi-gradle-plugin/src/test/java/app/cash/paparazzi/gradle/PaparazziPluginTest.kt b/paparazzi-gradle-plugin/src/test/java/app/cash/paparazzi/gradle/PaparazziPluginTest.kt index 60d65fcc98..950824e07a 100644 --- a/paparazzi-gradle-plugin/src/test/java/app/cash/paparazzi/gradle/PaparazziPluginTest.kt +++ b/paparazzi-gradle-plugin/src/test/java/app/cash/paparazzi/gradle/PaparazziPluginTest.kt @@ -759,7 +759,7 @@ class PaparazziPluginTest { "app.cash.paparazzi.plugin.test.module1", "app.cash.paparazzi.plugin.test.module2" ) - assertThat(config.projectResourceDirs).containsExactly("src/main/res", "src/debug/res") + assertThat(config.projectResourceDirs).containsExactly("src/main/res", "src/debug/res", "build/generated/res/resValues/debug") assertThat(config.moduleResourceDirs).containsExactly( "../module1/build/intermediates/packaged_res/debug", "../module2/build/intermediates/packaged_res/debug" @@ -790,7 +790,7 @@ class PaparazziPluginTest { "app.cash.paparazzi.plugin.test.module1", "app.cash.paparazzi.plugin.test.module2" ) - assertThat(config.projectResourceDirs).containsExactly("src/main/res", "src/debug/res") + assertThat(config.projectResourceDirs).containsExactly("src/main/res", "src/debug/res", "build/generated/res/resValues/debug") assertThat(config.moduleResourceDirs).containsExactly( "../module1/build/intermediates/packaged_res/debug", "../module2/build/intermediates/packaged_res/debug" @@ -831,7 +831,7 @@ class PaparazziPluginTest { val resourcesFile = File(fixtureRoot, "build/intermediates/paparazzi/debug/resources.json") var config = resourcesFile.loadConfig() - assertThat(config.projectResourceDirs).containsExactly("src/main/res", "src/debug/res") + assertThat(config.projectResourceDirs).containsExactly("src/main/res", "src/debug/res", "build/generated/res/resValues/debug") buildDir.deleteRecursively() @@ -853,7 +853,7 @@ class PaparazziPluginTest { } config = resourcesFile.loadConfig() - assertThat(config.projectResourceDirs).containsExactly("src/main/res", "src/debug/res") + assertThat(config.projectResourceDirs).containsExactly("src/main/res", "src/debug/res", "build/generated/res/resValues/debug") } @Test diff --git a/sample/build.gradle b/sample/build.gradle index b20073ee38..0e17b0b1a1 100644 --- a/sample/build.gradle +++ b/sample/build.gradle @@ -9,6 +9,7 @@ android { compileSdk libs.versions.compileSdk.get() as int defaultConfig { minSdk libs.versions.minSdk.get() as int + resValue("string", "generated_string_name", "Generated Test String") } compileOptions { sourceCompatibility = libs.versions.javaTarget.get() diff --git a/sample/src/main/java/app/cash/paparazzi/sample/ResourcesDemo.kt b/sample/src/main/java/app/cash/paparazzi/sample/ResourcesDemo.kt index c52fabd1af..470a0db7a5 100644 --- a/sample/src/main/java/app/cash/paparazzi/sample/ResourcesDemo.kt +++ b/sample/src/main/java/app/cash/paparazzi/sample/ResourcesDemo.kt @@ -124,5 +124,9 @@ fun ResourcesDemo() { resources.getStringArray(R.array.string_array_name).joinToString(), color = Color.Black ) + Text( + resources.getString(R.string.generated_string_name), + color = Color.Black + ) } } diff --git a/sample/src/main/java/app/cash/paparazzi/sample/ResourcesDemoView.kt b/sample/src/main/java/app/cash/paparazzi/sample/ResourcesDemoView.kt index 4e49deba81..c281f0826d 100644 --- a/sample/src/main/java/app/cash/paparazzi/sample/ResourcesDemoView.kt +++ b/sample/src/main/java/app/cash/paparazzi/sample/ResourcesDemoView.kt @@ -59,6 +59,7 @@ class ResourcesDemoView(context: Context) : LinearLayout(context) { ) addTextView(resources.getText(R.string.string_name_html_unescaped)) addTextView(resources.getStringArray(R.array.string_array_name).joinToString()) + addTextView(resources.getText(R.string.generated_string_name)) } private fun LinearLayout.addImageView(@DrawableRes drawableRes: Int) {