RUM-16470: Cleanup ahead of the API 37 support#3582
Conversation
935d49a to
3f66805
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## develop #3582 +/- ##
===========================================
+ Coverage 72.47% 72.80% +0.34%
===========================================
Files 978 974 -4
Lines 36069 35245 -824
Branches 6041 5967 -74
===========================================
- Hits 26138 25659 -479
+ Misses 8246 7918 -328
+ Partials 1685 1668 -17
🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Pull request overview
This PR prepares the repo for API 37 support by reducing build/IDE warnings and modernizing Gradle/buildSrc patterns without changing AGP/Kotlin/targetSdk to keep ABI compatibility stable.
Changes:
- Introduces a
datadog.unit-testconvention plugin and applies it across many modules to deduplicate common test dependency declarations. - Inlines previously applied wrapper
.gradle.ktsscripts (json-model generation + schema cloning + git clone tasks) directly into modulebuild.gradle.ktsfiles and deletes the wrappers. - Improves buildSrc task wiring/config-cache friendliness (API surface plugin, JSON schema generation dependencies, detekt custom config) and bumps build-only tooling versions.
Reviewed changes
Copilot reviewed 59 out of 60 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| tools/unit/src/main/kotlin/com/datadog/tools/unit/ObjectTest.kt | Adjusts test helper to avoid Object() usage and keep type-sensitivity check. |
| tools/unit/src/main/kotlin/com/datadog/tools/unit/extensions/TestConfigurationExtension.kt | Minor refactor to avoid repeated superclass access. |
| tools/detekt/src/main/kotlin/com/datadog/tools/detekt/rules/sdk/InvalidStringFormat.kt | Fixes array comparison semantics when validating allowed argument types. |
| tools/benchmark/generate_trace_models.gradle.kts | Removes wrapper script (logic moved into module build file). |
| tools/benchmark/build.gradle.kts | Inlines JSON model generation task setup. |
| sample/kotlin/src/main/kotlin/com/datadog/android/sample/crash/CrashFragment.kt | Updates deprecated uppercase call to locale-stable uppercase(Locale.US). |
| integrations/dd-sdk-android-tv/build.gradle.kts | Applies datadog.unit-test; removes duplicated test bundle deps. |
| integrations/dd-sdk-android-trace-coroutines/build.gradle.kts | Applies datadog.unit-test; removes duplicated test bundle deps. |
| integrations/dd-sdk-android-timber/build.gradle.kts | Applies datadog.unit-test; removes duplicated test bundle deps. |
| integrations/dd-sdk-android-sqldelight/build.gradle.kts | Applies datadog.unit-test; removes duplicated test bundle deps. |
| integrations/dd-sdk-android-rx/build.gradle.kts | Applies datadog.unit-test; removes duplicated test bundle deps. |
| integrations/dd-sdk-android-rum-coroutines/build.gradle.kts | Applies datadog.unit-test; removes duplicated test bundle deps. |
| integrations/dd-sdk-android-okhttp/build.gradle.kts | Applies datadog.unit-test; removes duplicated test bundle deps. |
| integrations/dd-sdk-android-okhttp-otel/build.gradle.kts | Applies datadog.unit-test; removes duplicated test bundle deps. |
| integrations/dd-sdk-android-glide/build.gradle.kts | Applies datadog.unit-test; removes duplicated test bundle deps. |
| integrations/dd-sdk-android-fresco/build.gradle.kts | Applies datadog.unit-test; removes duplicated test bundle deps. |
| integrations/dd-sdk-android-cronet/build.gradle.kts | Applies datadog.unit-test; removes duplicated test bundle deps. |
| integrations/dd-sdk-android-compose/src/main/kotlin/com/datadog/android/compose/internal/ComposeActionTrackingStrategy.kt | Avoids raw generic type inference warning for LinkedList. |
| integrations/dd-sdk-android-compose/build.gradle.kts | Applies datadog.unit-test; removes duplicated test bundle deps. |
| integrations/dd-sdk-android-coil3/build.gradle.kts | Applies datadog.unit-test; removes duplicated test bundle deps. |
| integrations/dd-sdk-android-coil/build.gradle.kts | Applies datadog.unit-test; removes duplicated test bundle deps. |
| integrations/dd-sdk-android-apollo/build.gradle.kts | Applies datadog.unit-test; removes duplicated test bundle deps. |
| gradle/libs.versions.toml | Bumps build-only tool versions (kover, dokka, binaryCompatibility). |
| features/dd-sdk-android-webview/src/main/kotlin/com/datadog/android/webview/WebViewTracking.kt | Fixes spacing in a warning message constant. |
| features/dd-sdk-android-webview/build.gradle.kts | Applies datadog.unit-test; removes duplicated test bundle deps. |
| features/dd-sdk-android-trace/generate_trace_models.gradle.kts | Removes wrapper script (logic moved into module build file). |
| features/dd-sdk-android-trace/build.gradle.kts | Applies datadog.unit-test; inlines JSON model generation task setup. |
| features/dd-sdk-android-trace-otel/src/main/kotlin/com/datadog/android/trace/opentelemetry/internal/OtelContext.kt | Avoids storing null values under OTel context keys to prevent internal throws. |
| features/dd-sdk-android-trace-otel/build.gradle.kts | Applies datadog.unit-test; removes duplicated test bundle deps. |
| features/dd-sdk-android-trace-internal/clone_dd_trace.gradle.kts | Removes wrapper script (logic moved into module build file). |
| features/dd-sdk-android-trace-internal/build.gradle.kts | Applies datadog.unit-test; inlines git clone task setup. |
| features/dd-sdk-android-session-replay/generate_session_replay_models.gradle.kts | Removes wrapper script (logic moved into module build file). |
| features/dd-sdk-android-session-replay/clone_session_replay_schema.gradle.kts | Removes wrapper script (logic moved into module build file). |
| features/dd-sdk-android-session-replay/build.gradle.kts | Applies datadog.unit-test; inlines schema clone + JSON model generation tasks. |
| features/dd-sdk-android-session-replay-material/build.gradle.kts | Applies datadog.unit-test; removes duplicated test bundle deps. |
| features/dd-sdk-android-session-replay-compose/build.gradle.kts | Applies datadog.unit-test; removes duplicated test bundle deps. |
| features/dd-sdk-android-rum/generate_telemetry_models.gradle.kts | Removes wrapper script (logic moved into module build file). |
| features/dd-sdk-android-rum/generate_rum_models.gradle.kts | Removes wrapper script (logic moved into module build file). |
| features/dd-sdk-android-rum/clone_telemetry_schema.gradle.kts | Removes wrapper script (logic moved into module build file). |
| features/dd-sdk-android-rum/clone_rum_schema.gradle.kts | Removes wrapper script (logic moved into module build file). |
| features/dd-sdk-android-rum/build.gradle.kts | Applies datadog.unit-test; inlines schema clone + JSON model generation tasks. |
| features/dd-sdk-android-rum-debug-widget/build.gradle.kts | Applies datadog.unit-test; removes duplicated test bundle deps. |
| features/dd-sdk-android-profiling/generate_profiling_models.gradle.kts | Removes wrapper script (logic moved into module build file). |
| features/dd-sdk-android-profiling/clone_profiling_schema.gradle.kts | Removes wrapper script (logic moved into module build file). |
| features/dd-sdk-android-profiling/build.gradle.kts | Applies datadog.unit-test; inlines schema clone + JSON model generation tasks. |
| features/dd-sdk-android-ndk/build.gradle.kts | Applies datadog.unit-test; removes duplicated test bundle deps. |
| features/dd-sdk-android-logs/generate_log_models.gradle.kts | Removes wrapper script (logic moved into module build file). |
| features/dd-sdk-android-logs/build.gradle.kts | Applies datadog.unit-test; inlines JSON model generation task setup. |
| features/dd-sdk-android-flags/generate_flags_models.gradle.kts | Removes wrapper script (logic moved into module build file). |
| features/dd-sdk-android-flags/build.gradle.kts | Applies datadog.unit-test; inlines JSON model generation task setup. |
| features/dd-sdk-android-flags-openfeature/src/main/kotlin/com/datadog/android/flags/openfeature/DatadogFlagsProvider.kt | Makes callbackFlow send explicit via captured scope. |
| features/dd-sdk-android-flags-openfeature/build.gradle.kts | Applies datadog.unit-test; removes duplicated test bundle deps. |
| dd-sdk-android-internal/build.gradle.kts | Applies datadog.unit-test; removes duplicated test bundle deps. |
| dd-sdk-android-core/build.gradle.kts | Applies datadog.unit-test; removes duplicated test bundle deps. |
| buildSrc/src/main/kotlin/com/datadog/gradle/utils/JsonSchemaGenerationTasks.kt | Adds additional task dependencies (KSP + ExtractAnnotations) for generated model availability. |
| buildSrc/src/main/kotlin/com/datadog/gradle/plugin/config/UnitTestConventionPlugin.kt | Adds new convention plugin to centralize shared unit-test dependencies. |
| buildSrc/src/main/kotlin/com/datadog/gradle/plugin/apisurface/ApiSurfacePlugin.kt | Makes Java API dump task wiring lazier by using task matching providers. |
| buildSrc/src/main/kotlin/com/datadog/gradle/config/TestPyramidConfig.kt | Makes aggregation task depend only on tasks that exist in submodules. |
| buildSrc/src/main/kotlin/com/datadog/gradle/config/DetektCustomConfig.kt | Defers detekt classpath file I/O to execution time for config-cache friendliness. |
| buildSrc/build.gradle.kts | Registers the datadog.unit-test convention plugin id. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
12491a4 to
760b760
Compare
760b760 to
9d06876
Compare
| * `kotlin-stdlib` is deliberately not added here — the Kotlin plugin already contributes it to every | ||
| * source set (`kotlin.stdlib.default.dependency`), so adding it again would duplicate it. | ||
| */ | ||
| class UnitTestConventionPlugin : Plugin<Project> { |
There was a problem hiding this comment.
There is a lot of boiler plate with these kind of convention plugins. Can we use pre compiled script plugins instead?
There was a problem hiding this comment.
Yes, created a new unitTest.gradle.kts and updated the pr description, thanks!
c311adb to
7e008dc
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c311adbc68
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| implementation(libs.gson) | ||
| implementation(libs.mockitoKotlin) | ||
|
|
||
| testImplementation(libs.bundles.jUnit5) |
There was a problem hiding this comment.
This file doesn't apply id("unitTest") as others, is this expected?
There was a problem hiding this comment.
Yes, because the unitTest plugin only adds the bundles to testImplementation. This module is the opposite: as it's a test-support library, we need it in the main source so we keep implementation(libs.bundles.jUnit5) and implementation(libs.bundles.testTools).
7e008dc to
be4acc5
Compare
What does this PR do?
Gets the repo closer to supporting API 37, by cleaning up some warnings, APIs and build-script patterns. The idea here is to apply non-breaking changes, so we don't bump, for now, any targetSDK, AGP, kotlin versions, which would change the abi compatibility to
2.1.unitTest.gradle.ktsprecompiled script plugin and apply it to the library/integration modules. The pairtestImplementation(libs.bundles.jUnit5) / testImplementation(libs.bundles.testToolswas duplicated across modules, which trips the IDE'sdependency declared multiple timeswarning.apply(from = generate_*/clone_*gradle.kts)scripts directly into their modulebuild.gradle.ktsand delete the wrapper files. This is the new correct way as we have IDE code-insight, type-safety and avoid a future K2 lint crash.buildSrctask wiring lazy / config-cache friendly (TestPyramidConfigandApiSurfacePlugin).kover,dokka,binaryCompatibility. Note that we are not changing anytransitiveDependenciesfiles so these are ok to update.Review checklist (to be filled by reviewers)