diff --git a/gradlew.bat b/gradlew.bat index 6689b85bee..93e3f59f13 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,92 +1,92 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%"=="" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%"=="" set DIRNAME=. -@rem This is normally unused -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if %ERRORLEVEL% equ 0 goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega 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 3940b391ec..92e9fb15a9 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 @@ -114,6 +114,53 @@ class PaparazziPluginTest { assertThat(resourceFileContents[0]).isEqualTo("app.cash.paparazzi.plugin.namespaced") } + @Test + fun prepareResourcesCaching() { + val fixtureRoot = File("src/test/projects/prepare-resources-task-caching") + + val firstRun = gradleRunner + .withArguments("testRelease", "testDebug", "--build-cache", "--stacktrace") + .runFixture(fixtureRoot) { build() } + + println(firstRun.output) + + with(firstRun.task(":preparePaparazziDebugResources")) { + assertThat(this).isNotNull() + assertThat(this!!.outcome).isNotEqualTo(FROM_CACHE) + } + + with(firstRun.task(":preparePaparazziReleaseResources")) { + assertThat(this).isNotNull() + assertThat(this!!.outcome).isNotEqualTo(FROM_CACHE) + } + + var resourcesFile = File(fixtureRoot, "build/intermediates/paparazzi/debug/resources.txt") + assertThat(resourcesFile.exists()).isTrue() + var resourceFileContents = resourcesFile.readLines() + assertThat(resourceFileContents.any { it.contains("release") }).isFalse() + + resourcesFile = File(fixtureRoot, "build/intermediates/paparazzi/release/resources.txt") + assertThat(resourcesFile.exists()).isTrue() + resourceFileContents = resourcesFile.readLines() + assertThat(resourceFileContents.any { it.contains("debug") }).isFalse() + + fixtureRoot.resolve("build").deleteRecursively() + + val secondRun = gradleRunner + .withArguments("testDebug", "--build-cache", "--stacktrace") + .runFixture(fixtureRoot) { build() } + + with(secondRun.task(":preparePaparazziDebugResources")) { + assertThat(this).isNotNull() + assertThat(this!!.outcome).isEqualTo(FROM_CACHE) + } + + resourcesFile = File(fixtureRoot, "build/intermediates/paparazzi/debug/resources.txt") + assertThat(resourcesFile.exists()).isTrue() + resourceFileContents = resourcesFile.readLines() + assertThat(resourceFileContents.any { it.contains("release") }).isFalse() + } + @Test fun customBuildDir() { val fixtureRoot = File("src/test/projects/custom-build-dir") diff --git a/paparazzi/paparazzi-gradle-plugin/src/test/projects/prepare-resources-task-caching/build.gradle b/paparazzi/paparazzi-gradle-plugin/src/test/projects/prepare-resources-task-caching/build.gradle new file mode 100644 index 0000000000..83fe3dccde --- /dev/null +++ b/paparazzi/paparazzi-gradle-plugin/src/test/projects/prepare-resources-task-caching/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/prepare-resources-task-caching/settings.gradle b/paparazzi/paparazzi-gradle-plugin/src/test/projects/prepare-resources-task-caching/settings.gradle new file mode 100644 index 0000000000..79b3ab9f07 --- /dev/null +++ b/paparazzi/paparazzi-gradle-plugin/src/test/projects/prepare-resources-task-caching/settings.gradle @@ -0,0 +1,7 @@ +apply from: '../test.settings.gradle' + +buildCache { + local { + directory = new File(rootDir, 'build-cache') + } +}