From 5cdef0ae0f40b1fa38379ae0175b32f7f96453ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=B3bert=20Papp=20=28TWiStErRob=29?= Date: Thu, 19 Jan 2023 14:12:51 +0000 Subject: [PATCH 1/6] Add failing tests that reproduce the problem where the record and verify parameters are not playing in up to date checks and fix by registering inputs explicitly. Co-authored-by: John Rodriguez --- .../cash/paparazzi/gradle/PaparazziPlugin.kt | 5 ++ .../paparazzi/gradle/PaparazziPluginTest.kt | 54 ++++++++++++++++++ .../rerun-after-test-record/build.gradle | 22 +++++++ .../app/cash/paparazzi/sample/RecordTest.kt | 16 ++++++ .../rerun-after-test-verify/build.gradle | 22 +++++++ .../app/cash/paparazzi/sample/RecordTest.kt | 16 ++++++ ...aparazzi.plugin.test_RecordTest_record.png | Bin 0 -> 6811 bytes 7 files changed, 135 insertions(+) create mode 100644 paparazzi/paparazzi-gradle-plugin/src/test/projects/rerun-after-test-record/build.gradle create mode 100644 paparazzi/paparazzi-gradle-plugin/src/test/projects/rerun-after-test-record/src/test/java/app/cash/paparazzi/sample/RecordTest.kt create mode 100644 paparazzi/paparazzi-gradle-plugin/src/test/projects/rerun-after-test-verify/build.gradle create mode 100644 paparazzi/paparazzi-gradle-plugin/src/test/projects/rerun-after-test-verify/src/test/java/app/cash/paparazzi/sample/RecordTest.kt create mode 100644 paparazzi/paparazzi-gradle-plugin/src/test/projects/rerun-after-test-verify/src/test/snapshots/images/app.cash.paparazzi.plugin.test_RecordTest_record.png diff --git a/paparazzi/paparazzi-gradle-plugin/src/main/java/app/cash/paparazzi/gradle/PaparazziPlugin.kt b/paparazzi/paparazzi-gradle-plugin/src/main/java/app/cash/paparazzi/gradle/PaparazziPlugin.kt index 36811e2218..3e6c529772 100644 --- a/paparazzi/paparazzi-gradle-plugin/src/main/java/app/cash/paparazzi/gradle/PaparazziPlugin.kt +++ b/paparazzi/paparazzi-gradle-plugin/src/main/java/app/cash/paparazzi/gradle/PaparazziPlugin.kt @@ -170,6 +170,11 @@ class PaparazziPlugin : Plugin { val paparazziProperties = project.properties.filterKeys { it.startsWith("app.cash.paparazzi") } + // Explicitly register these as inputs so that they are considered when determining up-to-date. + // The properties become resolvable after the last afterEvaluate runs. + test.inputs.property("paparazzi.test.record", isRecordRun) + test.inputs.property("paparazzi.test.verify", isVerifyRun) + @Suppress("ObjectLiteralToLambda") // why not a lambda? See: https://docs.gradle.org/7.2/userguide/validation_problems.html#implementation_unknown test.doFirst(object : Action { diff --git a/paparazzi/paparazzi-gradle-plugin/src/test/java/app/cash/paparazzi/gradle/PaparazziPluginTest.kt b/paparazzi/paparazzi-gradle-plugin/src/test/java/app/cash/paparazzi/gradle/PaparazziPluginTest.kt index 56bcf9652f..731477e2a7 100644 --- a/paparazzi/paparazzi-gradle-plugin/src/test/java/app/cash/paparazzi/gradle/PaparazziPluginTest.kt +++ b/paparazzi/paparazzi-gradle-plugin/src/test/java/app/cash/paparazzi/gradle/PaparazziPluginTest.kt @@ -521,6 +521,60 @@ class PaparazziPluginTest { snapshotsDir.deleteRecursively() } + @Test + fun rerunTestsOnRecordPropertyChange() { + val fixtureRoot = File("src/test/projects/rerun-after-test-record") + + // Take 1 + val firstRunResult = gradleRunner + .withArguments("testDebugUnitTest", "--stacktrace") + .forwardOutput() + .runFixture(fixtureRoot) { build() } + + with(firstRunResult.task(":testDebugUnitTest")) { + assertThat(this).isNotNull() + assertThat(this!!.outcome).isEqualTo(SUCCESS) + } + + // Take 2 + val secondRunResult = gradleRunner + .withArguments("recordPaparazziDebug", "--stacktrace") + .forwardOutput() + .runFixture(fixtureRoot) { build() } + + with(secondRunResult.task(":testDebugUnitTest")) { + assertThat(this).isNotNull() + assertThat(this!!.outcome).isEqualTo(SUCCESS) // not UP-TO-DATE + } + } + + @Test + fun rerunTestsOnVerifyPropertyChange() { + val fixtureRoot = File("src/test/projects/rerun-after-test-verify") + + // Take 1 + val firstRunResult = gradleRunner + .withArguments("testDebugUnitTest", "--stacktrace") + .forwardOutput() + .runFixture(fixtureRoot) { build() } + + with(firstRunResult.task(":testDebugUnitTest")) { + assertThat(this).isNotNull() + assertThat(this!!.outcome).isEqualTo(SUCCESS) + } + + // Take 2 + val secondRunResult = gradleRunner + .withArguments("verifyPaparazziDebug", "--stacktrace") + .forwardOutput() + .runFixture(fixtureRoot) { build() } + + with(secondRunResult.task(":testDebugUnitTest")) { + assertThat(this).isNotNull() + assertThat(this!!.outcome).isEqualTo(SUCCESS) // not UP-TO-DATE + } + } + @Test fun verifySuccess() { val fixtureRoot = File("src/test/projects/verify-mode-success") diff --git a/paparazzi/paparazzi-gradle-plugin/src/test/projects/rerun-after-test-record/build.gradle b/paparazzi/paparazzi-gradle-plugin/src/test/projects/rerun-after-test-record/build.gradle new file mode 100644 index 0000000000..83fe3dccde --- /dev/null +++ b/paparazzi/paparazzi-gradle-plugin/src/test/projects/rerun-after-test-record/build.gradle @@ -0,0 +1,22 @@ +plugins { + id 'com.android.library' + id 'kotlin-android' + id 'app.cash.paparazzi' +} + +repositories { + maven { + url "file://${projectDir.absolutePath}/../../../../../build/localMaven" + } + mavenCentral() + //mavenLocal() + google() +} + +android { + namespace 'app.cash.paparazzi.plugin.test' + compileSdk libs.versions.compileSdk.get() as int + defaultConfig { + minSdk libs.versions.minSdk.get() as int + } +} diff --git a/paparazzi/paparazzi-gradle-plugin/src/test/projects/rerun-after-test-record/src/test/java/app/cash/paparazzi/sample/RecordTest.kt b/paparazzi/paparazzi-gradle-plugin/src/test/projects/rerun-after-test-record/src/test/java/app/cash/paparazzi/sample/RecordTest.kt new file mode 100644 index 0000000000..d0b1e7129b --- /dev/null +++ b/paparazzi/paparazzi-gradle-plugin/src/test/projects/rerun-after-test-record/src/test/java/app/cash/paparazzi/sample/RecordTest.kt @@ -0,0 +1,16 @@ +package app.cash.paparazzi.plugin.test + +import android.view.View +import app.cash.paparazzi.Paparazzi +import org.junit.Rule +import org.junit.Test + +class RecordTest { + @get:Rule + val paparazzi = Paparazzi() + + @Test + fun record() { + paparazzi.snapshot(View(paparazzi.context)) + } +} diff --git a/paparazzi/paparazzi-gradle-plugin/src/test/projects/rerun-after-test-verify/build.gradle b/paparazzi/paparazzi-gradle-plugin/src/test/projects/rerun-after-test-verify/build.gradle new file mode 100644 index 0000000000..83fe3dccde --- /dev/null +++ b/paparazzi/paparazzi-gradle-plugin/src/test/projects/rerun-after-test-verify/build.gradle @@ -0,0 +1,22 @@ +plugins { + id 'com.android.library' + id 'kotlin-android' + id 'app.cash.paparazzi' +} + +repositories { + maven { + url "file://${projectDir.absolutePath}/../../../../../build/localMaven" + } + mavenCentral() + //mavenLocal() + google() +} + +android { + namespace 'app.cash.paparazzi.plugin.test' + compileSdk libs.versions.compileSdk.get() as int + defaultConfig { + minSdk libs.versions.minSdk.get() as int + } +} diff --git a/paparazzi/paparazzi-gradle-plugin/src/test/projects/rerun-after-test-verify/src/test/java/app/cash/paparazzi/sample/RecordTest.kt b/paparazzi/paparazzi-gradle-plugin/src/test/projects/rerun-after-test-verify/src/test/java/app/cash/paparazzi/sample/RecordTest.kt new file mode 100644 index 0000000000..d0b1e7129b --- /dev/null +++ b/paparazzi/paparazzi-gradle-plugin/src/test/projects/rerun-after-test-verify/src/test/java/app/cash/paparazzi/sample/RecordTest.kt @@ -0,0 +1,16 @@ +package app.cash.paparazzi.plugin.test + +import android.view.View +import app.cash.paparazzi.Paparazzi +import org.junit.Rule +import org.junit.Test + +class RecordTest { + @get:Rule + val paparazzi = Paparazzi() + + @Test + fun record() { + paparazzi.snapshot(View(paparazzi.context)) + } +} diff --git a/paparazzi/paparazzi-gradle-plugin/src/test/projects/rerun-after-test-verify/src/test/snapshots/images/app.cash.paparazzi.plugin.test_RecordTest_record.png b/paparazzi/paparazzi-gradle-plugin/src/test/projects/rerun-after-test-verify/src/test/snapshots/images/app.cash.paparazzi.plugin.test_RecordTest_record.png new file mode 100644 index 0000000000000000000000000000000000000000..203b0ed73a5ec4b9565807f34ae2e9a680dcda5a GIT binary patch literal 6811 zcmeHM`B#%?8vSrXMZpn;!3va8v{fXMv<(PNL~Jd^A~RMIl^qinLntZ407(j>h+9ym zAOr{=wX~x(U?dR|h!kZpo7N&rR>6ExS%L%-LP9cMv@`#}oHJ*B$gkgdmwTS~KKI_| zd}Yy5dseU9uo3`()e&Fq{yP9Hf&;+fm&=zyUmkd^yAA*wk|TD9eS0E)LLPDEIC1EH zl4iyElr^2pKlt0@<(F@q`7*rtY|Z;yKK!d=^wE#n&g|d0J?OaXmvapx>*T@P9{l(h z-%ZYG8^gb?)qK3neS~dR6hEDrAoR;RDe%MD{zbsfhZzn)L-K#UEbsp3T9Rb{MxJNh6ZlO>4bi%hj#Zuc z)h#HDP)=1X_P*DuAI?N77bb~Fjv{{y{5=vDhjZk@ zNr;vwI+tJ`5p9isbJmwQbgT-ev8qOMKDxP7eAO?}%W$s;htfCGa4s`~Flr!LX|)&< zQ*DdJ?+(VRa0-8ncN(S;|E9WmUl3O>O& zSvi&rdT1@!MwSGNHVuKbt{ikK#lThK6h<*I3!8`09hYk<2B}%cu&#se$!xhFcqO6O zF;wM1AL!7x(D~K{ZGi);wv41LP;xK)sGeynPZ|)KKcButlbIp9DCtTgVPtf2i7<@7 zz@l{3jpLd6&uK}|f+HNm!8mRHz$MX(5+UC*3-ck|J?OOYs>kE93Xtrlp^iMR)P#0-PNUZ2xE(ukVLo&Y<8SjX(Dg z_8INO1K*3Oo3P$4)VVH>sg^8B;hE%G)Mav4((>xs{zavCOZs?|XziE7)V9J!psh>5 zW*T`sFU=}dt@Oxy!dul=(p`!+KliQc85(dz&vmv(*APGTlr0ml_o-kVR;|IT@zyt$ z;-LCTYIEE$vhR94=^98a=q9M`iJ6HIrc`k935_!Iv9_sTlE5%|OFr`I9v=&qki?23 zcQnmlpeS^6SnrElZb9LQ8J+&AaShimw6dIJk}4_PjVjv-W#`o_7)IQZ@OuyyE+-RJp`ZG!hmT(_D~sXJ_ZPU|l2lcD z_4tcXd_%hy=bhp;_9>Heq5S#ox3$0~E}Pneo_`XbEo|A&EL3mhbmb2|U-x!DlJ|Ud zfe%8NO3tQVgPY=affw+F*Z#9Jts@+BnoNpFN5Q}Y%=~`+;wfiD1N5eF0uq~AiBDy) zHuVIaGf8@dDI$;R(Gwfz5=!=pGl~$OFm})XiYI4kJ>3O}M@-7>O{wH;@KZd}hP#@( zFwiT^_3z2OAcX65hX`TK)tV3AflWJ|9aRKzlc_Y1W6{!cv=uc*I1j4wHK{gchrCo- zcdA#X9x_twD@b2uTyY`^+r0-h zed)mUK3&#hfDbakJC|ym)V9Xwp6Wt$whc=!*(ZV+m z={Bh^z+>Zt!y5-7mS$k4VkP;{^rK7llF7oSrU&!#6*Z6(k)=`v+kJP6I66N6)eT6> zh;8Muirjp5iLm()q|}v3lvj}n`Cs4iXN2h>d&wt2LI8E&@51K?V&Ym15qt#0RjrG< z=H4-N$~sG^0NFMTk>aY#8DwF{?T+~jgg9!@8;)RbloS*A6FqCV&?rbiWwID$c|L^e zkZSlMc)C-UArmjqJHL#)C*;!gR{zvNKi&Au*{!z+#h|6?^rk4vT$gti%JPPWSIqo` z#Kr6HRN+KQEG|oGZBG@DnY`(*-3@mT7&j(&vaMb6>EVD~=#?hg7*U=(02Vt1WFJQt z*j!cp{pkMs>3>XAUs-T8J~W47vz--h4HdG=yT(T`9e3)a!Cz@zreo>Y`V{L>m0u!e z0;J;=lU+r%aR}{}_6fF>tqZ}fq74hJtC6y)1W95J2g(}`f-$Df-|(Jtt~>tmdB~nO zJI{s-twwdK9%Q9 nS%A{J|AUzJXXyKl?{F#4v-(VYdkXZ^35fV2YWMA3iN*f{Ll|ye literal 0 HcmV?d00001 From a232f868cd75567b28c211fa3c1b0e4d21e1dc88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=B3bert=20Papp=20=28TWiStErRob=29?= Date: Thu, 19 Jan 2023 14:46:33 +0000 Subject: [PATCH 2/6] Move paparazzi properties earlier, so they are playing in incremental builds. It's a standard HashMap not a DomainObjectCollection, so there won't be any further items inserted between filterKeys and doFirst. --- .../src/main/java/app/cash/paparazzi/gradle/PaparazziPlugin.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/paparazzi/paparazzi-gradle-plugin/src/main/java/app/cash/paparazzi/gradle/PaparazziPlugin.kt b/paparazzi/paparazzi-gradle-plugin/src/main/java/app/cash/paparazzi/gradle/PaparazziPlugin.kt index 3e6c529772..a8ebffaa9c 100644 --- a/paparazzi/paparazzi-gradle-plugin/src/main/java/app/cash/paparazzi/gradle/PaparazziPlugin.kt +++ b/paparazzi/paparazzi-gradle-plugin/src/main/java/app/cash/paparazzi/gradle/PaparazziPlugin.kt @@ -169,6 +169,7 @@ class PaparazziPlugin : Plugin { test.outputs.dir(snapshotOutputDir) val paparazziProperties = project.properties.filterKeys { it.startsWith("app.cash.paparazzi") } + test.systemProperties.putAll(paparazziProperties) // Explicitly register these as inputs so that they are considered when determining up-to-date. // The properties become resolvable after the last afterEvaluate runs. @@ -184,7 +185,6 @@ class PaparazziPlugin : Plugin { test.systemProperties["paparazzi.test.record"] = isRecordRun.get() test.systemProperties["paparazzi.test.verify"] = isVerifyRun.get() test.systemProperties["kotlinx.coroutines.main.delay"] = true - test.systemProperties.putAll(paparazziProperties) } }) } From 176607eb8e65cbb8cf87b43d1dd8e3bf8d558ae1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=B3bert=20Papp=20=28TWiStErRob=29?= Date: Thu, 30 Mar 2023 17:12:04 +0100 Subject: [PATCH 3/6] Move and remove comments --- .../main/java/app/cash/paparazzi/gradle/PaparazziPlugin.kt | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/paparazzi/paparazzi-gradle-plugin/src/main/java/app/cash/paparazzi/gradle/PaparazziPlugin.kt b/paparazzi/paparazzi-gradle-plugin/src/main/java/app/cash/paparazzi/gradle/PaparazziPlugin.kt index a8ebffaa9c..c3f0447be1 100644 --- a/paparazzi/paparazzi-gradle-plugin/src/main/java/app/cash/paparazzi/gradle/PaparazziPlugin.kt +++ b/paparazzi/paparazzi-gradle-plugin/src/main/java/app/cash/paparazzi/gradle/PaparazziPlugin.kt @@ -158,6 +158,8 @@ class PaparazziPlugin : Plugin { writeResourcesTask.flatMap { it.paparazziResources.asFile }.get().path test.systemProperties["paparazzi.build.dir"] = buildDirectory.get().toString() + test.inputs.property("paparazzi.test.record", isRecordRun) + test.inputs.property("paparazzi.test.verify", isVerifyRun) test.inputs.dir(mergeResourcesOutputDir) test.inputs.dir(mergeAssetsOutputDir) @@ -171,11 +173,6 @@ class PaparazziPlugin : Plugin { val paparazziProperties = project.properties.filterKeys { it.startsWith("app.cash.paparazzi") } test.systemProperties.putAll(paparazziProperties) - // Explicitly register these as inputs so that they are considered when determining up-to-date. - // The properties become resolvable after the last afterEvaluate runs. - test.inputs.property("paparazzi.test.record", isRecordRun) - test.inputs.property("paparazzi.test.verify", isVerifyRun) - @Suppress("ObjectLiteralToLambda") // why not a lambda? See: https://docs.gradle.org/7.2/userguide/validation_problems.html#implementation_unknown test.doFirst(object : Action { From 39790b8b4162900e3a5f0e90a1eaebebff4f003f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=B3bert=20Papp=20=28TWiStErRob=29?= Date: Thu, 30 Mar 2023 17:41:18 +0100 Subject: [PATCH 4/6] Document that we're doing something funky --- .../main/java/app/cash/paparazzi/gradle/PaparazziPlugin.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/paparazzi/paparazzi-gradle-plugin/src/main/java/app/cash/paparazzi/gradle/PaparazziPlugin.kt b/paparazzi/paparazzi-gradle-plugin/src/main/java/app/cash/paparazzi/gradle/PaparazziPlugin.kt index c3f0447be1..4be297e8a3 100644 --- a/paparazzi/paparazzi-gradle-plugin/src/main/java/app/cash/paparazzi/gradle/PaparazziPlugin.kt +++ b/paparazzi/paparazzi-gradle-plugin/src/main/java/app/cash/paparazzi/gradle/PaparazziPlugin.kt @@ -158,6 +158,7 @@ class PaparazziPlugin : Plugin { writeResourcesTask.flatMap { it.paparazziResources.asFile }.get().path test.systemProperties["paparazzi.build.dir"] = buildDirectory.get().toString() + test.systemProperties["kotlinx.coroutines.main.delay"] = true test.inputs.property("paparazzi.test.record", isRecordRun) test.inputs.property("paparazzi.test.verify", isVerifyRun) @@ -177,11 +178,12 @@ class PaparazziPlugin : Plugin { // why not a lambda? See: https://docs.gradle.org/7.2/userguide/validation_problems.html#implementation_unknown test.doFirst(object : Action { override fun execute(t: Task) { + // Note: these are lazy properties that are not resolvable in the Gradle configuration phase. + // They need special handling, so they're added as inputs.property above, and systemProperty here. test.systemProperties["paparazzi.platform.data.root"] = nativePlatformFileCollection.singleFile.absolutePath test.systemProperties["paparazzi.test.record"] = isRecordRun.get() test.systemProperties["paparazzi.test.verify"] = isVerifyRun.get() - test.systemProperties["kotlinx.coroutines.main.delay"] = true } }) } From e1a8ed1cfc777b6a915149c158ec4dc3480a375a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=B3bert=20Papp=20=28TWiStErRob=29?= Date: Thu, 30 Mar 2023 19:32:35 +0100 Subject: [PATCH 5/6] Merge two tests --- .../paparazzi/gradle/PaparazziPluginTest.kt | 26 ++++-------------- .../rerun-after-test-verify/build.gradle | 22 --------------- .../app/cash/paparazzi/sample/RecordTest.kt | 16 ----------- ...aparazzi.plugin.test_RecordTest_record.png | Bin 6811 -> 0 bytes .../build.gradle | 0 .../app/cash/paparazzi/sample/RecordTest.kt | 0 6 files changed, 5 insertions(+), 59 deletions(-) delete mode 100644 paparazzi/paparazzi-gradle-plugin/src/test/projects/rerun-after-test-verify/build.gradle delete mode 100644 paparazzi/paparazzi-gradle-plugin/src/test/projects/rerun-after-test-verify/src/test/java/app/cash/paparazzi/sample/RecordTest.kt delete mode 100644 paparazzi/paparazzi-gradle-plugin/src/test/projects/rerun-after-test-verify/src/test/snapshots/images/app.cash.paparazzi.plugin.test_RecordTest_record.png rename paparazzi/paparazzi-gradle-plugin/src/test/projects/{rerun-after-test-record => rerun-property-change}/build.gradle (100%) rename paparazzi/paparazzi-gradle-plugin/src/test/projects/{rerun-after-test-record => rerun-property-change}/src/test/java/app/cash/paparazzi/sample/RecordTest.kt (100%) diff --git a/paparazzi/paparazzi-gradle-plugin/src/test/java/app/cash/paparazzi/gradle/PaparazziPluginTest.kt b/paparazzi/paparazzi-gradle-plugin/src/test/java/app/cash/paparazzi/gradle/PaparazziPluginTest.kt index 731477e2a7..6256383d8b 100644 --- a/paparazzi/paparazzi-gradle-plugin/src/test/java/app/cash/paparazzi/gradle/PaparazziPluginTest.kt +++ b/paparazzi/paparazzi-gradle-plugin/src/test/java/app/cash/paparazzi/gradle/PaparazziPluginTest.kt @@ -522,8 +522,8 @@ class PaparazziPluginTest { } @Test - fun rerunTestsOnRecordPropertyChange() { - val fixtureRoot = File("src/test/projects/rerun-after-test-record") + fun rerunTestsOnPropertyChange() { + val fixtureRoot = File("src/test/projects/rerun-property-change") // Take 1 val firstRunResult = gradleRunner @@ -546,30 +546,14 @@ class PaparazziPluginTest { assertThat(this).isNotNull() assertThat(this!!.outcome).isEqualTo(SUCCESS) // not UP-TO-DATE } - } - - @Test - fun rerunTestsOnVerifyPropertyChange() { - val fixtureRoot = File("src/test/projects/rerun-after-test-verify") - - // Take 1 - val firstRunResult = gradleRunner - .withArguments("testDebugUnitTest", "--stacktrace") - .forwardOutput() - .runFixture(fixtureRoot) { build() } - with(firstRunResult.task(":testDebugUnitTest")) { - assertThat(this).isNotNull() - assertThat(this!!.outcome).isEqualTo(SUCCESS) - } - - // Take 2 - val secondRunResult = gradleRunner + // Take 3 + val thirdRunResult = gradleRunner .withArguments("verifyPaparazziDebug", "--stacktrace") .forwardOutput() .runFixture(fixtureRoot) { build() } - with(secondRunResult.task(":testDebugUnitTest")) { + with(thirdRunResult.task(":testDebugUnitTest")) { assertThat(this).isNotNull() assertThat(this!!.outcome).isEqualTo(SUCCESS) // not UP-TO-DATE } diff --git a/paparazzi/paparazzi-gradle-plugin/src/test/projects/rerun-after-test-verify/build.gradle b/paparazzi/paparazzi-gradle-plugin/src/test/projects/rerun-after-test-verify/build.gradle deleted file mode 100644 index 83fe3dccde..0000000000 --- a/paparazzi/paparazzi-gradle-plugin/src/test/projects/rerun-after-test-verify/build.gradle +++ /dev/null @@ -1,22 +0,0 @@ -plugins { - id 'com.android.library' - id 'kotlin-android' - id 'app.cash.paparazzi' -} - -repositories { - maven { - url "file://${projectDir.absolutePath}/../../../../../build/localMaven" - } - mavenCentral() - //mavenLocal() - google() -} - -android { - namespace 'app.cash.paparazzi.plugin.test' - compileSdk libs.versions.compileSdk.get() as int - defaultConfig { - minSdk libs.versions.minSdk.get() as int - } -} diff --git a/paparazzi/paparazzi-gradle-plugin/src/test/projects/rerun-after-test-verify/src/test/java/app/cash/paparazzi/sample/RecordTest.kt b/paparazzi/paparazzi-gradle-plugin/src/test/projects/rerun-after-test-verify/src/test/java/app/cash/paparazzi/sample/RecordTest.kt deleted file mode 100644 index d0b1e7129b..0000000000 --- a/paparazzi/paparazzi-gradle-plugin/src/test/projects/rerun-after-test-verify/src/test/java/app/cash/paparazzi/sample/RecordTest.kt +++ /dev/null @@ -1,16 +0,0 @@ -package app.cash.paparazzi.plugin.test - -import android.view.View -import app.cash.paparazzi.Paparazzi -import org.junit.Rule -import org.junit.Test - -class RecordTest { - @get:Rule - val paparazzi = Paparazzi() - - @Test - fun record() { - paparazzi.snapshot(View(paparazzi.context)) - } -} diff --git a/paparazzi/paparazzi-gradle-plugin/src/test/projects/rerun-after-test-verify/src/test/snapshots/images/app.cash.paparazzi.plugin.test_RecordTest_record.png b/paparazzi/paparazzi-gradle-plugin/src/test/projects/rerun-after-test-verify/src/test/snapshots/images/app.cash.paparazzi.plugin.test_RecordTest_record.png deleted file mode 100644 index 203b0ed73a5ec4b9565807f34ae2e9a680dcda5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6811 zcmeHM`B#%?8vSrXMZpn;!3va8v{fXMv<(PNL~Jd^A~RMIl^qinLntZ407(j>h+9ym zAOr{=wX~x(U?dR|h!kZpo7N&rR>6ExS%L%-LP9cMv@`#}oHJ*B$gkgdmwTS~KKI_| zd}Yy5dseU9uo3`()e&Fq{yP9Hf&;+fm&=zyUmkd^yAA*wk|TD9eS0E)LLPDEIC1EH zl4iyElr^2pKlt0@<(F@q`7*rtY|Z;yKK!d=^wE#n&g|d0J?OaXmvapx>*T@P9{l(h z-%ZYG8^gb?)qK3neS~dR6hEDrAoR;RDe%MD{zbsfhZzn)L-K#UEbsp3T9Rb{MxJNh6ZlO>4bi%hj#Zuc z)h#HDP)=1X_P*DuAI?N77bb~Fjv{{y{5=vDhjZk@ zNr;vwI+tJ`5p9isbJmwQbgT-ev8qOMKDxP7eAO?}%W$s;htfCGa4s`~Flr!LX|)&< zQ*DdJ?+(VRa0-8ncN(S;|E9WmUl3O>O& zSvi&rdT1@!MwSGNHVuKbt{ikK#lThK6h<*I3!8`09hYk<2B}%cu&#se$!xhFcqO6O zF;wM1AL!7x(D~K{ZGi);wv41LP;xK)sGeynPZ|)KKcButlbIp9DCtTgVPtf2i7<@7 zz@l{3jpLd6&uK}|f+HNm!8mRHz$MX(5+UC*3-ck|J?OOYs>kE93Xtrlp^iMR)P#0-PNUZ2xE(ukVLo&Y<8SjX(Dg z_8INO1K*3Oo3P$4)VVH>sg^8B;hE%G)Mav4((>xs{zavCOZs?|XziE7)V9J!psh>5 zW*T`sFU=}dt@Oxy!dul=(p`!+KliQc85(dz&vmv(*APGTlr0ml_o-kVR;|IT@zyt$ z;-LCTYIEE$vhR94=^98a=q9M`iJ6HIrc`k935_!Iv9_sTlE5%|OFr`I9v=&qki?23 zcQnmlpeS^6SnrElZb9LQ8J+&AaShimw6dIJk}4_PjVjv-W#`o_7)IQZ@OuyyE+-RJp`ZG!hmT(_D~sXJ_ZPU|l2lcD z_4tcXd_%hy=bhp;_9>Heq5S#ox3$0~E}Pneo_`XbEo|A&EL3mhbmb2|U-x!DlJ|Ud zfe%8NO3tQVgPY=affw+F*Z#9Jts@+BnoNpFN5Q}Y%=~`+;wfiD1N5eF0uq~AiBDy) zHuVIaGf8@dDI$;R(Gwfz5=!=pGl~$OFm})XiYI4kJ>3O}M@-7>O{wH;@KZd}hP#@( zFwiT^_3z2OAcX65hX`TK)tV3AflWJ|9aRKzlc_Y1W6{!cv=uc*I1j4wHK{gchrCo- zcdA#X9x_twD@b2uTyY`^+r0-h zed)mUK3&#hfDbakJC|ym)V9Xwp6Wt$whc=!*(ZV+m z={Bh^z+>Zt!y5-7mS$k4VkP;{^rK7llF7oSrU&!#6*Z6(k)=`v+kJP6I66N6)eT6> zh;8Muirjp5iLm()q|}v3lvj}n`Cs4iXN2h>d&wt2LI8E&@51K?V&Ym15qt#0RjrG< z=H4-N$~sG^0NFMTk>aY#8DwF{?T+~jgg9!@8;)RbloS*A6FqCV&?rbiWwID$c|L^e zkZSlMc)C-UArmjqJHL#)C*;!gR{zvNKi&Au*{!z+#h|6?^rk4vT$gti%JPPWSIqo` z#Kr6HRN+KQEG|oGZBG@DnY`(*-3@mT7&j(&vaMb6>EVD~=#?hg7*U=(02Vt1WFJQt z*j!cp{pkMs>3>XAUs-T8J~W47vz--h4HdG=yT(T`9e3)a!Cz@zreo>Y`V{L>m0u!e z0;J;=lU+r%aR}{}_6fF>tqZ}fq74hJtC6y)1W95J2g(}`f-$Df-|(Jtt~>tmdB~nO zJI{s-twwdK9%Q9 nS%A{J|AUzJXXyKl?{F#4v-(VYdkXZ^35fV2YWMA3iN*f{Ll|ye diff --git a/paparazzi/paparazzi-gradle-plugin/src/test/projects/rerun-after-test-record/build.gradle b/paparazzi/paparazzi-gradle-plugin/src/test/projects/rerun-property-change/build.gradle similarity index 100% rename from paparazzi/paparazzi-gradle-plugin/src/test/projects/rerun-after-test-record/build.gradle rename to paparazzi/paparazzi-gradle-plugin/src/test/projects/rerun-property-change/build.gradle diff --git a/paparazzi/paparazzi-gradle-plugin/src/test/projects/rerun-after-test-record/src/test/java/app/cash/paparazzi/sample/RecordTest.kt b/paparazzi/paparazzi-gradle-plugin/src/test/projects/rerun-property-change/src/test/java/app/cash/paparazzi/sample/RecordTest.kt similarity index 100% rename from paparazzi/paparazzi-gradle-plugin/src/test/projects/rerun-after-test-record/src/test/java/app/cash/paparazzi/sample/RecordTest.kt rename to paparazzi/paparazzi-gradle-plugin/src/test/projects/rerun-property-change/src/test/java/app/cash/paparazzi/sample/RecordTest.kt From 217a6294af0346ad7a58af72028ae664400568f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=B3bert=20Papp=20=28TWiStErRob=29?= Date: Thu, 30 Mar 2023 19:35:12 +0100 Subject: [PATCH 6/6] Move systemProperties together --- .../main/java/app/cash/paparazzi/gradle/PaparazziPlugin.kt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/paparazzi/paparazzi-gradle-plugin/src/main/java/app/cash/paparazzi/gradle/PaparazziPlugin.kt b/paparazzi/paparazzi-gradle-plugin/src/main/java/app/cash/paparazzi/gradle/PaparazziPlugin.kt index 4be297e8a3..eaf979749b 100644 --- a/paparazzi/paparazzi-gradle-plugin/src/main/java/app/cash/paparazzi/gradle/PaparazziPlugin.kt +++ b/paparazzi/paparazzi-gradle-plugin/src/main/java/app/cash/paparazzi/gradle/PaparazziPlugin.kt @@ -159,6 +159,8 @@ class PaparazziPlugin : Plugin { test.systemProperties["paparazzi.build.dir"] = buildDirectory.get().toString() test.systemProperties["kotlinx.coroutines.main.delay"] = true + test.systemProperties.putAll(project.properties.filterKeys { it.startsWith("app.cash.paparazzi") }) + test.inputs.property("paparazzi.test.record", isRecordRun) test.inputs.property("paparazzi.test.verify", isVerifyRun) @@ -171,9 +173,6 @@ class PaparazziPlugin : Plugin { test.outputs.dir(reportOutputDir) test.outputs.dir(snapshotOutputDir) - val paparazziProperties = project.properties.filterKeys { it.startsWith("app.cash.paparazzi") } - test.systemProperties.putAll(paparazziProperties) - @Suppress("ObjectLiteralToLambda") // why not a lambda? See: https://docs.gradle.org/7.2/userguide/validation_problems.html#implementation_unknown test.doFirst(object : Action {