From 42cace453634f640669e9856e54a1a5d60df733e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Enrique=20Lo=CC=81pez=20Man=CC=83as?= Date: Fri, 6 Nov 2026 11:45:08 +0100 Subject: [PATCH] fix(robolectric): stop shipping robolectric.properties in the library --- .../golden/RobolectricConfigLeakTest.kt | 46 +++++++++++++++++++ robolectric-testing/README.md | 2 +- .../shadows/robolectric.properties | 16 ------- .../shadows/robolectric.properties | 10 ---- .../src/main/resources/robolectric.properties | 16 ------- 5 files changed, 47 insertions(+), 43 deletions(-) create mode 100644 golden-testing/src/test/java/com/google/maps/android/testing/golden/RobolectricConfigLeakTest.kt delete mode 100644 robolectric-testing/src/main/java/com/google/maps/android/robolectric/shadows/robolectric.properties delete mode 100644 robolectric-testing/src/main/resources/com/google/maps/android/robolectric/shadows/robolectric.properties delete mode 100644 robolectric-testing/src/main/resources/robolectric.properties diff --git a/golden-testing/src/test/java/com/google/maps/android/testing/golden/RobolectricConfigLeakTest.kt b/golden-testing/src/test/java/com/google/maps/android/testing/golden/RobolectricConfigLeakTest.kt new file mode 100644 index 0000000..52298b6 --- /dev/null +++ b/golden-testing/src/test/java/com/google/maps/android/testing/golden/RobolectricConfigLeakTest.kt @@ -0,0 +1,46 @@ +/* + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +package com.google.maps.android.testing.golden + +import com.google.common.truth.Truth.assertThat +import org.junit.Test + +/** + * `:golden-testing` consumes `:robolectric-testing` the same way an app does, so its test classpath + * shows what the published AAR puts on a consumer's classpath. A `robolectric.properties` there + * would register the Maps shadows for every Robolectric test in the consumer and clash with the + * consumer's own configuration. + */ +public class RobolectricConfigLeakTest { + + @Test + public fun robolectricTestingDoesNotShipRootRobolectricProperties() { + val loader = checkNotNull(javaClass.classLoader) + + assertThat(loader.getResources("robolectric.properties").toList()).isEmpty() + } + + @Test + public fun robolectricTestingDoesNotShipPackageRobolectricProperties() { + val loader = checkNotNull(javaClass.classLoader) + + assertThat( + loader.getResources("com/google/maps/android/robolectric/shadows/robolectric.properties").toList(), + ).isEmpty() + } +} diff --git a/robolectric-testing/README.md b/robolectric-testing/README.md index efdba52..f59ad56 100644 --- a/robolectric-testing/README.md +++ b/robolectric-testing/README.md @@ -11,7 +11,7 @@ High-fidelity Robolectric shadows and testing utilities for the Google Maps SDK - **Google Truth Domain Subjects**: Fluent subjects (`GoogleMapSubject`, `MarkerSubject`, `CameraPositionSubject`, `LatLngSubject`, `LatLngBoundsSubject`, `CircleSubject`, `PolygonSubject`, `PolylineSubject`) via unified `assertThat(...)`. - **Kotlin Power-Assert Support**: First-class boolean predicates, `Comparable` geodesic `Distance` (`distanceTo`, `<= 5.meters`), `in` bounds/circle operators, and `assertMap(...)` / `assertGeo(...)` entrypoints that render rich expression diagrams on failure. - **1-Liner Lazy Test Harness & KTX**: `createTestMap()`, `withTestMap { ... }`, `map.markers`, `map.clickMarker("Title")`, and `map.pixelColorAt(latLng)` eliminate setup and shadow extraction ceremony. -- **Zero Boilerplate**: Drop-in configuration with `@EnableMapsShadows` or automatic classpath discovery via `robolectric.properties`. +- **Zero Boilerplate**: Drop-in configuration with `@EnableMapsShadows`. The library does not ship a `robolectric.properties`, so the shadows only apply to the tests you annotate. - **Full Lifecycle & Async Dispatch**: Seamless simulation of `onCreate()`, `onStart()`, `onResume()`, `onDestroy()`, and async `getMapAsync()` callbacks. --- diff --git a/robolectric-testing/src/main/java/com/google/maps/android/robolectric/shadows/robolectric.properties b/robolectric-testing/src/main/java/com/google/maps/android/robolectric/shadows/robolectric.properties deleted file mode 100644 index b69f367..0000000 --- a/robolectric-testing/src/main/java/com/google/maps/android/robolectric/shadows/robolectric.properties +++ /dev/null @@ -1,16 +0,0 @@ -shadows=com.google.maps.android.robolectric.shadows.ShadowMapView,\ -com.google.maps.android.robolectric.shadows.ShadowGoogleMap,\ -com.google.maps.android.robolectric.shadows.ShadowCameraUpdate,\ -com.google.maps.android.robolectric.shadows.ShadowCameraUpdateFactory,\ -com.google.maps.android.robolectric.shadows.ShadowMarker,\ -com.google.maps.android.robolectric.shadows.ShadowPolygon,\ -com.google.maps.android.robolectric.shadows.ShadowPolyline,\ -com.google.maps.android.robolectric.shadows.ShadowProjection,\ -com.google.maps.android.robolectric.shadows.ShadowCircle,\ -com.google.maps.android.robolectric.shadows.ShadowUiSettings,\ -com.google.maps.android.robolectric.shadows.ShadowBitmapDescriptor,\ -com.google.maps.android.robolectric.shadows.ShadowBitmapDescriptorFactory,\ -com.google.maps.android.robolectric.shadows.ShadowMapsInitializer,\ -com.google.maps.android.robolectric.shadows.ShadowSupportMapFragment,\ -com.google.maps.android.robolectric.shadows.ShadowGroundOverlay,\ -com.google.maps.android.robolectric.shadows.ShadowTileOverlay diff --git a/robolectric-testing/src/main/resources/com/google/maps/android/robolectric/shadows/robolectric.properties b/robolectric-testing/src/main/resources/com/google/maps/android/robolectric/shadows/robolectric.properties deleted file mode 100644 index 9232cd5..0000000 --- a/robolectric-testing/src/main/resources/com/google/maps/android/robolectric/shadows/robolectric.properties +++ /dev/null @@ -1,10 +0,0 @@ -shadows=com.google.maps.android.robolectric.shadows.ShadowMapView,\ -com.google.maps.android.robolectric.shadows.ShadowGoogleMap,\ -com.google.maps.android.robolectric.shadows.ShadowCameraUpdate,\ -com.google.maps.android.robolectric.shadows.ShadowCameraUpdateFactory,\ -com.google.maps.android.robolectric.shadows.ShadowMarker,\ -com.google.maps.android.robolectric.shadows.ShadowPolygon,\ -com.google.maps.android.robolectric.shadows.ShadowPolyline,\ -com.google.maps.android.robolectric.shadows.ShadowProjection,\ -com.google.maps.android.robolectric.shadows.ShadowCircle,\ -com.google.maps.android.robolectric.shadows.ShadowUiSettings diff --git a/robolectric-testing/src/main/resources/robolectric.properties b/robolectric-testing/src/main/resources/robolectric.properties deleted file mode 100644 index b69f367..0000000 --- a/robolectric-testing/src/main/resources/robolectric.properties +++ /dev/null @@ -1,16 +0,0 @@ -shadows=com.google.maps.android.robolectric.shadows.ShadowMapView,\ -com.google.maps.android.robolectric.shadows.ShadowGoogleMap,\ -com.google.maps.android.robolectric.shadows.ShadowCameraUpdate,\ -com.google.maps.android.robolectric.shadows.ShadowCameraUpdateFactory,\ -com.google.maps.android.robolectric.shadows.ShadowMarker,\ -com.google.maps.android.robolectric.shadows.ShadowPolygon,\ -com.google.maps.android.robolectric.shadows.ShadowPolyline,\ -com.google.maps.android.robolectric.shadows.ShadowProjection,\ -com.google.maps.android.robolectric.shadows.ShadowCircle,\ -com.google.maps.android.robolectric.shadows.ShadowUiSettings,\ -com.google.maps.android.robolectric.shadows.ShadowBitmapDescriptor,\ -com.google.maps.android.robolectric.shadows.ShadowBitmapDescriptorFactory,\ -com.google.maps.android.robolectric.shadows.ShadowMapsInitializer,\ -com.google.maps.android.robolectric.shadows.ShadowSupportMapFragment,\ -com.google.maps.android.robolectric.shadows.ShadowGroundOverlay,\ -com.google.maps.android.robolectric.shadows.ShadowTileOverlay