aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGoogler <noreply@google.com>2024-04-09 15:57:05 -0700
committerCopybara-Service <copybara-worker@google.com>2024-04-09 15:57:53 -0700
commitb4cd9364b1dbaaec7714d938fa372cb931e0f0ac (patch)
tree254bf774ed2adbe9316586c60e7644cbe79079e1
parentd525b84ecbd51c5c280e00af844b000986efd481 (diff)
downloadrobolectric-b4cd9364b1dbaaec7714d938fa372cb931e0f0ac.tar.gz
Prevent sqlite test that require native support from running when not supported.
The tests had assumed SqliteMode.MODE.NATIVE was set, when that is not possible in all environments (notably aosp/main). PiperOrigin-RevId: 623305341
-rw-r--r--integration_tests/ctesque/src/sharedTest/java/android/database/SQLiteDatabaseTest.java21
1 files changed, 21 insertions, 0 deletions
diff --git a/integration_tests/ctesque/src/sharedTest/java/android/database/SQLiteDatabaseTest.java b/integration_tests/ctesque/src/sharedTest/java/android/database/SQLiteDatabaseTest.java
index df6592e00..d74d805bc 100644
--- a/integration_tests/ctesque/src/sharedTest/java/android/database/SQLiteDatabaseTest.java
+++ b/integration_tests/ctesque/src/sharedTest/java/android/database/SQLiteDatabaseTest.java
@@ -5,6 +5,7 @@ import static android.os.Build.VERSION_CODES.M;
import static com.google.common.truth.Truth.assertThat;
import static java.util.concurrent.TimeUnit.SECONDS;
import static org.junit.Assert.assertThrows;
+import static org.junit.Assume.assumeTrue;
import android.content.ContentValues;
import android.database.sqlite.SQLiteConstraintException;
@@ -19,6 +20,7 @@ import com.google.common.base.Throwables;
import com.google.common.io.ByteStreams;
import java.io.File;
import java.io.PrintStream;
+import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.concurrent.ExecutorService;
@@ -28,6 +30,7 @@ import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.annotation.Config;
+import org.robolectric.annotation.SQLiteMode;
import org.robolectric.annotation.internal.DoNotInstrument;
/** Compatibility test for {@link android.database.sqlite.SQLiteDatabase} */
@@ -38,6 +41,21 @@ public class SQLiteDatabaseTest {
private SQLiteDatabase database;
private File databasePath;
+ private boolean usingRobolectricNativeSQLite() {
+ try {
+ Class<?> cr =
+ SQLiteDatabaseTest.class
+ .getClassLoader()
+ .loadClass("org.robolectric.config.ConfigurationRegistry");
+ Method m = cr.getMethod("get", Class.class);
+ SQLiteMode.Mode mode = (SQLiteMode.Mode) m.invoke(null, SQLiteMode.Mode.class);
+ return mode == SQLiteMode.Mode.NATIVE;
+ } catch (ReflectiveOperationException ce) {
+ // Not running in Robolectric
+ return true;
+ }
+ }
+
@Before
public void setUp() {
databasePath = ApplicationProvider.getApplicationContext().getDatabasePath("database.db");
@@ -232,6 +250,7 @@ public class SQLiteDatabaseTest {
@Config(minSdk = LOLLIPOP)
@SdkSuppress(minSdkVersion = LOLLIPOP)
public void regex_selection() {
+ assumeTrue(usingRobolectricNativeSQLite());
ContentValues values = new ContentValues();
values.put("first_column", "test");
database.insert("table_name", null, values);
@@ -245,6 +264,7 @@ public class SQLiteDatabaseTest {
@Test
@SdkSuppress(minSdkVersion = M) // This test fails on emulators for SDKs 21 and 22
public void fts4() {
+ assumeTrue(usingRobolectricNativeSQLite());
database.execSQL(
"CREATE VIRTUAL TABLE documents USING fts4 ("
+ "id INTEGER PRIMARY KEY, "
@@ -288,6 +308,7 @@ public class SQLiteDatabaseTest {
@SdkSuppress(minSdkVersion = LOLLIPOP)
@Test
public void uniqueConstraintViolation_errorMessage() {
+ assumeTrue(usingRobolectricNativeSQLite());
database.execSQL(
"CREATE TABLE my_table(\n"
+ " _id INTEGER PRIMARY KEY AUTOINCREMENT, \n"