Skip to content

Commit 76da093

Browse files
Throw exception on System.loadLibrary fail (#3916)
1 parent 7359501 commit 76da093

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+119
-48
lines changed

platform/android/MapLibreAndroid/src/main/java/org/maplibre/android/LibraryLoader.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ public abstract class LibraryLoader {
2020
private static volatile LibraryLoader loader = DEFAULT;
2121

2222
private static boolean loaded;
23+
private static boolean handleLoadError = false;
2324

2425
/**
2526
* Set the library loader that loads the shared library.
@@ -30,10 +31,17 @@ public static void setLibraryLoader(LibraryLoader libraryLoader) {
3031
loader = libraryLoader;
3132
}
3233

34+
/**
35+
* Catch UnsatisfiedLinkErrors on load
36+
*/
37+
public static void enableErrorHandling(boolean value) {
38+
handleLoadError = value;
39+
}
40+
3341
/**
3442
* Loads "libmaplibre.so" native shared library.
3543
* <p>
36-
* Catches UnsatisfiedLinkErrors and prints a warning to logcat.
44+
* Catches UnsatisfiedLinkErrors (if enabled) and prints a warning to logcat.
3745
* </p>
3846
*/
3947
public static synchronized void load() {
@@ -47,6 +55,10 @@ public static synchronized void load() {
4755
String message = "Failed to load native shared library.";
4856
Logger.e(TAG, message, error);
4957
MapStrictMode.strictModeViolation(message, error);
58+
59+
if (!handleLoadError) {
60+
throw error;
61+
}
5062
}
5163
}
5264

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package org.maplibre.android
2+
3+
import org.junit.BeforeClass
4+
5+
open class BaseTest {
6+
companion object {
7+
@JvmStatic
8+
@BeforeClass
9+
fun setup() {
10+
LibraryLoader.enableErrorHandling(true)
11+
}
12+
}
13+
}

platform/android/MapLibreAndroid/src/test/java/org/maplibre/android/MapLibreTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import org.mockito.ArgumentMatchers
2020
import org.mockito.Mockito
2121
import java.io.File
2222

23-
class MapLibreTest {
23+
class MapLibreTest : BaseTest() {
2424
private var context: Context? = null
2525
private var appContext: Context? = null
2626

platform/android/MapLibreAndroid/src/test/java/org/maplibre/android/annotations/AnnotationTest.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@ import org.maplibre.android.maps.MapLibreMap
44
import org.junit.Assert
55
import org.junit.Before
66
import org.junit.Test
7+
import org.maplibre.android.BaseTest
78
import org.mockito.InjectMocks
89
import org.mockito.Mockito
910

10-
class AnnotationTest {
11+
class AnnotationTest : BaseTest() {
1112
@InjectMocks
1213
private val maplibreMap = Mockito.mock(MapLibreMap::class.java)
1314
private var annotation: Annotation? = null

platform/android/MapLibreAndroid/src/test/java/org/maplibre/android/annotations/IconTest.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@ import android.graphics.Bitmap
44
import org.junit.Assert
55
import org.junit.Before
66
import org.junit.Test
7+
import org.maplibre.android.BaseTest
78
import org.mockito.Mock
89
import org.mockito.Mockito
910
import org.mockito.MockitoAnnotations
1011

11-
class IconTest {
12+
class IconTest : BaseTest() {
1213
@Mock
1314
var bitmap: Bitmap? = null
1415

platform/android/MapLibreAndroid/src/test/java/org/maplibre/android/annotations/InfoWindowTest.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,11 @@ import org.maplibre.android.maps.MapLibreMap
77
import org.maplibre.android.maps.Projection
88
import org.junit.Assert
99
import org.junit.Test
10+
import org.maplibre.android.BaseTest
1011
import org.mockito.InjectMocks
1112
import org.mockito.Mockito
1213

13-
class InfoWindowTest {
14+
class InfoWindowTest : BaseTest() {
1415
@InjectMocks
1516
var mMapView = Mockito.mock(MapView::class.java)
1617

platform/android/MapLibreAndroid/src/test/java/org/maplibre/android/annotations/MarkerTest.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,10 @@ import org.maplibre.android.geometry.LatLng
66
import org.maplibre.android.utils.MockParcel
77
import org.junit.Assert
88
import org.junit.Test
9+
import org.maplibre.android.BaseTest
910
import org.mockito.Mockito
1011

11-
class MarkerTest {
12+
class MarkerTest : BaseTest() {
1213
@Test
1314
fun testSanity() {
1415
val markerOptions = MarkerOptions()

platform/android/MapLibreAndroid/src/test/java/org/maplibre/android/annotations/PolygonTest.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@ package org.maplibre.android.annotations
33
import org.maplibre.android.geometry.LatLng
44
import org.junit.Assert
55
import org.junit.Test
6+
import org.maplibre.android.BaseTest
67

7-
class PolygonTest {
8+
class PolygonTest : BaseTest() {
89
@Test
910
fun testSanity() {
1011
val polygonOptions = PolygonOptions()

platform/android/MapLibreAndroid/src/test/java/org/maplibre/android/annotations/PolylineTest.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@ package org.maplibre.android.annotations
33
import org.maplibre.android.geometry.LatLng
44
import org.junit.Assert
55
import org.junit.Test
6+
import org.maplibre.android.BaseTest
67

7-
class PolylineTest {
8+
class PolylineTest : BaseTest() {
89
@Test
910
fun testSanity() {
1011
val polylineOptions = PolylineOptions()

platform/android/MapLibreAndroid/src/test/java/org/maplibre/android/attribution/AttributionParseTest.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@ package org.maplibre.android.attribution
33
import org.junit.Assert
44
import org.junit.Test
55
import org.junit.runner.RunWith
6+
import org.maplibre.android.BaseTest
67
import org.robolectric.RobolectricTestRunner
78
import org.robolectric.RuntimeEnvironment
89

910
@RunWith(RobolectricTestRunner::class)
10-
class AttributionParseTest {
11+
class AttributionParseTest : BaseTest() {
1112
@Test
1213
@Throws(Exception::class)
1314
fun testParseAttributionStringSatellite() {

0 commit comments

Comments
 (0)