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

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

Issue 1519523002: [Android] Support conditional test disabling based on android.os.Build values. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix one outdated use of SkipCheck Created 5 years 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.base.test; 5 package org.chromium.base.test;
6 6
7 import android.content.Context; 7 import android.content.Context;
8 import android.net.ConnectivityManager; 8 import android.net.ConnectivityManager;
9 import android.net.NetworkInfo; 9 import android.net.NetworkInfo;
10 import android.os.Build; 10 import android.os.Build;
11 import android.os.Bundle; 11 import android.os.Bundle;
12 import android.test.AndroidTestRunner; 12 import android.test.AndroidTestRunner;
13 import android.test.InstrumentationTestRunner; 13 import android.test.InstrumentationTestRunner;
14 import android.text.TextUtils; 14 import android.text.TextUtils;
15 15
16 import junit.framework.TestCase; 16 import junit.framework.TestCase;
17 import junit.framework.TestResult; 17 import junit.framework.TestResult;
18 18
19 import org.chromium.base.Log; 19 import org.chromium.base.Log;
20 import org.chromium.base.SysUtils; 20 import org.chromium.base.SysUtils;
21 import org.chromium.base.multidex.ChromiumMultiDex; 21 import org.chromium.base.multidex.ChromiumMultiDex;
22 import org.chromium.base.test.BaseTestResult.SkipCheck;
23 import org.chromium.base.test.util.CommandLineFlags; 22 import org.chromium.base.test.util.CommandLineFlags;
23 import org.chromium.base.test.util.DisableIfSkipCheck;
24 import org.chromium.base.test.util.MinAndroidSdkLevel; 24 import org.chromium.base.test.util.MinAndroidSdkLevel;
25 import org.chromium.base.test.util.Restriction; 25 import org.chromium.base.test.util.Restriction;
26 import org.chromium.base.test.util.SkipCheck;
26 import org.chromium.test.reporter.TestStatusListener; 27 import org.chromium.test.reporter.TestStatusListener;
27 28
28 import java.lang.reflect.Method; 29 import java.lang.reflect.Method;
29 30
30 // TODO(jbudorick): Add support for on-device handling of timeouts. 31 // TODO(jbudorick): Add support for on-device handling of timeouts.
31 /** 32 /**
32 * An Instrumentation test runner that checks SDK level for tests with specific requirements. 33 * An Instrumentation test runner that checks SDK level for tests with specific requirements.
33 */ 34 */
34 public class BaseInstrumentationTestRunner extends InstrumentationTestRunner { 35 public class BaseInstrumentationTestRunner extends InstrumentationTestRunner {
35 private static final String TAG = "base_test"; 36 private static final String TAG = "base_test";
(...skipping 21 matching lines...) Expand all
57 /** 58 /**
58 * Override this method to register hooks and checks to be run for each test . Make sure to call 59 * Override this method to register hooks and checks to be run for each test . Make sure to call
59 * the base implementation if you do so. 60 * the base implementation if you do so.
60 * 61 *
61 * @see BaseTestResult#addSkipCheck(BaseTestResult.SkipCheck) 62 * @see BaseTestResult#addSkipCheck(BaseTestResult.SkipCheck)
62 * @see BaseTestResult#addPreTestHook(BaseTestResult.PreTestHook) 63 * @see BaseTestResult#addPreTestHook(BaseTestResult.PreTestHook)
63 */ 64 */
64 protected void addTestHooks(BaseTestResult result) { 65 protected void addTestHooks(BaseTestResult result) {
65 result.addSkipCheck(new MinAndroidSdkLevelSkipCheck()); 66 result.addSkipCheck(new MinAndroidSdkLevelSkipCheck());
66 result.addSkipCheck(new RestrictionSkipCheck()); 67 result.addSkipCheck(new RestrictionSkipCheck());
68 result.addSkipCheck(new DisableIfSkipCheck());
67 69
68 result.addPreTestHook(CommandLineFlags.getRegistrationHook()); 70 result.addPreTestHook(CommandLineFlags.getRegistrationHook());
69 } 71 }
70 72
73
71 /** 74 /**
72 * Checks if any restrictions exist and skip the test if it meets those rest rictions. 75 * Checks if any restrictions exist and skip the test if it meets those rest rictions.
73 */ 76 */
74 public class RestrictionSkipCheck implements SkipCheck { 77 public class RestrictionSkipCheck extends SkipCheck {
75 @Override 78 @Override
76 public boolean shouldSkip(TestCase testCase) { 79 public boolean shouldSkip(TestCase testCase) {
77 Method method; 80 Method method = getTestMethod(testCase);
78 try { 81 if (method == null) return true;
79 method = testCase.getClass().getMethod(testCase.getName(), (Clas s[]) null); 82
80 } catch (NoSuchMethodException e) {
81 Log.e(TAG, "Unable to find %s in %s", testCase.getName(),
82 testCase.getClass().getName(), e);
83 return true;
84 }
85 Restriction restrictions = method.getAnnotation(Restriction.class); 83 Restriction restrictions = method.getAnnotation(Restriction.class);
86 if (restrictions != null) { 84 if (restrictions != null) {
87 for (String restriction : restrictions.value()) { 85 for (String restriction : restrictions.value()) {
88 if (restrictionApplies(restriction)) { 86 if (restrictionApplies(restriction)) {
89 return true; 87 return true;
90 } 88 }
91 } 89 }
92 } 90 }
93 return false; 91 return false;
94 } 92 }
(...skipping 18 matching lines...) Expand all
113 final ConnectivityManager connectivityManager = (ConnectivityManager ) 111 final ConnectivityManager connectivityManager = (ConnectivityManager )
114 getTargetContext().getSystemService(Context.CONNECTIVITY_SER VICE); 112 getTargetContext().getSystemService(Context.CONNECTIVITY_SER VICE);
115 final NetworkInfo activeNetworkInfo = connectivityManager.getActiveN etworkInfo(); 113 final NetworkInfo activeNetworkInfo = connectivityManager.getActiveN etworkInfo();
116 return activeNetworkInfo != null && activeNetworkInfo.isConnected(); 114 return activeNetworkInfo != null && activeNetworkInfo.isConnected();
117 } 115 }
118 } 116 }
119 117
120 /** 118 /**
121 * Checks the device's SDK level against any specified minimum requirement. 119 * Checks the device's SDK level against any specified minimum requirement.
122 */ 120 */
123 public static class MinAndroidSdkLevelSkipCheck implements SkipCheck { 121 public static class MinAndroidSdkLevelSkipCheck extends SkipCheck {
124 122
125 /** 123 /**
126 * If {@link MinAndroidSdkLevel} is present, checks its value 124 * If {@link MinAndroidSdkLevel} is present, checks its value
127 * against the device's SDK level. 125 * against the device's SDK level.
128 * 126 *
129 * @param testCase The test to check. 127 * @param testCase The test to check.
130 * @return true if the device's SDK level is below the specified minimum . 128 * @return true if the device's SDK level is below the specified minimum .
131 */ 129 */
132 @Override 130 @Override
133 public boolean shouldSkip(TestCase testCase) { 131 public boolean shouldSkip(TestCase testCase) {
134 Class<?> testClass = testCase.getClass(); 132 Class<?> testClass = testCase.getClass();
135 if (testClass.isAnnotationPresent(MinAndroidSdkLevel.class)) { 133 if (testClass.isAnnotationPresent(MinAndroidSdkLevel.class)) {
136 MinAndroidSdkLevel v = testClass.getAnnotation(MinAndroidSdkLeve l.class); 134 MinAndroidSdkLevel v = testClass.getAnnotation(MinAndroidSdkLeve l.class);
137 if (Build.VERSION.SDK_INT < v.value()) { 135 if (Build.VERSION.SDK_INT < v.value()) {
138 Log.i(TAG, "Test " + testClass.getName() + "#" + testCase.ge tName() 136 Log.i(TAG, "Test " + testClass.getName() + "#" + testCase.ge tName()
139 + " is not enabled at SDK level " + Build.VERSION.SD K_INT 137 + " is not enabled at SDK level " + Build.VERSION.SD K_INT
140 + "."); 138 + ".");
141 return true; 139 return true;
142 } 140 }
143 } 141 }
144 return false; 142 return false;
145 } 143 }
146 } 144 }
147 } 145 }
OLDNEW
« no previous file with comments | « base/base.gyp ('k') | base/test/android/javatests/src/org/chromium/base/test/BaseTestResult.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698