From 8c1a94f001507011bb7ed42be8987d2ed40c8d06 Mon Sep 17 00:00:00 2001 From: takahirom Date: Sat, 7 Dec 2024 22:07:07 +0900 Subject: [PATCH] Fix compare dir cache --- .../roborazzi/RoborazziGradleProjectTest.kt | 10 +++- .../takahirom/roborazzi/RoborazziPlugin.kt | 46 +++++++++---------- 2 files changed, 31 insertions(+), 25 deletions(-) diff --git a/include-build/roborazzi-gradle-plugin/src/integrationTest/java/io/github/takahirom/roborazzi/RoborazziGradleProjectTest.kt b/include-build/roborazzi-gradle-plugin/src/integrationTest/java/io/github/takahirom/roborazzi/RoborazziGradleProjectTest.kt index 008cd2d7..d518c914 100644 --- a/include-build/roborazzi-gradle-plugin/src/integrationTest/java/io/github/takahirom/roborazzi/RoborazziGradleProjectTest.kt +++ b/include-build/roborazzi-gradle-plugin/src/integrationTest/java/io/github/takahirom/roborazzi/RoborazziGradleProjectTest.kt @@ -164,7 +164,12 @@ class RoborazziGradleProjectTest { checkRecordedFileNotExists("$screenshotAndName.testCapture_actual.png") checkRecordedFileNotExists("app/$customDirFromGradle/$className.testCapture_compare.png") + // We should be able to use the cache changeScreen() + removeRoborazziOutputDir() + compare() + checkRecordedFileExists("$screenshotAndName.testCapture_compare.png") + removeRoborazziOutputDir() compare() checkResultsSummaryFileExists() @@ -190,8 +195,11 @@ class RoborazziGradleProjectTest { checkRecordedFileNotExists("$screenshotAndName.testCapture_compare.png") // We should be able to use the cache - removeCompareOutputDir() + removeRoborazziOutputDir() compare() + removeRoborazziOutputDir() + val buildResult = compare() + assertSkipped(buildResult.output) checkResultsSummaryFileExists() checkRecordedFileExists("$screenshotAndName.testCapture.png") diff --git a/include-build/roborazzi-gradle-plugin/src/main/java/io/github/takahirom/roborazzi/RoborazziPlugin.kt b/include-build/roborazzi-gradle-plugin/src/main/java/io/github/takahirom/roborazzi/RoborazziPlugin.kt index 4ca962d7..7a2abd3d 100644 --- a/include-build/roborazzi-gradle-plugin/src/main/java/io/github/takahirom/roborazzi/RoborazziPlugin.kt +++ b/include-build/roborazzi-gradle-plugin/src/main/java/io/github/takahirom/roborazzi/RoborazziPlugin.kt @@ -109,7 +109,7 @@ abstract class RoborazziPlugin : Plugin { val outputDir = extension.outputDir.convention(project.layout.buildDirectory.dir(DEFAULT_OUTPUT_DIR)) val compareOutputDir = - extension.compare.outputDir + extension.compare.outputDir.convention(project.layout.buildDirectory.dir(DEFAULT_OUTPUT_DIR)) val testTaskOutputDir: DirectoryProperty = project.objects.directoryProperty() val intermediateDir = testTaskOutputDir.convention(project.layout.buildDirectory.dir(DEFAULT_TEMP_DIR)) @@ -333,32 +333,30 @@ abstract class RoborazziPlugin : Plugin { test.inputs.files( imageInputProvider ) - if (compareOutputDir.isPresent) { - test.outputs.dirs( - compareOutputDir.flatMap { compareOutputDirValue: Directory -> - imageInputProvider - .map { imageInputProviderValue: FileCollection -> - // Check if the compare output directory is the same as the input directory - if (imageInputProviderValue.files.any { - if (it.isDirectory) { - it.absolutePath == compareOutputDirValue.asFile.absolutePath - } else { - it.parentFile.absolutePath == compareOutputDirValue.asFile.absolutePath - } - }) { - outputDir.files(/* empty files */) - } else { - if (!compareOutputDirValue.asFile.exists()) { - compareOutputDirValue.asFile.mkdirs() + test.outputs.dirs( + compareOutputDir.flatMap { compareOutputDirValue: Directory -> + imageInputProvider + .map { imageInputProviderValue: FileCollection -> + // Check if the compare output directory is the same as the input directory + if (imageInputProviderValue.files.any { + if (it.isDirectory) { + it.absolutePath == compareOutputDirValue.asFile.absolutePath + } else { + it.parentFile.absolutePath == compareOutputDirValue.asFile.absolutePath } - compareOutputDirValue + }) { + outputDir.files(/* empty files */) + } else { + if (!compareOutputDirValue.asFile.exists()) { + compareOutputDirValue.asFile.mkdirs() } + compareOutputDirValue } - }.map { - test.infoln("Roborazzi: Set output files ${it} to test task") - it - }) - } + } + }.map { + test.infoln("Roborazzi: Set output files ${it} to test task") + it + }) test.outputs.dir(intermediateDirForEachVariant.map { test.infoln("Roborazzi: Set output dir $it to test task") it