From eaccdfa51775ecba73af36fcdc89dd47017c5987 Mon Sep 17 00:00:00 2001 From: Remco Mokveld Date: Fri, 2 Aug 2024 17:19:16 +0200 Subject: [PATCH 1/9] Add test that ensures that UUID generation is deterministic and remove assertions that are irrelevant if UUID genrations is deterministic --- .../gradle/integration/SentryPluginTest.kt | 113 +++++++++++------- 1 file changed, 72 insertions(+), 41 deletions(-) diff --git a/plugin-build/src/test/kotlin/io/sentry/android/gradle/integration/SentryPluginTest.kt b/plugin-build/src/test/kotlin/io/sentry/android/gradle/integration/SentryPluginTest.kt index a3a7d765..bfe98cf9 100644 --- a/plugin-build/src/test/kotlin/io/sentry/android/gradle/integration/SentryPluginTest.kt +++ b/plugin-build/src/test/kotlin/io/sentry/android/gradle/integration/SentryPluginTest.kt @@ -13,7 +13,6 @@ import kotlin.test.assertFalse import kotlin.test.assertNotEquals import kotlin.test.assertTrue import org.gradle.testkit.runner.TaskOutcome -import org.gradle.testkit.runner.TaskOutcome.FROM_CACHE import org.gradle.util.GradleVersion import org.hamcrest.CoreMatchers.`is` import org.junit.Assert.assertThrows @@ -46,6 +45,77 @@ class SentryPluginTest : assertTrue(configuredTasks.isEmpty(), configuredTasks.joinToString("\n")) } + @Test + fun `generates the same UUID when mapping file stays the same with rerun tasks`() { + runner.appendArguments(":app:assembleRelease") + + val sourceDir = File(testProjectDir.root, "app/src/main/java/com/example").apply { + mkdirs() + } + + val manifest = File(testProjectDir.root, "app/src/main/AndroidManifest.xml") + manifest.writeText( + """ + + + + + + """.trimIndent() + ) + + val sourceFile = File(sourceDir, "MainActivity.java") + sourceFile.createNewFile() + sourceFile.writeText( + """ + package com.example; + import android.app.Activity; + import android.os.Bundle; + + public class MainActivity extends Activity { + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + hello(); + } + + public void hello() { + System.out.println("Hello"); + } + } + """.trimIndent() + ) + + runner.appendArguments(":app:assembleRelease").build() + val uuid1 = verifyProguardUuid(testProjectDir.root) + + sourceFile.writeText( + """ + package com.example; + import android.app.Activity; + import android.os.Bundle; + + public class MainActivity extends Activity { + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + hello(); + } + + public void hello() { + System.out.println("Hello2"); + } + } + """.trimIndent() + ) + + runner.appendArguments(":app:assembleRelease", "--rerun-tasks").build() + val uuid2 = verifyProguardUuid(testProjectDir.root) + + assertEquals(uuid1, uuid2) + } + + @Test fun `does not regenerate UUID every build`() { runner.appendArguments(":app:assembleRelease") @@ -198,15 +268,9 @@ class SentryPluginTest : """.trimIndent() ) - val build = runner.appendArguments(":app:assembleRelease").build() + runner.appendArguments(":app:assembleRelease").build() val uuid2 = verifyProguardUuid(testProjectDir.root) - assertEquals( - TaskOutcome.UP_TO_DATE, - build.task(":app:generateSentryProguardUuidRelease")?.outcome, - build.output - ) - assertEquals(uuid1, uuid2) } @@ -866,39 +930,6 @@ class SentryPluginTest : assertEquals(uuid1, uuid2) } - @Test - fun `caches uuid-generating tasks`() { - // first build it so it gets cached - runner.withArguments(":app:assembleRelease", "--build-cache").build() - val uuid1 = verifyProguardUuid(testProjectDir.root) - - // this should erase the build folder so the tasks are not up-to-date - runner.withArguments("clean").build() - - // this should restore the entry from cache as the mapping file hasn't changed - val build = runner.withArguments("app:assembleRelease", "--build-cache").build() - val uuid2 = verifyProguardUuid(testProjectDir.root) - - assertEquals( - FROM_CACHE, - build.task(":app:generateSentryProguardUuidRelease")?.outcome, - build.output - ) - assertEquals( - FROM_CACHE, - build.task(":app:generateSentryDebugMetaPropertiesRelease")?.outcome - ?: build.task(":app:injectSentryDebugMetaPropertiesIntoAssetsRelease")?.outcome, - build.output - ) - assertEquals( - FROM_CACHE, - build.task(":app:releaseSentryGenerateIntegrationListTask")?.outcome, - build.output - ) - // should be the same uuid - assertEquals(uuid1, uuid2) - } - @Test fun `copyFlutterAssetsDebug is wired up`() { assumeThat( From f31e276272c73d5c0e0cc18e90d7a4c0ac55dfcd Mon Sep 17 00:00:00 2001 From: Remco Mokveld Date: Fri, 2 Aug 2024 17:19:54 +0200 Subject: [PATCH 2/9] Make UUID generation deterministic by using the hash of the proguard file as input for creating the UUID --- .../tasks/SentryGenerateProguardUuidTask.kt | 35 +++++++------------ 1 file changed, 13 insertions(+), 22 deletions(-) diff --git a/plugin-build/src/main/kotlin/io/sentry/android/gradle/tasks/SentryGenerateProguardUuidTask.kt b/plugin-build/src/main/kotlin/io/sentry/android/gradle/tasks/SentryGenerateProguardUuidTask.kt index d7c57bf5..b1d1de49 100644 --- a/plugin-build/src/main/kotlin/io/sentry/android/gradle/tasks/SentryGenerateProguardUuidTask.kt +++ b/plugin-build/src/main/kotlin/io/sentry/android/gradle/tasks/SentryGenerateProguardUuidTask.kt @@ -5,21 +5,19 @@ import io.sentry.android.gradle.telemetry.SentryTelemetryService import io.sentry.android.gradle.telemetry.withSentryTelemetry import io.sentry.android.gradle.util.contentHash import io.sentry.android.gradle.util.info -import java.util.Properties -import java.util.UUID import org.gradle.api.Project +import org.gradle.api.file.ConfigurableFileCollection import org.gradle.api.file.Directory import org.gradle.api.file.FileCollection import org.gradle.api.file.RegularFile -import org.gradle.api.provider.Property import org.gradle.api.provider.Provider -import org.gradle.api.tasks.CacheableTask -import org.gradle.api.tasks.Input import org.gradle.api.tasks.Internal import org.gradle.api.tasks.TaskAction import org.gradle.api.tasks.TaskProvider +import org.gradle.work.DisableCachingByDefault +import java.util.UUID -@CacheableTask +@DisableCachingByDefault abstract class SentryGenerateProguardUuidTask : PropertiesFileOutputTask() { init { @@ -30,22 +28,19 @@ abstract class SentryGenerateProguardUuidTask : PropertiesFileOutputTask() { @get:Internal override val outputFile: Provider get() = output.file(SENTRY_UUID_OUTPUT) - @get:Input - abstract val proguardMappingFileHash: Property + @get:Internal + abstract val proguardMappingFiles: ConfigurableFileCollection @TaskAction fun generateProperties() { val outputDir = output.get().asFile outputDir.mkdirs() - val uuid = UUID.randomUUID() - - val props = Properties().also { - it.setProperty(SENTRY_PROGUARD_MAPPING_UUID_PROPERTY, uuid.toString()) - } - + val proguardMappingFileHash = proguardMappingFiles.files + .joinToString { if (it.isFile) it.contentHash() else STATIC_HASH } + val uuid = UUID.nameUUIDFromBytes(proguardMappingFileHash.toByteArray()) outputFile.get().asFile.writer().use { writer -> - props.store(writer, "") + writer.appendLine("$SENTRY_PROGUARD_MAPPING_UUID_PROPERTY=$uuid") } logger.info { @@ -72,13 +67,9 @@ abstract class SentryGenerateProguardUuidTask : PropertiesFileOutputTask() { ) { task -> output?.let { task.output.set(it) } task.withSentryTelemetry(extension, sentryTelemetryProvider) - task.proguardMappingFileHash.set( - proguardMappingFile?.map { - it.files.joinToString { file -> - if (file.exists()) file.contentHash() else STATIC_HASH - } - } ?: project.provider { STATIC_HASH } - ) + if (proguardMappingFile != null) + task.proguardMappingFiles.from(proguardMappingFile) + task.outputs.upToDateWhen { false } } return generateUuidTask } From 3679894b9ae5dffe361212ae617f520056311fb3 Mon Sep 17 00:00:00 2001 From: Roman Zavarnitsyn Date: Fri, 2 Aug 2024 18:20:23 +0200 Subject: [PATCH 3/9] Dont run source context tasks when no auth token --- examples/android-instrumentation-sample/build.gradle.kts | 2 +- examples/multi-module-sample/build.gradle.kts | 2 +- .../spring-boot-in-multi-module-sample/build.gradle.kts | 2 +- .../spring-boot-in-multi-module-sample2/build.gradle.kts | 2 +- examples/spring-boot-sample/build.gradle.kts | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/examples/android-instrumentation-sample/build.gradle.kts b/examples/android-instrumentation-sample/build.gradle.kts index a6e3821a..26782e72 100644 --- a/examples/android-instrumentation-sample/build.gradle.kts +++ b/examples/android-instrumentation-sample/build.gradle.kts @@ -106,7 +106,7 @@ sentry { debug.set(true) autoUploadProguardMapping.set(CI.canAutoUpload()) - includeSourceContext.set(true) + includeSourceContext.set(CI.canAutoUpload()) autoUploadSourceContext.set(CI.canAutoUpload()) additionalSourceDirsForSourceContext.set(setOf("src/custom/java")) diff --git a/examples/multi-module-sample/build.gradle.kts b/examples/multi-module-sample/build.gradle.kts index 650af177..079fda70 100644 --- a/examples/multi-module-sample/build.gradle.kts +++ b/examples/multi-module-sample/build.gradle.kts @@ -16,6 +16,6 @@ tasks.withType { sentry { debug.set(true) telemetry.set(false) - includeSourceContext.set(true) + includeSourceContext.set(CI.canAutoUpload()) additionalSourceDirsForSourceContext.set(setOf("testsrc")) } diff --git a/examples/multi-module-sample/spring-boot-in-multi-module-sample/build.gradle.kts b/examples/multi-module-sample/spring-boot-in-multi-module-sample/build.gradle.kts index 8325d806..79bf5e8c 100644 --- a/examples/multi-module-sample/spring-boot-in-multi-module-sample/build.gradle.kts +++ b/examples/multi-module-sample/spring-boot-in-multi-module-sample/build.gradle.kts @@ -52,6 +52,6 @@ tasks.withType { sentry { debug.set(true) telemetry.set(false) - includeSourceContext.set(true) + includeSourceContext.set(CI.canAutoUpload()) additionalSourceDirsForSourceContext.set(setOf("testsrc")) } diff --git a/examples/multi-module-sample/spring-boot-in-multi-module-sample2/build.gradle.kts b/examples/multi-module-sample/spring-boot-in-multi-module-sample2/build.gradle.kts index 3a54b087..12c69363 100644 --- a/examples/multi-module-sample/spring-boot-in-multi-module-sample2/build.gradle.kts +++ b/examples/multi-module-sample/spring-boot-in-multi-module-sample2/build.gradle.kts @@ -51,6 +51,6 @@ tasks.withType { sentry { debug.set(true) - includeSourceContext.set(true) + includeSourceContext.set(CI.canAutoUpload()) additionalSourceDirsForSourceContext.set(setOf("testsrc")) } diff --git a/examples/spring-boot-sample/build.gradle.kts b/examples/spring-boot-sample/build.gradle.kts index 3a54b087..12c69363 100644 --- a/examples/spring-boot-sample/build.gradle.kts +++ b/examples/spring-boot-sample/build.gradle.kts @@ -51,6 +51,6 @@ tasks.withType { sentry { debug.set(true) - includeSourceContext.set(true) + includeSourceContext.set(CI.canAutoUpload()) additionalSourceDirsForSourceContext.set(setOf("testsrc")) } From f96afdd71dde1081e525d94db81396c9090924c3 Mon Sep 17 00:00:00 2001 From: Roman Zavarnitsyn Date: Mon, 5 Aug 2024 09:58:57 +0200 Subject: [PATCH 4/9] Formatting --- plugin-build/build.gradle.kts | 2 +- .../android/gradle/tasks/SentryGenerateProguardUuidTask.kt | 5 +++-- .../io/sentry/android/gradle/integration/SentryPluginTest.kt | 1 - 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/plugin-build/build.gradle.kts b/plugin-build/build.gradle.kts index 978bffd8..e3cffc3e 100644 --- a/plugin-build/build.gradle.kts +++ b/plugin-build/build.gradle.kts @@ -94,7 +94,7 @@ dependencies { testImplementationAar(Libs.SQLITE) testImplementationAar(Libs.SQLITE_FRAMEWORK) testRuntimeOnly(files(androidSdkPath)) - testImplementation(Libs.SENTRY_ANDROID) + testImplementationAar(Libs.SENTRY_ANDROID) testImplementationAar(Libs.SENTRY_ANDROID_OKHTTP) testImplementationAar(Libs.SENTRY_OKHTTP) diff --git a/plugin-build/src/main/kotlin/io/sentry/android/gradle/tasks/SentryGenerateProguardUuidTask.kt b/plugin-build/src/main/kotlin/io/sentry/android/gradle/tasks/SentryGenerateProguardUuidTask.kt index b1d1de49..86b6172d 100644 --- a/plugin-build/src/main/kotlin/io/sentry/android/gradle/tasks/SentryGenerateProguardUuidTask.kt +++ b/plugin-build/src/main/kotlin/io/sentry/android/gradle/tasks/SentryGenerateProguardUuidTask.kt @@ -5,6 +5,7 @@ import io.sentry.android.gradle.telemetry.SentryTelemetryService import io.sentry.android.gradle.telemetry.withSentryTelemetry import io.sentry.android.gradle.util.contentHash import io.sentry.android.gradle.util.info +import java.util.UUID import org.gradle.api.Project import org.gradle.api.file.ConfigurableFileCollection import org.gradle.api.file.Directory @@ -15,7 +16,6 @@ import org.gradle.api.tasks.Internal import org.gradle.api.tasks.TaskAction import org.gradle.api.tasks.TaskProvider import org.gradle.work.DisableCachingByDefault -import java.util.UUID @DisableCachingByDefault abstract class SentryGenerateProguardUuidTask : PropertiesFileOutputTask() { @@ -67,8 +67,9 @@ abstract class SentryGenerateProguardUuidTask : PropertiesFileOutputTask() { ) { task -> output?.let { task.output.set(it) } task.withSentryTelemetry(extension, sentryTelemetryProvider) - if (proguardMappingFile != null) + if (proguardMappingFile != null) { task.proguardMappingFiles.from(proguardMappingFile) + } task.outputs.upToDateWhen { false } } return generateUuidTask diff --git a/plugin-build/src/test/kotlin/io/sentry/android/gradle/integration/SentryPluginTest.kt b/plugin-build/src/test/kotlin/io/sentry/android/gradle/integration/SentryPluginTest.kt index bfe98cf9..f8eacd30 100644 --- a/plugin-build/src/test/kotlin/io/sentry/android/gradle/integration/SentryPluginTest.kt +++ b/plugin-build/src/test/kotlin/io/sentry/android/gradle/integration/SentryPluginTest.kt @@ -115,7 +115,6 @@ class SentryPluginTest : assertEquals(uuid1, uuid2) } - @Test fun `does not regenerate UUID every build`() { runner.appendArguments(":app:assembleRelease") From ec18ff45fde93a799aa9d8ee03571e05e7b88427 Mon Sep 17 00:00:00 2001 From: Roman Zavarnitsyn Date: Mon, 5 Aug 2024 10:07:16 +0200 Subject: [PATCH 5/9] Remove redundant test --- .../SentryGenerateProguardUuidTaskTest.kt | 30 ++----------------- 1 file changed, 2 insertions(+), 28 deletions(-) diff --git a/plugin-build/src/test/kotlin/io/sentry/android/gradle/tasks/SentryGenerateProguardUuidTaskTest.kt b/plugin-build/src/test/kotlin/io/sentry/android/gradle/tasks/SentryGenerateProguardUuidTaskTest.kt index 22f65698..32f9003e 100644 --- a/plugin-build/src/test/kotlin/io/sentry/android/gradle/tasks/SentryGenerateProguardUuidTaskTest.kt +++ b/plugin-build/src/test/kotlin/io/sentry/android/gradle/tasks/SentryGenerateProguardUuidTaskTest.kt @@ -3,7 +3,7 @@ package io.sentry.android.gradle.tasks import io.sentry.android.gradle.tasks.SentryGenerateProguardUuidTask.Companion.SENTRY_PROGUARD_MAPPING_UUID_PROPERTY import io.sentry.android.gradle.util.PropertiesUtil import java.io.File -import kotlin.test.assertNotEquals +import java.util.UUID import kotlin.test.assertNotNull import kotlin.test.assertTrue import org.gradle.api.Project @@ -32,33 +32,7 @@ class SentryGenerateProguardUuidTaskTest { val props = PropertiesUtil.load(expectedFile) val uuid = props.getProperty(SENTRY_PROGUARD_MAPPING_UUID_PROPERTY) assertNotNull(uuid) - } - - @Test - fun `generate proguard UUID overrides the UUID on subsequent calls`() { - val project = createProject() - val task: TaskProvider = - project.tasks.register( - "testGenerateProguardUuid", - SentryGenerateProguardUuidTask::class.java - ) { - it.output.set(project.layout.buildDirectory.dir("dummy/folder/")) - } - val expectedFile = File(project.buildDir, "dummy/folder/sentry-proguard-uuid.properties") - - task.get().generateProperties() - - val props1 = PropertiesUtil.load(expectedFile) - val uuid1 = props1.getProperty(SENTRY_PROGUARD_MAPPING_UUID_PROPERTY) - assertNotNull(uuid1) - - task.get().generateProperties() - - val props2 = PropertiesUtil.load(expectedFile) - val uuid2 = props2.getProperty(SENTRY_PROGUARD_MAPPING_UUID_PROPERTY) - assertNotNull(uuid2) - - assertNotEquals(uuid1, uuid2) + UUID.fromString(uuid) } private fun createProject(): Project { From ef5c98de574c9b0267430a452f0b87c58bc59943 Mon Sep 17 00:00:00 2001 From: Roman Zavarnitsyn Date: Mon, 5 Aug 2024 10:16:49 +0200 Subject: [PATCH 6/9] Skip source contexts tests when no auth token present --- .../SentryPluginSourceContextTest.kt | 5 +++++ .../android/gradle/util/SkipOnForksRule.kt | 22 +++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 plugin-build/src/test/kotlin/io/sentry/android/gradle/util/SkipOnForksRule.kt diff --git a/plugin-build/src/test/kotlin/io/sentry/android/gradle/integration/SentryPluginSourceContextTest.kt b/plugin-build/src/test/kotlin/io/sentry/android/gradle/integration/SentryPluginSourceContextTest.kt index 2cc0185d..9d5467d6 100644 --- a/plugin-build/src/test/kotlin/io/sentry/android/gradle/integration/SentryPluginSourceContextTest.kt +++ b/plugin-build/src/test/kotlin/io/sentry/android/gradle/integration/SentryPluginSourceContextTest.kt @@ -3,6 +3,7 @@ package io.sentry.android.gradle.integration import io.sentry.BuildConfig import io.sentry.android.gradle.SentryCliProvider import io.sentry.android.gradle.util.GradleVersions +import io.sentry.android.gradle.util.SkipOnForksRule import io.sentry.android.gradle.verifySourceBundleContents import io.sentry.android.gradle.withDummyComposeFile import io.sentry.android.gradle.withDummyCustomFile @@ -18,11 +19,15 @@ import org.gradle.testkit.runner.TaskOutcome.UP_TO_DATE import org.gradle.util.GradleVersion import org.hamcrest.CoreMatchers.`is` import org.junit.Assume.assumeThat +import org.junit.Rule import org.junit.Test class SentryPluginSourceContextTest : BaseSentryPluginTest(BuildConfig.AgpVersion, GradleVersion.current().version) { + @get:Rule + val skipOnForksRule = SkipOnForksRule() + @Test fun `skips bundle and upload tasks if no sources`() { appBuildFile.writeText( diff --git a/plugin-build/src/test/kotlin/io/sentry/android/gradle/util/SkipOnForksRule.kt b/plugin-build/src/test/kotlin/io/sentry/android/gradle/util/SkipOnForksRule.kt new file mode 100644 index 00000000..fdb7010e --- /dev/null +++ b/plugin-build/src/test/kotlin/io/sentry/android/gradle/util/SkipOnForksRule.kt @@ -0,0 +1,22 @@ +package io.sentry.android.gradle.util + +import org.hamcrest.CoreMatchers.`is` +import org.junit.Assume.assumeThat +import org.junit.rules.TestRule +import org.junit.runner.Description +import org.junit.runners.model.Statement + +class SkipOnForksRule : TestRule { + override fun apply(base: Statement, description: Description): Statement { + return object : Statement() { + override fun evaluate() { + assumeThat( + "Sentry Source Context only supported when SENTRY_AUTH_TOKEN is present", + System.getenv("SENTRY_AUTH_TOKEN").isNullOrEmpty(), + `is`(false) + ) + base.evaluate() + } + } + } +} From 36ae6789e01c5e2db590e02d8257d9b5d11671fa Mon Sep 17 00:00:00 2001 From: Roman Zavarnitsyn Date: Mon, 5 Aug 2024 10:35:24 +0200 Subject: [PATCH 7/9] Skip source contexts tests when no auth token present --- .../integration/SentryPluginSourceContextNonAndroidTest.kt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/plugin-build/src/test/kotlin/io/sentry/android/gradle/integration/SentryPluginSourceContextNonAndroidTest.kt b/plugin-build/src/test/kotlin/io/sentry/android/gradle/integration/SentryPluginSourceContextNonAndroidTest.kt index 0746e096..28dc2f88 100644 --- a/plugin-build/src/test/kotlin/io/sentry/android/gradle/integration/SentryPluginSourceContextNonAndroidTest.kt +++ b/plugin-build/src/test/kotlin/io/sentry/android/gradle/integration/SentryPluginSourceContextNonAndroidTest.kt @@ -1,6 +1,7 @@ package io.sentry.android.gradle.integration import io.sentry.android.gradle.util.GradleVersions +import io.sentry.android.gradle.util.SkipOnForksRule import io.sentry.android.gradle.verifySourceBundleContents import io.sentry.android.gradle.withDummyCustomFile import io.sentry.android.gradle.withDummyJavaFile @@ -11,11 +12,15 @@ import org.gradle.testkit.runner.TaskOutcome.SKIPPED import org.gradle.util.GradleVersion import org.hamcrest.CoreMatchers.`is` import org.junit.Assume.assumeThat +import org.junit.Rule import org.junit.Test class SentryPluginSourceContextNonAndroidTest : BaseSentryNonAndroidPluginTest(GradleVersion.current().version) { + @get:Rule + val skipOnForksRule = SkipOnForksRule() + @Test fun `skips bundle and upload tasks if no sources`() { appBuildFile.writeText( From 56844ce1c4a0dadc2175f3582c70731391c4dc07 Mon Sep 17 00:00:00 2001 From: Roman Zavarnitsyn Date: Wed, 7 Aug 2024 00:43:14 +0200 Subject: [PATCH 8/9] Changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 794fe078..bc0e0838 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ - Fix plugin for spring-dependency-management 1.1.6 ([#741](https://github.com/getsentry/sentry-android-gradle-plugin/pull/741)) - Make `SentryUploadNativeSymbolsTask` configuration-cache compatible ([#747](https://github.com/getsentry/sentry-android-gradle-plugin/pull/747)) - Fix `permission denied` error when extracting sentry-cli concurrently ([#748](https://github.com/getsentry/sentry-android-gradle-plugin/pull/748)) +- Make `SentryGenerateProguardUuidTask` produce deterministic output based on the mapping file contents ([#750](https://github.com/getsentry/sentry-android-gradle-plugin/pull/748)) + - This disables caching for the `SentryGenerateProguardUuidTask` task in favour of deterministic UUID generation. The task will always run but will always produce the same UUID for the same mapping file. ### Dependencies From 60df387ce1cf1b5b069009f7701d2177f64bf292 Mon Sep 17 00:00:00 2001 From: Roman Zavarnitsyn Date: Wed, 7 Aug 2024 09:24:02 +0200 Subject: [PATCH 9/9] Ignore more tests with no auth token --- .../integration/SentryPluginConfigurationCacheTest.kt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/plugin-build/src/test/kotlin/io/sentry/android/gradle/integration/SentryPluginConfigurationCacheTest.kt b/plugin-build/src/test/kotlin/io/sentry/android/gradle/integration/SentryPluginConfigurationCacheTest.kt index c07994f0..da084bc2 100644 --- a/plugin-build/src/test/kotlin/io/sentry/android/gradle/integration/SentryPluginConfigurationCacheTest.kt +++ b/plugin-build/src/test/kotlin/io/sentry/android/gradle/integration/SentryPluginConfigurationCacheTest.kt @@ -210,6 +210,11 @@ class SentryPluginConfigurationCacheTest : @Test fun `sentry-cli is recovered when clean is executed before assemble`() { + assumeThat( + "Sentry native symbols upload only supported when SENTRY_AUTH_TOKEN is present", + System.getenv("SENTRY_AUTH_TOKEN").isNullOrEmpty(), + `is`(false) + ) // configuration cache doesn't seem to work well on older Gradle/AGP combinations // producing the following output: // @@ -261,6 +266,11 @@ class SentryPluginConfigurationCacheTest : @Test fun `native symbols upload task respects configuration cache`() { + assumeThat( + "Sentry native symbols upload only supported when SENTRY_AUTH_TOKEN is present", + System.getenv("SENTRY_AUTH_TOKEN").isNullOrEmpty(), + `is`(false) + ) assumeThat( "SentryUploadNativeSymbolsTask only supports " + "configuration cache from Gradle 7.5 onwards",