Skip to content

Commit

Permalink
AW: switch to AwJUnit4ClassRunner
Browse files Browse the repository at this point in the history
No change to production logic.

This switches every use of BaseJUnit4ClassRunner to AwJUnit4ClassRunner
under android_webview/javatests/. This also adds
@SkipCommandLineParameterization for each change, because the
BaseJUnit4ClassRunner did not run tests in both single & multiprocess
mode, only in single process mode (so we keep the same behavior).

This also adds a presubmit to prevent regressions.

Proposed on: http://shortn/_OS7nGlyaOn
Test: manually test presubmit prevents me from adding a test suite with
      BaseJUnit4ClassRunner
Test: run_webview_instrumentation_test_apk (everything passes, and the
      same number of tests are run as before this CL)

Change-Id: I36c0e549b1987cd1241407d989a2135f4d932a53
Reviewed-on: https://chromium-review.googlesource.com/1184234
Reviewed-by: Bo <boliu@chromium.org>
Commit-Queue: Nate Fischer <ntfschr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#585253}
  • Loading branch information
ntfschr-chromium authored and Commit Bot committed Aug 22, 2018
1 parent 43f932e commit 44b83b9
Show file tree
Hide file tree
Showing 12 changed files with 75 additions and 22 deletions.
47 changes: 47 additions & 0 deletions android_webview/javatests/PRESUBMIT.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Copyright 2018 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.
"""Presubmit tests for android_webview/javatests/
Runs various style checks before upload.
"""

def CheckChangeOnUpload(input_api, output_api):
results = []
results.extend(_CheckAwJUnitTestRunner(input_api, output_api))
return results

def _CheckAwJUnitTestRunner(input_api, output_api):
"""Checks that new tests use the AwJUnit4ClassRunner instead of some other
test runner. This is because WebView has special logic in the
AwJUnit4ClassRunner.
"""

run_with_pattern = input_api.re.compile(
r'^@RunWith\((.*)\)$')
correct_runner = 'AwJUnit4ClassRunner.class'

errors = []

def _FilterFile(affected_file):
return input_api.FilterSourceFile(
affected_file,
black_list=input_api.DEFAULT_BLACK_LIST,
white_list=[r'.*\.java$'])

for f in input_api.AffectedSourceFiles(_FilterFile):
for line_num, line in f.ChangedContents():
match = run_with_pattern.search(line)
if match and match.group(1) != correct_runner:
errors.append("%s:%d" % (f.LocalPath(), line_num))

results = []

if errors:
results.append(output_api.PresubmitPromptWarning("""
android_webview/javatests/ should use the AwJUnit4ClassRunner test runner, not
any other test runner (e.g., BaseJUnit4ClassRunner).
""",
errors))

return results
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,14 @@
import org.junit.runner.RunWith;

import org.chromium.android_webview.AwLayoutSizer;
import org.chromium.base.test.BaseJUnit4ClassRunner;
import org.chromium.base.test.util.Feature;
import org.chromium.base.test.util.parameter.SkipCommandLineParameterization;

/**
* Unittests for the AwLayoutSizer class.
*/
@RunWith(BaseJUnit4ClassRunner.class)
@RunWith(AwJUnit4ClassRunner.class)
@SkipCommandLineParameterization
public class AwLayoutSizerTest {
static class LayoutSizerDelegate implements AwLayoutSizer.Delegate {
public int requestLayoutCallCount;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,14 @@
import org.junit.runner.RunWith;

import org.chromium.android_webview.AwScrollOffsetManager;
import org.chromium.base.test.BaseJUnit4ClassRunner;
import org.chromium.base.test.util.Feature;
import org.chromium.base.test.util.parameter.SkipCommandLineParameterization;

/**
* Integration tests for ScrollOffsetManager.
*/
@RunWith(BaseJUnit4ClassRunner.class)
@RunWith(AwJUnit4ClassRunner.class)
@SkipCommandLineParameterization
public class AwScrollOffsetManagerTest {
private static class TestScrollOffsetManagerDelegate implements AwScrollOffsetManager.Delegate {
private int mOverScrollDeltaX;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
import org.chromium.android_webview.services.ServiceInit;
import org.chromium.android_webview.test.util.VariationsTestUtils;
import org.chromium.base.ContextUtils;
import org.chromium.base.test.BaseJUnit4ClassRunner;
import org.chromium.base.test.util.CallbackHelper;
import org.chromium.base.test.util.parameter.SkipCommandLineParameterization;
import org.chromium.components.background_task_scheduler.TaskIds;
Expand All @@ -42,7 +41,7 @@
/**
* Test AwVariationsSeedFetcher.
*/
@RunWith(BaseJUnit4ClassRunner.class)
@RunWith(AwJUnit4ClassRunner.class)
@SkipCommandLineParameterization
public class AwVariationsSeedFetcherTest {
private static final int JOB_ID = TaskIds.WEBVIEW_VARIATIONS_SEED_FETCH_JOB_ID;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,16 @@
import org.junit.runner.RunWith;

import org.chromium.android_webview.CleanupReference;
import org.chromium.base.test.BaseJUnit4ClassRunner;
import org.chromium.base.test.util.Feature;
import org.chromium.base.test.util.parameter.SkipCommandLineParameterization;
import org.chromium.content.browser.test.util.Criteria;
import org.chromium.content.browser.test.util.CriteriaHelper;

import java.util.concurrent.atomic.AtomicInteger;

/** Test suite for {@link CleanupReference}. */
@RunWith(BaseJUnit4ClassRunner.class)
@RunWith(AwJUnit4ClassRunner.class)
@SkipCommandLineParameterization
public class CleanupReferenceTest {
private static AtomicInteger sObjectCount = new AtomicInteger();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,14 @@
import org.junit.runner.RunWith;

import org.chromium.android_webview.HttpAuthDatabase;
import org.chromium.base.test.BaseJUnit4ClassRunner;
import org.chromium.base.test.util.Feature;
import org.chromium.base.test.util.parameter.SkipCommandLineParameterization;

/**
* Test suite for HttpAuthDatabase.
*/
@RunWith(BaseJUnit4ClassRunner.class)
@RunWith(AwJUnit4ClassRunner.class)
@SkipCommandLineParameterization
public class HttpAuthDatabaseTest {
private static final String TEST_DATABASE = "http_auth_for_HttpAuthDatabaseTest.db";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
import org.chromium.android_webview.services.ServiceInit;
import org.chromium.android_webview.services.VariationsSeedHolder;
import org.chromium.android_webview.test.util.VariationsTestUtils;
import org.chromium.base.test.BaseJUnit4ClassRunner;
import org.chromium.base.test.util.CallbackHelper;
import org.chromium.base.test.util.parameter.SkipCommandLineParameterization;
import org.chromium.components.variations.firstrun.VariationsSeedFetcher.SeedInfo;
Expand All @@ -34,7 +33,7 @@
/**
* Test VariationsSeedHolder.
*/
@RunWith(BaseJUnit4ClassRunner.class)
@RunWith(AwJUnit4ClassRunner.class)
@SkipCommandLineParameterization
public class VariationsSeedHolderTest {
private class TestHolder extends VariationsSeedHolder {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
import org.chromium.android_webview.test.util.VariationsTestUtils;
import org.chromium.base.ContextUtils;
import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.test.BaseJUnit4ClassRunner;
import org.chromium.base.test.util.CallbackHelper;
import org.chromium.base.test.util.parameter.SkipCommandLineParameterization;

Expand All @@ -35,7 +34,7 @@
/**
* Test VariationsSeedLoader.
*/
@RunWith(BaseJUnit4ClassRunner.class)
@RunWith(AwJUnit4ClassRunner.class)
@SkipCommandLineParameterization
public class VariationsSeedLoaderTest {
private static final long TIMEOUT_MILLIS = 10000;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
import org.chromium.android_webview.VariationsUtils;
import org.chromium.android_webview.proto.AwVariationsSeedOuterClass.AwVariationsSeed;
import org.chromium.android_webview.test.util.VariationsTestUtils;
import org.chromium.base.test.BaseJUnit4ClassRunner;
import org.chromium.base.test.util.parameter.SkipCommandLineParameterization;
import org.chromium.components.variations.firstrun.VariationsSeedFetcher.SeedInfo;

Expand All @@ -27,7 +26,7 @@
/**
* Test reading and writing variations seeds.
*/
@RunWith(BaseJUnit4ClassRunner.class)
@RunWith(AwJUnit4ClassRunner.class)
@SkipCommandLineParameterization
public class VariationsUtilsTest {
@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,18 @@
import org.junit.runner.RunWith;

import org.chromium.android_webview.services.CrashReceiverService;
import org.chromium.android_webview.test.AwJUnit4ClassRunner;
import org.chromium.base.ContextUtils;
import org.chromium.base.test.BaseJUnit4ClassRunner;
import org.chromium.base.test.util.parameter.SkipCommandLineParameterization;

import java.io.File;
import java.io.IOException;

/**
* Instrumentation tests for CrashReceiverService.
*/
@RunWith(BaseJUnit4ClassRunner.class)
@RunWith(AwJUnit4ClassRunner.class)
@SkipCommandLineParameterization
public class CrashReceiverServiceTest {
@Before
public void setUp() throws Exception {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,11 @@
import org.chromium.android_webview.PlatformServiceBridge;
import org.chromium.android_webview.services.AwMinidumpUploaderDelegate;
import org.chromium.android_webview.services.CrashReceiverService;
import org.chromium.android_webview.test.AwJUnit4ClassRunner;
import org.chromium.base.Callback;
import org.chromium.base.FileUtils;
import org.chromium.base.ThreadUtils;
import org.chromium.base.test.BaseJUnit4ClassRunner;
import org.chromium.base.test.util.parameter.SkipCommandLineParameterization;
import org.chromium.components.minidump_uploader.CrashFileManager;
import org.chromium.components.minidump_uploader.CrashTestRule;
import org.chromium.components.minidump_uploader.CrashTestRule.MockCrashReportingPermissionManager;
Expand All @@ -38,7 +39,8 @@
* Instrumentation tests for WebView's implementation of MinidumpUploaderDelegate, and the
* interoperability of WebView's minidump-copying and minidump-uploading logic.
*/
@RunWith(BaseJUnit4ClassRunner.class)
@RunWith(AwJUnit4ClassRunner.class)
@SkipCommandLineParameterization
public class MinidumpUploaderTest {
@Rule
public CrashTestRule mTestRule = new CrashTestRule() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,9 @@

import org.chromium.android_webview.services.IVariationsSeedServer;
import org.chromium.android_webview.services.VariationsSeedServer;
import org.chromium.android_webview.test.AwJUnit4ClassRunner;
import org.chromium.base.ContextUtils;
import org.chromium.base.test.BaseJUnit4ClassRunner;
import org.chromium.base.test.util.parameter.SkipCommandLineParameterization;

import java.io.File;
import java.io.FileNotFoundException;
Expand All @@ -33,7 +34,8 @@
/**
* Test VariationsSeedServer.
*/
@RunWith(BaseJUnit4ClassRunner.class)
@RunWith(AwJUnit4ClassRunner.class)
@SkipCommandLineParameterization
public class VariationsSeedServerTest {
private static final long BINDER_TIMEOUT_MILLIS = 10000;

Expand Down

0 comments on commit 44b83b9

Please sign in to comment.