Commit 997af6ac authored by John Budorick's avatar John Budorick Committed by Commit Bot

android: Fix how incremental tests exclude net.bytebuddy from test discovery.

Bug: 857001
Change-Id: I89c070724cb540f2ea37fe1c34bfee27f2977549
Reviewed-on: https://chromium-review.googlesource.com/1117648Reviewed-by: default avataragrieve <agrieve@chromium.org>
Commit-Queue: John Budorick <jbudorick@chromium.org>
Cr-Commit-Position: refs/heads/master@{#571027}
parent 5955aebd
......@@ -29,7 +29,10 @@ import org.chromium.base.multidex.ChromiumMultiDexInstaller;
import java.io.IOException;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Enumeration;
import java.util.List;
/**
* A custom AndroidJUnitRunner that supports multidex installer and list out test information.
......@@ -194,12 +197,20 @@ public class BaseChromiumAndroidJUnitRunner extends AndroidJUnitRunner {
* Wraps TestRequestBuilder to make it work with incremental install.
*/
private static class IncrementalInstallTestRequestBuilder extends TestRequestBuilder {
List<String> mExcludedPrefixes = new ArrayList<String>();
boolean mHasClassList;
public IncrementalInstallTestRequestBuilder(Instrumentation instr, Bundle bundle) {
super(instr, bundle);
}
@Override
public TestRequestBuilder addFromRunnerArgs(RunnerArgs runnerArgs) {
mExcludedPrefixes.addAll(runnerArgs.notTestPackages);
runnerArgs.notTestPackages.clear();
return super.addFromRunnerArgs(runnerArgs);
}
@Override
public TestRequestBuilder addTestClass(String className) {
mHasClassList = true;
......@@ -244,7 +255,7 @@ public class BaseChromiumAndroidJUnitRunner extends AndroidJUnitRunner {
}
}
private boolean startsWithAny(String str, String[] prefixes) {
private boolean startsWithAny(String str, List<String> prefixes) {
for (String prefix : prefixes) {
if (str.startsWith(prefix)) {
return true;
......@@ -255,12 +266,11 @@ public class BaseChromiumAndroidJUnitRunner extends AndroidJUnitRunner {
private void addTestClasses(DexFile[] dexFiles, TestRequestBuilder builder) {
Log.i(TAG, "Scanning incremental classpath.");
String[] excludedPrefixes;
try {
Field excludedPackagesField =
TestRequestBuilder.class.getDeclaredField("DEFAULT_EXCLUDED_PACKAGES");
excludedPackagesField.setAccessible(true);
excludedPrefixes = (String[]) excludedPackagesField.get(null);
mExcludedPrefixes.addAll(Arrays.asList((String[]) excludedPackagesField.get(null)));
} catch (Exception e) {
throw new RuntimeException(e);
}
......@@ -271,7 +281,7 @@ public class BaseChromiumAndroidJUnitRunner extends AndroidJUnitRunner {
Enumeration<String> classNames = dexFile.entries();
while (classNames.hasMoreElements()) {
String className = classNames.nextElement();
if (!className.contains("$") && !startsWithAny(className, excludedPrefixes)
if (!className.contains("$") && !startsWithAny(className, mExcludedPrefixes)
&& loader.loadIfTest(className) != null) {
addTestClass(className);
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment