| Index: chrome/test/android/javatests_staging/src/org/chromium/chrome/test/ChromeStagingInstrumentationTestRunner.java
|
| diff --git a/chrome/test/android/javatests_staging/src/org/chromium/chrome/test/ChromeStagingInstrumentationTestRunner.java b/chrome/test/android/javatests_staging/src/org/chromium/chrome/test/ChromeStagingInstrumentationTestRunner.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..230c32ebd59558491bbd1ce35571dc46dc45515a
|
| --- /dev/null
|
| +++ b/chrome/test/android/javatests_staging/src/org/chromium/chrome/test/ChromeStagingInstrumentationTestRunner.java
|
| @@ -0,0 +1,75 @@
|
| +// Copyright 2015 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +package org.chromium.chrome.test;
|
| +
|
| +import android.test.AndroidTestRunner;
|
| +import android.util.Log;
|
| +
|
| +import junit.framework.TestCase;
|
| +import junit.framework.TestResult;
|
| +
|
| +import org.chromium.chrome.browser.util.FeatureUtilities;
|
| +import org.chromium.chrome.test.util.DisableInTabbedMode;
|
| +import org.chromium.test.reporter.TestStatusListener;
|
| +
|
| +import java.lang.reflect.Method;
|
| +
|
| +/**
|
| + * An Instrumentation test runner that checks SDK level for tests with specific requirements.
|
| + */
|
| +public class ChromeStagingInstrumentationTestRunner extends ChromeInstrumentationTestRunner {
|
| +
|
| + public static final String TAG = "ChromeInternalInstrumentationTestRunner";
|
| +
|
| + @Override
|
| + protected AndroidTestRunner getAndroidTestRunner() {
|
| + AndroidTestRunner runner = new AndroidTestRunner() {
|
| + @Override
|
| + protected TestResult createTestResult() {
|
| + SkippingTestResult r = new SkippingTestResult();
|
| + r.addSkipCheck(new MinAndroidSdkLevelSkipCheck());
|
| + r.addSkipCheck(new DisableInTabbedModeSkipCheck());
|
| + return r;
|
| + }
|
| + };
|
| + runner.addTestListener(new TestStatusListener(getContext()));
|
| + return runner;
|
| + }
|
| +
|
| + /**
|
| + * Checks for tests that should only run in document mode.
|
| + */
|
| + public class DisableInTabbedModeSkipCheck implements SkipCheck {
|
| +
|
| + /**
|
| + * If the test is running in tabbed mode, checks for
|
| + * {@link org.chromium.chrome.test.util.DisableInTabbedMode}.
|
| + *
|
| + * @param testCase The test to check.
|
| + * @return Whether the test is running in tabbed mode and has been marked as disabled in
|
| + * tabbed mode.
|
| + */
|
| + @Override
|
| + public boolean shouldSkip(TestCase testCase) {
|
| + Class<?> testClass = testCase.getClass();
|
| + try {
|
| + if (!FeatureUtilities.isDocumentMode(getContext())) {
|
| + Method testMethod = testClass.getMethod(testCase.getName());
|
| + if (testMethod.isAnnotationPresent(DisableInTabbedMode.class)
|
| + || testClass.isAnnotationPresent(DisableInTabbedMode.class)) {
|
| + Log.i(TAG, "Test " + testClass.getName() + "#" + testCase.getName()
|
| + + " is disabled in non-document mode.");
|
| + return true;
|
| + }
|
| + }
|
| + } catch (NoSuchMethodException e) {
|
| + Log.e(TAG, "Couldn't find test method: " + e.toString());
|
| + }
|
| +
|
| + return false;
|
| + }
|
| + }
|
| +}
|
| +
|
|
|