Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1377)

Unified Diff: base/test/android/javatests/src/org/chromium/base/test/BaseInstrumentationTestRunner.java

Issue 1761383002: [Android] Restrict tests inheriting from DocumentModeTestBase to phones. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: base/test/android/javatests/src/org/chromium/base/test/BaseInstrumentationTestRunner.java
diff --git a/base/test/android/javatests/src/org/chromium/base/test/BaseInstrumentationTestRunner.java b/base/test/android/javatests/src/org/chromium/base/test/BaseInstrumentationTestRunner.java
index fd6fafd1cc84c92490d9f71131d51bb90ae78267..d8757241dabbdc4ad5258e0c2ca624ab371c3352 100644
--- a/base/test/android/javatests/src/org/chromium/base/test/BaseInstrumentationTestRunner.java
+++ b/base/test/android/javatests/src/org/chromium/base/test/BaseInstrumentationTestRunner.java
@@ -8,29 +8,19 @@ import android.app.ActivityOptions;
import android.content.Context;
import android.content.ContextWrapper;
import android.content.Intent;
-import android.net.ConnectivityManager;
-import android.net.NetworkInfo;
-import android.os.Build;
import android.os.Bundle;
import android.test.AndroidTestRunner;
import android.test.InstrumentationTestRunner;
-import android.text.TextUtils;
-import junit.framework.TestCase;
import junit.framework.TestResult;
-import org.chromium.base.Log;
-import org.chromium.base.SysUtils;
import org.chromium.base.multidex.ChromiumMultiDexInstaller;
import org.chromium.base.test.util.CommandLineFlags;
import org.chromium.base.test.util.DisableIfSkipCheck;
-import org.chromium.base.test.util.MinAndroidSdkLevel;
-import org.chromium.base.test.util.Restriction;
-import org.chromium.base.test.util.SkipCheck;
+import org.chromium.base.test.util.MinAndroidSdkLevelSkipCheck;
+import org.chromium.base.test.util.RestrictionSkipCheck;
import org.chromium.test.reporter.TestStatusListener;
-import java.lang.reflect.Method;
-
// TODO(jbudorick): Add support for on-device handling of timeouts.
/**
* An Instrumentation test runner that checks SDK level for tests with specific requirements.
@@ -67,97 +57,12 @@ public class BaseInstrumentationTestRunner extends InstrumentationTestRunner {
*/
protected void addTestHooks(BaseTestResult result) {
result.addSkipCheck(new MinAndroidSdkLevelSkipCheck());
- result.addSkipCheck(new RestrictionSkipCheck());
+ result.addSkipCheck(new RestrictionSkipCheck(getTargetContext()));
result.addSkipCheck(new DisableIfSkipCheck());
result.addPreTestHook(CommandLineFlags.getRegistrationHook());
}
-
- /**
- * Checks if any restrictions exist and skip the test if it meets those restrictions.
- */
- public class RestrictionSkipCheck extends SkipCheck {
- @Override
- public boolean shouldSkip(TestCase testCase) {
- Method method = getTestMethod(testCase);
- if (method == null) return true;
-
- Restriction restrictions = method.getAnnotation(Restriction.class);
- if (restrictions != null) {
- for (String restriction : restrictions.value()) {
- if (restrictionApplies(restriction)) {
- Log.i(TAG, "Test " + testCase.getClass().getName() + "#"
- + testCase.getName() + " skipped because of restriction "
- + restriction);
- return true;
- }
- }
- }
- return false;
- }
-
- protected boolean restrictionApplies(String restriction) {
- if (TextUtils.equals(restriction, Restriction.RESTRICTION_TYPE_LOW_END_DEVICE)
- && !SysUtils.isLowEndDevice()) {
- return true;
- }
- if (TextUtils.equals(restriction, Restriction.RESTRICTION_TYPE_NON_LOW_END_DEVICE)
- && SysUtils.isLowEndDevice()) {
- return true;
- }
- if (TextUtils.equals(restriction, Restriction.RESTRICTION_TYPE_INTERNET)
- && !isNetworkAvailable()) {
- return true;
- }
- return false;
- }
-
- private boolean isNetworkAvailable() {
- final ConnectivityManager connectivityManager = (ConnectivityManager)
- getTargetContext().getSystemService(Context.CONNECTIVITY_SERVICE);
- final NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
- return activeNetworkInfo != null && activeNetworkInfo.isConnected();
- }
- }
-
- /**
- * Checks the device's SDK level against any specified minimum requirement.
- */
- public static class MinAndroidSdkLevelSkipCheck extends SkipCheck {
-
- /**
- * If {@link MinAndroidSdkLevel} is present, checks its value
- * against the device's SDK level.
- *
- * @param testCase The test to check.
- * @return true if the device's SDK level is below the specified minimum.
- */
- @Override
- public boolean shouldSkip(TestCase testCase) {
- Class<?> testClass = testCase.getClass();
- Method testMethod = getTestMethod(testCase);
-
- int minSdkLevel = 0;
- if (testClass.isAnnotationPresent(MinAndroidSdkLevel.class)) {
- minSdkLevel = Math.max(testClass.getAnnotation(MinAndroidSdkLevel.class).value(),
- minSdkLevel);
- }
- if (testMethod != null && testMethod.isAnnotationPresent(MinAndroidSdkLevel.class)) {
- minSdkLevel = Math.max(testMethod.getAnnotation(MinAndroidSdkLevel.class).value(),
- minSdkLevel);
- }
-
- if (Build.VERSION.SDK_INT < minSdkLevel) {
- Log.i(TAG, "Test " + testClass.getName() + "#" + testCase.getName()
- + " is not enabled at SDK level " + Build.VERSION.SDK_INT
- + ".");
- return true;
- }
- return false;
- }
- }
-
@Override
public Context getTargetContext() {
return new ContextWrapper(super.getTargetContext()) {
« no previous file with comments | « base/base.gyp ('k') | base/test/android/javatests/src/org/chromium/base/test/util/MinAndroidSdkLevelSkipCheck.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698