aboutsummaryrefslogtreecommitdiff
path: root/src/com/google/android/droiddriver/runner/TestRunner.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/google/android/droiddriver/runner/TestRunner.java')
-rw-r--r--src/com/google/android/droiddriver/runner/TestRunner.java32
1 files changed, 22 insertions, 10 deletions
diff --git a/src/com/google/android/droiddriver/runner/TestRunner.java b/src/com/google/android/droiddriver/runner/TestRunner.java
index 3f34cb0..1588f8a 100644
--- a/src/com/google/android/droiddriver/runner/TestRunner.java
+++ b/src/com/google/android/droiddriver/runner/TestRunner.java
@@ -34,6 +34,7 @@ import junit.framework.AssertionFailedError;
import junit.framework.Test;
import junit.framework.TestListener;
+import java.lang.annotation.Annotation;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
@@ -102,18 +103,29 @@ public class TestRunner extends InstrumentationTestRunner {
requirements.add(new Predicate<TestMethod>() {
@Override
public boolean apply(TestMethod arg0) {
- MinSdkVersion annotation = arg0.getAnnotation(MinSdkVersion.class);
- if (annotation == null) {
- annotation = arg0.getEnclosingClass().getAnnotation(MinSdkVersion.class);
+ MinSdkVersion minSdkVersion = getAnnotation(arg0, MinSdkVersion.class);
+ if (minSdkVersion != null && minSdkVersion.value() > Build.VERSION.SDK_INT) {
+ Logs.logfmt(Log.INFO, "filtered %s#%s: MinSdkVersion=%d", arg0.getEnclosingClassname(),
+ arg0.getName(), minSdkVersion.value());
+ return false;
+ }
+
+ UseUiAutomation useUiAutomation = getAnnotation(arg0, UseUiAutomation.class);
+ if (useUiAutomation != null && Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR2) {
+ Logs.logfmt(Log.INFO,
+ "filtered %s#%s: Has @UseUiAutomation, but ro.build.version.sdk=%d",
+ arg0.getEnclosingClassname(), arg0.getName(), Build.VERSION.SDK_INT);
+ return false;
}
- boolean result = annotation == null || annotation.value() <= Build.VERSION.SDK_INT;
- if (!result) {
- String msg =
- String.format("filtered %s#%s: MinSdkVersion=%d", arg0.getEnclosingClassname(),
- arg0.getName(), annotation.value());
- Logs.log(Log.INFO, msg);
+ return true;
+ }
+
+ private <T extends Annotation> T getAnnotation(TestMethod testMethod, Class<T> clazz) {
+ T annotation = testMethod.getAnnotation(clazz);
+ if (annotation == null) {
+ annotation = testMethod.getEnclosingClass().getAnnotation(clazz);
}
- return result;
+ return annotation;
}
});
return requirements;