diff --git a/cameraview/src/androidTest/java/com/otaliastudios/cameraview/tools/Retry.java b/cameraview/src/androidTest/java/com/otaliastudios/cameraview/tools/Retry.java index d5036354..88c3d452 100644 --- a/cameraview/src/androidTest/java/com/otaliastudios/cameraview/tools/Retry.java +++ b/cameraview/src/androidTest/java/com/otaliastudios/cameraview/tools/Retry.java @@ -4,4 +4,6 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @Retention(RetentionPolicy.RUNTIME) -public @interface Retry {} +public @interface Retry { + boolean emulatorOnly() default false; +} diff --git a/cameraview/src/androidTest/java/com/otaliastudios/cameraview/tools/RetryRule.java b/cameraview/src/androidTest/java/com/otaliastudios/cameraview/tools/RetryRule.java index 4e4255ab..de0e8478 100644 --- a/cameraview/src/androidTest/java/com/otaliastudios/cameraview/tools/RetryRule.java +++ b/cameraview/src/androidTest/java/com/otaliastudios/cameraview/tools/RetryRule.java @@ -1,5 +1,7 @@ package com.otaliastudios.cameraview.tools; +import android.os.Build; + import com.otaliastudios.cameraview.CameraLogger; import org.junit.rules.TestRule; @@ -24,7 +26,8 @@ public class RetryRule implements TestRule { return new Statement() { @Override public void evaluate() throws Throwable { - if (description.getAnnotation(Retry.class) == null) { + Retry retry = description.getAnnotation(Retry.class); + if (retry == null || retry.emulatorOnly() && !isEmulator()) { base.evaluate(); } else { Throwable caught = null; @@ -45,4 +48,11 @@ public class RetryRule implements TestRule { } }; } + + private boolean isEmulator() { + // From Android's RequiresDeviceFilter + return Build.HARDWARE.equals("goldfish") + || Build.HARDWARE.equals("ranchu") + || Build.HARDWARE.equals("gce_x86"); + } } \ No newline at end of file