From 0b0a941be608df8d6effae8086528f7dc0145689 Mon Sep 17 00:00:00 2001 From: Mattia Iavarone Date: Tue, 12 Sep 2017 13:40:07 +0200 Subject: [PATCH] Grant permissions, bump tests to N --- .travis.yml | 4 ++-- .../java/com/otaliastudios/cameraview/BaseTest.java | 12 ++++++++++++ .../otaliastudios/cameraview/IntegrationTest.java | 7 ++++++- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 3a3cd42b..eced0b76 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,8 +14,8 @@ jdk: env: global: - # Run android tests on api level 22 - - EMULATOR_API=22 + # Where to run androidTests + - EMULATOR_API=24 # was 22 - EMULATOR_ABI=armeabi-v7a - EMULATOR_TAG=default - PATH=$ANDROID_HOME:$ANDROID_HOME/emulator:$ANDROID_HOME/platform-tools:$PATH diff --git a/cameraview/src/androidTest/java/com/otaliastudios/cameraview/BaseTest.java b/cameraview/src/androidTest/java/com/otaliastudios/cameraview/BaseTest.java index 589a8d0c..adbfdbad 100644 --- a/cameraview/src/androidTest/java/com/otaliastudios/cameraview/BaseTest.java +++ b/cameraview/src/androidTest/java/com/otaliastudios/cameraview/BaseTest.java @@ -5,6 +5,7 @@ import android.content.Context; import android.graphics.Bitmap; import android.graphics.Rect; import android.graphics.YuvImage; +import android.os.Build; import android.os.Handler; import android.os.Looper; import android.support.test.InstrumentationRegistry; @@ -56,6 +57,17 @@ public class BaseTest { InstrumentationRegistry.getInstrumentation().waitForIdleSync(); } + public static void grantPermissions() { + grantPermission("android.permission.CAMERA"); + grantPermission("android.permission.RECORD_AUDIO"); + grantPermission("android.permission.WRITE_EXTERNAL_STORAGE"); + } + + public static void grantPermission(String permission) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) return; + String command = "pm grant " + context().getPackageName() + " " + permission; + InstrumentationRegistry.getInstrumentation().getUiAutomation().executeShellCommand(command); + } public static byte[] mockJpeg(int width, int height) { Bitmap source = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); diff --git a/cameraview/src/androidTest/java/com/otaliastudios/cameraview/IntegrationTest.java b/cameraview/src/androidTest/java/com/otaliastudios/cameraview/IntegrationTest.java index 7ea10157..ff5276be 100644 --- a/cameraview/src/androidTest/java/com/otaliastudios/cameraview/IntegrationTest.java +++ b/cameraview/src/androidTest/java/com/otaliastudios/cameraview/IntegrationTest.java @@ -11,6 +11,7 @@ import android.view.ViewGroup; import org.junit.After; import org.junit.Before; +import org.junit.BeforeClass; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; @@ -23,7 +24,6 @@ import static org.mockito.Mockito.*; import static org.junit.Assert.*; -// TODO: won't work well in a 23+ emulator. Permissions will be asked. @RunWith(AndroidJUnit4.class) @MediumTest public class IntegrationTest extends BaseTest { @@ -35,6 +35,11 @@ public class IntegrationTest extends BaseTest { private Camera1 controller; private CameraListener listener; + @BeforeClass + public static void grant() { + grantPermissions(); + } + @Before public void setUp() { ui(new Runnable() {